2010-02-03 136 views

回答

2

有这个一个没有功能,你就必须这样做:

select col1, col2, col3, (nz(col1,0)+nz(col2,0)+nz(col3,0)) as Sum from Table 
+0

小心空值。 1 +空+ 1 = NULL。你可以用Nz来解决它。 – Fionnuala 2010-02-03 17:27:31

0

如何:

Public Function iSum(ParamArray p()) As Variant 
    Dim i As Long 
    Dim lngUBound As Long 
    Dim v As Variant 

    v = Nz(p(LBound(p)), 0) 
    lngUBound = UBound(p) 
    For i = LBound(p) + 1 To lngUBound 
     If Not IsNull(p(i)) Then 
     v = v + p(i) 
     End If 
    Next 
    If IsNull(v) Then 
     v = 0 
    End If 
    iSum = v 
    End Function 

,并在SQL:

SELECT col1, col2, col3, iSum(col1,col2,col3) As Sum 
    FROM Table 

你可以传递任意数量的列,并且它们中的任何一个是否为空都没关系。如果全部为空,则返回0.

+0

Bascially,我有什么是5列标题与每列中的信息和5行标题与信息在每一行,所以它的信息表,,,,所以我如何把“信息”在每一列,但只有从第1行,并将其放置在一个新的独立单元格中? – 2010-02-04 11:34:39

+0

@HansUp:你说得对。我修改了代码来解决这个问题。 – 2010-02-05 03:04:01

+0

@Jeff Anderson:在我看来,@ Remou的答案能够做到这一点,因为他会介意。也许你没有正确地解释上下文,因为这两个答案都会让我完全解决问题。 – 2010-02-05 03:05:43