Excel for循环从另一行获取值

时间:2016-07-06 13:22:06

标签: excel vba spreadsheet

我有一个包含各种数据的电子表格。它看起来像这样:

   A A A B B C C C C

a  1 2 3 2 1 4 2 3 2

b  0 2 3 3 0 1 2 3 0

c  6 6 3 0 2 1 0 4 0

我想要的是添加所有的Aa,然后拿出Aa总数,所有的Bb,并得出Bb总数,所有的Ab等等。

我想要做的是,对于每一列,检查它是A,B还是C.我想这样做,因为数据可能会改变我最终可能会有四列A,两列B,等等。但我知道a,b和c会保持原样。

我也不知道A,B和C的顺序。可能有两个A,然后是两个C,然后是一个B.

我的最终结果将是一个包含所有总数的表格:

Aa Ab Ac

Ba Bb Bc

Ca Cb Cc

前面示例中的位置表示Aa = 1 + 2 + 3 = 6,Ab = 5等

类似的东西。

我认为要走的路是1-1(Aa' s的总数)要经过第一行的每一列。检查它是否为A.如果是,则获取相同列的值但第二行。将它添加到总数中。浏览完所有列后,以1-1显示总数。

到目前为止(A):

    Sub getA()
    Dim x As Integer
    Dim total As Integer
    'cols = Find number of columns with data in them
    For x = 1 To cols
        'cell = cell in Ax
        If InStr(1, cellvalue, "a") = 1 Then
            'val = value from row 5 in same column
            total = total + Val
        End If
    Next
End Sub

但我真的不知道如何处理注释行。

最后,我想知道的另一件事是,如何在没有任何额外事件的情况下将这些值呈现在各自的单元格中(例如按钮)。从有人打开电子表格的那一刻起,它们就应该出现在他们的单元格中。

非常感谢任何帮助。 感谢。

2 个答案:

答案 0 :(得分:1)

只是一个FYI,可以使用SUMPRODUCT公式来完成:

=SUMPRODUCT(($B$1:$J$1=D$9)*($A$2:$A$4=$C10)*$B$2:$J$4)

enter image description here

修改

要比较第一个字母,请使用以下公式:

=SUMPRODUCT((LEFT($B$1:$J$1,1)=D$9)*($A$2:$A$4=$C10)*$B$2:$J$4)

enter image description here

答案 1 :(得分:0)

您正在寻找类似的东西:

Function countletter(strLetter As String) As Double
Dim x As Double, y As Double, xMax As Double, yMax As Double
xMax = Range("A1").CurrentRegion.Columns.Count
yMax = Range("A1").CurrentRegion.Rows.Count
    For x = 1 To xMax
        For y = 1 To yMax
            If Cells(y, x).Value = strLetter Then
                countletter = countletter + 1
            End If
        Next
    Next
End Function