Excel for 循环从另一行获取值

Excel for loop to get value from another row

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

   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。

我的最终结果将是 table,其中包含所有总数:

Aa Ab Ac

Ba Bb Bc

Ca Cb Cc

在前面的例子中,Aa = 1 + 2 + 3 = 6,Ab = 5,等等

类似的东西。

我认为 1-1(Aa 的总数)的方法是遍历第一行中的每一列。检查它是否是 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

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

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

非常感谢任何帮助。 谢谢

您是否在寻找类似的东西:

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

仅供参考,这可以使用 SUMPRODUCT 公式完成:

=SUMPRODUCT(($B:$J=D)*($A:$A=$C10)*$B:$J)


编辑

要比较第一个字母然后使用这个公式:

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