我有一个如下的 SUM 公式:
=SUM(Monday!B5+Tuesday!B5+Wednesday!B5+Thursday!B5+Friday!B5+Saturday!B5+Sunday!B5)
是否可以这样,当这个公式被复制下来时,公式变成:
=SUM(Monday!C5+Tuesday!C5+Wednesday!C5+Thursday!C5+Friday!C5+Saturday!C5+Sunday!C5)
等等?
答案1
你问如何复制公式 A1向下,但强制将其更改为 B1,而不是标准预期的 A2。不知何故,我们需要要求 excel 向下移动但横向计数;即从第 1 行移动到第 2 行;但从 A 到 B 计数列。
我假设只有列引用会改变,工作表名称(天数)会保持不变。& 您的起始单元格是 A1。
有多种方法可以做到这一点。一种是使用字符代码,即将数字转换为字母。=code("A")
是 65 等等。
=CHAR(65+ROW()-1)&1
将被翻译为:
=CHAR(65+ROW()-1)&1
=CHAR(65+1-1)&1
=CHAR(66-1)&1
=CHAR(65)&1
=CHAR(65)&1
="A"&1
=A1
假设你在A1,B5也可以写成=CHAR(65+ROW()+1-1)&5
请注意,我假设您从 A 列开始;-1 表示 A 列;因此,如果您从 B 开始,则使用 -2。65 是 A 的代码。
在您的第一个/起始单元格中使用此公式,将每个 B5 替换为=CHAR(65+COLUMN()+1-1)&5
。
ROW()
当您向下移动时,位会增加;但CHAR
位会将其转换为列标识符,即A,B,C...
此外,固定部分,即公式中的字符串需要用引号括起来。
=SUM(
Monday!B5+
Tuesday!B5+
Wednesday!B5+
Thursday!B5+
Friday!B5+
Saturday!B5+
Sunday!B5
)
变成(B
被替换为&CHAR(65+ROW())&
)
=SUM(
"Monday!"&CHAR(65+ROW())&5+
"Tuesday!"&CHAR(65+ROW())&5+
"Wednesday!"&CHAR(65+ROW())&5+
"Thursday!"&CHAR(65+ROW())&5+
"Friday!"&CHAR(65+ROW())&5+
"Saturday!"&CHAR(65+ROW())&5+
"Sunday!"&CHAR(65+ROW())&5
)
但这只会给字符串带来 #value 错误,因为它会尝试添加单词 Monday & B5。我们需要将每一行括在 INDIRECT() 中。
最终公式
=SUM(
INDIRECT("Monday!"&CHAR(65+ROW())&5)+
INDIRECT("Tuesday!"&CHAR(65+ROW())&5)+
INDIRECT("Wednesday!"&CHAR(65+ROW())&5)+
INDIRECT("Thursday!"&CHAR(65+ROW())&5)+
INDIRECT("Friday!"&CHAR(65+ROW())&5)+
INDIRECT("Saturday!"&CHAR(65+ROW())&5)+
INDIRECT("Sunday!"&CHAR(65+ROW())&5)
)
如果有任何疑问请告诉我。
请注意,这可能不是最快/最短的方法。Excel 和任何其他软件一样,有多种方法可以完成同一件事。
答案2
我想建议您使用公式,当您向下拖动时,它将帮助您对下一列而不是行进行求和。
查看下面的屏幕截图。
现在让我先解释一下这个场景。
我使用的数据范围是 M1:N8,表格是 8 和 9。
注意:公式写在 Sheet8 中。
Cell M9(红色)具有配方,
=SUM(Sheet8!M1+Sheet9!M1)。
手机 M11(蓝色)有价值 48公式是,
=SUM(SUBTOTAL(9,OFFSET($M$1,{0,1,2,3,4,5,6,7},ROWS(M$11:M11)-1,{1},1)))
注意: 如果您想计算单元格范围之和,此公式将从 M1:M8 添加数据。
当您将此公式向下拖动时,将得到第 N 列的总和。
现在终于,细胞M14(绿色)有价值 40公式是,
=SUM(SUBTOTAL(9,OFFSET(Sheet8!$M$1,{0},ROWS(M$14:M14)-1,{1},1))+SUM(SUBTOTAL(9,OFFSET(Sheet9!$M$1,{0},ROWS(M$14:M14)-1,{1},1))))
注意: 这个公式Sheet8 和 Sheet9 中 M1 的总和。当你向下拖动它时,它会选择两张表中的单元格 N1。
希望这对你有帮助。我测试过后发布了解决方案。