我是第一次接触这种 StackExchange,所以如果它属于其他地方,请将其移动;不过,我认为这是最好的地方。
我正在制作一个 Excel 工作表,它简单地将基本财务数据存储在 5 列(、、、和Check Number
)和无限行中。每个工作表代表一个月,每个工作簿代表一年。当我付款或收款时,我会将其存储为一个新行,这本质上会使每月的行数不确定。每笔交易的单元格是其上方行的单元格与其所在行的单元格之和。我希望每个月都以一个特殊行(列标题后的第一个行)开始,显示每月的摘要Date of Transaction
Description
Profit from Transaction
Balance After Transaction
Balance
Balance
Profit
最后的月的交易。例如,Balance After Transaction
单元格将显示最后一行的余额,Profit from Transaction
单元格将显示当月的总利润)
我知道,如果我知道每个月正好有 100 项支出,那么我就可以分别使用以下公式来实现 3 月份的利润和余额:
=February!E2 - February!E102
=February!E102
然而,我确实不是知道每个月的表格中有多少行,我想尽可能地实现自动化(例如,如果我发现一月份有遗漏或重复的费用,我不希望更新所有指向一月末余额的公式)。如何让 Excel 自动使用任何给定 Excel 电子表格中公式中某一列中最后输入的值?
答案1
我的第一个建议是将此范围转换为表格(插入->表格),然后您可以添加一个总计行,您可以通过其名称从不同的工作表/工作簿中引用该行,然后无需担心行数。
如果这不是一个选项,那么您可以这样做:
要获取上个月的利润摘要,您应该使用
=SUM(Month!$D:$D)
(这假设利润栏除了利润之外没有其他数字)。
对于上个月的余额,@Jesse 公式应该有效,但前提是您的表格从第一行开始,如果不行,您可以尝试这个:
=INDEX(Month!$E:$E,MATCH(TRUE,ISBLANK(Month!$E:$E),0)-1)
输入时,请务必使用CTRL+SHIFT+ENTER
。这将ISBLANK
在整列中找到第一个空单元格,然后检索其正上方的值(即最后一行)。
为了使其更具动态性和面向未来性,我建议使用命名范围,因此如果需要,您不必更改对列的所有引用。
答案2
不要使用间接,这种级别的计算会很麻烦。间接是不稳定的,每次更改任何内容时都会导致工作表中的每个公式重新计算。
您可以使用索引来代替。看起来像:
=INDEX(Month!A:E,COUNTA(Month!A:A),COLUMN())
您只需引用整列,并且列偏移量将通过COLUMN()
函数自动计算。
答案3
另一种简单的方法是将名称插入工作簿。Jan、Feb 等。通过计算日期列中的日期条目数量,使用这些名称来确定最后一行。
例如插入名称“Jan”和 RefersTo =COUNT(January!A:A)+2 这将为您提供行数,您可以在公式中使用它来间接构建范围引用。
该行中的最后一个单元格将是 =INDIRECT("E"&Jan),如果愿意,您也可以在其他地方的摘要表中使用这些引用。
假设 A 列中有数字(日期)。如果是文本,它将忽略标题,但在第 2 行中,确保没有数字值,否则会使行数产生偏差。