我有一个公式,它在另一个工作表上搜索列标题,一旦找到它,就会执行一些sumifs
。我的数据大致如下:
1 8 10 11 12
Column E ... Column N ... Column O ... Column AB Column AC Column AD Column AE
Existing CCS data 100.00 100.00 120.00 150.00
列名称上方的数字很重要,我用它们来指定与我的公式相关的列。现在,循环中只有很少的单元格是重要的。单元格A1具有我想要终止的列号。单元格B1具有我想要从哪一列开始的列号。因此,如果我选择
A1=8
和 B1=1
,我希望下面的代码通过搜索第 1
列,然后是第 2
列,一直到第 8
列,并将每个循环中的所有值相加,并将总和给出。以上表为例,如果我将 A1="12"
和 B1="10"
,我希望它输出 370.00
。我目前使用的公式是:
=SUMIFS(INDEX('Program Data'!$A:$GA,0,MATCH(A1,'Data'!$1:$1,0)),'Data'!$N:$N,"CCS",
'Data'!$E:$E,"Existing")+SUMIFS(INDEX('Data'!$A:$GA,0,MATCH(A1,'Data'!$1:$1,0)),
'Data'!$N:$N,"CCS",'Data'!$E:$E,"Deep")
上述公式只给出包含A1
中数字字符串的列的总和,但我需要所有包含B1 -> A1
字符串的列的总和。
编辑
按照要求,这是我的循环失败尝试。由于B1本质上总是一个静态数字(即它将始终是45或88或其他),我认为我可以创建一个循环,告诉它从B1的任何值开始,并在需要时创建并放置公式到单元格中。所以对于这个,B1=1=z...
Sub LoopingYTD()
Dim z As Integer: z = 1
Dim formulaString2 As String
Do Until z = Range("A1") + 1
If formulaString2 = "" Then
formulaString2 = "="
Else
formulaString2 = formulaString2 & " + "
End If
formulaString2 = formulaString2 + " SUMIFS(INDEX('Data'!A:GA,0,MATCH("
formulaString2 = formulaString2 & """*"" &
formulaString2 = formulaString2 & "z"&" ""
formulaString2 = formulaString2 & """*""" & ",'Data'!1:1,0)),"
formulaString2 = formulaString2 & "'Data'!$N:$N,”CCS”,”
formulaString2 = formulaString2 & “'Data'!$E:$E,”Existing”))"
formulaString2 = formulaString2 & "+ SUMIFS(INDEX('Data'!A:GA,0,MATCH("
formulaString2 = formulaString2 & """*"" &
formulaString2 = formulaString2 & "z"&" ""
formulaString2 = formulaString2 & """*""" & ",'Data'!1:1,0)),"
formulaString2 = formulaString2 & "'Data'!$N:$N,”CCS”,”
formulaString2 = formulaString2 & “Data'!$E:$E, ”Deep”))"
z = z + 1
Loop
Range("B20").Value = formulaString2
我一直收到一个“应用程序定义或对象定义错误”的错误提示,但我不确定如何解决。
这是基于我之前提出的问题的建议。从那时起,我一直在尝试简化它,因为那有点混乱,所以我只想搜索一个数字字符串。基本上运行链接中的代码,但是不使用基于几个单元格的长而复杂的字符串,我只想让它计数,直到达到A1中的值。