研究了一下你的需求,用sum函数公式好像不行,可换个思路,对你这个公式结果进行分析可知,表2结果与表1相同,表3是表2的2倍,表4是表3的2位,以此类推。所以就可以按以下方法快速写公式:
1、在工作表2的A1单元格写公式:="1"!A1
2、先中工作表3和后面所有工作表然后在A1单元格中写如下公式:
=INDIRECT("'"&MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,3)-1&"'!A1")*2
当然以上公式要求你的工作表名称需用1、2、3等数字取名,并不能有间断。如果满足不了取名要求,则只能用宏代码来快速设置公式,代码如下:
Sub 写公式()
For I = 2 To Sheets.Count
Sheets(I).Range("A1").Formula = "=sum('1:" & Sheets(I - 1).Name & "'!A1)"
Next
End Sub
可以写一个vba程序:
Sheet2.Range("a1").Formula = "=1!A1"
Sheet3.Range("a1").Formula = "=1!a1+2!a1"
Sheet4.Range("a1").Formula = "=1!a1+2!a1+3!a1"
需要多少个,你就可以写多少个,然后执行一下,就可以了。
不知道你的工作表名称有没有数字规律?如果有的话用INDIRECT和CELL("filename")试试
这个问题自昨晚看到后,开始以为比较容易,用宏表函数或cell函数取得当前工作表名称,再用多个工作表求和的公式sum不就行了。但经过一晚的测试——推导——改进——测试,最后还是没成。
这虽然是一个无分题,但这么简单的问题,就没招了?早上起来又一直在想,为何用sum直接对多个工作表就行,而对indirect与cell取得的工作表名称就出错呢?实在太具挑战性了!就想总应该有办法改进。终于找到了一个多次用indirectr的方法。当然前提是工作表的名称要如提问所说的是有规律的数字或就用默认的Sheet1、Sheet2,或表1、表2、表3,这样有规律名称。根据楼主所说的1到30共30个工作表,也就是工作表名称不超过两位数。那么选择工作表2~30,鼠标定位到需要求和的单元格中,输入公式:
=SUM(SUMIF(INDIRECT(ROW(INDIRECT("1:"&-MIN(-TEXT(RIGHT(CELL("filename",$A$1),{1,2}),"0;0;0;!0"))))&"!A1"),"<>"))
同时按Ctrl+Shift+Enter三键输入数组公式,这样就为29个工作表中相同位置同时输入数组公式,并得到工作表1到当前工作表中所有A1单元格数值的和。
要增加工作表时,如新增工作表31,就选择1~30中任意一个工作表,复制工作表到最后,并重命名工作表名称,改名为31,A1中输入新数据,即可得到正确的结果。下图为5个工作表,A1中的数字同工作表名称,从图可知,求和结果正确。
PS:不过提问是存在问题的,如果求和公式在A1,又是对工作表1到当前工作表的A1求和,这不仅引起循环引用,且是一个无穷无尽的循环引用。所以回答中把题主的A1单元格放置公式当成笔误了。
以工作表5为例,如果公式在A1,那么:
=SUM('1:5'!A1)
A1中既是结果,又是求和的一个数据源,求和后数值变了,再求,无穷无尽,循环引用。