Excel for循环从另一行获取值

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

AAABBCCCC 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的总数)是通过第一排的每一列。 检查它是否为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 

但我真的不知道如何继续评论的线。

最后,我想知道的另一件事情是,如何将这些值呈现在它们各自的单元格中,而无需执行任何额外的事件(例如button)。 只要有人打开电子表格,他们应该出现在他们的单元格中。

任何帮助是极大的赞赏。 谢谢。

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

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

在这里输入图像说明


编辑

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

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

在这里输入图像说明

你在找什么东西吗?

 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