使用VBA编辑个人会计SUMIFS公式,下移Sheet3单元格引用
解决SUMIFS公式中Sheet3单元格引用逐行下移的问题
你原公式里的Sheet3B4是笔误,得先改成Sheet3!B4,不然公式本身会出错。下面给你两个实用办法解决行号下移的问题:
方法1:写个简单VBA宏自动改
录制宏只能固定操作,没法动态调整行号,自己写个宏就行:
- 打开Excel按
Alt+F11打开VBA编辑器 - 右键你的工作簿,选「插入」→「模块」
- 粘贴下面的代码:
Sub ShiftSheet3RefsDown() Dim cell As Range Dim formulaTxt As String Dim rowNum3 As Integer, rowNum4 As Integer ' 这里默认修改选中的单元格,要是公式固定在某个单元格,把Selection改成Range("E6") Set cell = Selection formulaTxt = cell.Formula ' 提取B3和B4的行号 rowNum3 = CInt(Mid(formulaTxt, InStr(formulaTxt, "Sheet3!B") + 8, 1)) rowNum4 = CInt(Mid(formulaTxt, InStr(InStr(formulaTxt, "Sheet3!B") + 9, formulaTxt, "Sheet3!B") + 8, 1)) ' 替换成下一行的行号 formulaTxt = Replace(formulaTxt, "Sheet3!B" & rowNum3, "Sheet3!B" & rowNum3 + 1) formulaTxt = Replace(formulaTxt, "Sheet3!B" & rowNum4, "Sheet3!B" & rowNum4 + 1) cell.Formula = formulaTxt End Sub
- 返回Excel,把这个宏添加到快速访问工具栏,下次需要改的时候,选中公式单元格点一下按钮就行
方法2:用INDIRECT函数手动控行号
不想碰VBA的话,把行号单独存到一个单元格里,比如用G1存起始行(初始填3),然后把公式改成:
=SUMIFS(Table3[Amount],Table3[Category],E6,Table3[Date Entered],">"&INDIRECT("Sheet3!B"&G1),Table3[Date Entered],"<"&INDIRECT("Sheet3!B"&G1+1))
每次要下移一行,直接把G1的数字加1就好,不用动公式本身。
内容的提问来源于stack exchange,提问作者Azianjeezus
相关产品推荐
相关产品推荐

