我想写一个类似=SUM(tab2!A:A)
的公式,而是使用A的列标题,即“count”。如何将其修改为更像:=SUM(tab2!"count")
?
我想这样做的原因是因为我在tab2中复制并粘贴来自其他来源的电子表格,而引用“count”的列可能位于不同的列中。 我希望公式在粘贴新电子表格后立即通过自动查找按标题名称汇总的列来为我提供正确的计算。
我必须遗漏一些东西,因为这似乎是一个非常基本的问题,我无法在任何地方找到答案......
感谢您的帮助!
答案 0 :(得分:2)
答案 1 :(得分:1)
你没有说你是否会考虑宏观解决方案。如果是这样,这可能会奏效。 如果您要粘贴的工作表是Sheet2,而您想要的工作表是Sheet1,那么此宏(如果放在Sheet1的Worksheet_Activate事件中)将在您单击Sheet1选项卡时立即为您提供结果,并粘贴您的数据到Sheet2:
Private Sub Worksheet_Activate()
Dim r As Range
Dim rCol As Range
Dim rFound As Range
Dim ws As Worksheet
Dim lTotal As Long
Set ws = Sheet2
Set r = ws.Cells
Set rFound = r.Find("count")
If Not rFound Is Nothing Then
Set rCol = rFound.EntireColumn
lTotal = Application.WorksheetFunction.Sum(rCol)
End If
Cells(1, 1) = lTotal
End Sub
它确实假设只有一个单元格带有" count"在Sheet2上。
答案 2 :(得分:1)
我喜欢@Doug提出的命名范围的想法,但是如果问题是你要将数据转储到[并且你事先不知道哪个列将会在哪里]并且需要每次重命名你的范围,还有其他选择 - 我建议使用OFFSET。 OFFSET允许您动态创建范围,从特定点开始,向下/向上/向右/向左移动,以确定您确定的行数和列数。
在您的情况下,您需要将其与搜索列的方法结合起来,以查看哪一个说" Count"。我假设您的列标题始终排在第1行。如果它们不是[或者如果它们不是总是在第2行,或者您提前知道的任何行] ......您可以绕过它但是我建议你尝试使数据更加统一,而不是创建不必要的Excel解决方法。
总的来说,你的公式看起来像这样:
=SUM(OFFSET(A1,,MATCH("Count",1:1,0)-1,ROWS(A:A),1))
这样做首先确定单词" Count"在第1行中找到它。然后它从该数字中减去1 - 这现在等于它的右边的列数,来自A列。它使用offset来创建对该列的引用,对于所有行,以及将这些行加在一起。