我试图减去两个单元格来显示月份的变化,因为提供的数字是年初至今的数据。
随着每个月添加新列,公式需要更新以反映当前月份的变化,即在 1 月我需要减去B12
- A12
,在 2 月减去C12
- B12
,在 3 月减去D12
-C12
等等。公式始终停留在同一个单元格中。
有没有办法让公式每个月自动更新,还是我必须每个月手动更新?
答案1
TODAY 函数可用于获取当前日期
=TODAY()
MONTH 函数可用于从 TODAY() 获取当前月份
=MONTH(TODAY())
OFFSET 函数可用于“返回对单元格或单元格区域内指定行数和列数的范围的引用。返回的引用可以是单个单元格,也可以是单元格区域。”。
=OFFSET(REFERENCE CELL, ROW, COLUMNS, HEIGHT, WIDTH)
范围值高度和宽度是可选的,在这种情况下不是必需的。
您的第一个单元格 A12 可以作为参考单元格,并且您要从参考单元格右侧的月份数字列中选择总和中的第一个参数。JANUARY 是第 2 列,而 JUNE 是第 7 列,即参考列 1 右侧的第 6 个单元格,即:
=MONTH(TODAY())
您要减去的第二个参数是 MAY,位于参考单元格右侧 5 个单元格
=MONTH(TODAY())-1
因此,计算需要将引用 A12、当前行(0 表示无偏移)、列偏移与上述参数偏移相加。
=SUM(OFFSET(A12,0,MONTH(TODAY())),-(OFFSET(A12,0,(MONTH(TODAY())-1))))
如果您希望日期波动较小或自动,您可以用 TODAY() 代替电子表格中的期间日期参考。
答案2
替代答案基于指数功能
TODAY 函数可用于获取当前日期
=TODAY()
MONTH 函数可用于从 TODAY() 获取当前月份
=MONTH(TODAY())
返回表或数组中按行号和列号索引选择的元素的值。
INDEX(数组,行号,[列号])
您的第一个单元格 A12 可以作为数组的起点,假设 12 个月,数组终点将是 M12,您要从列中选择总和中的第一个参数,即参考单元格右侧的月份数。JANUARY 是第 2 列,第七个月 JULY 是第 8 列,即第 1 列参考单元格右侧的第 7 个单元格,即:
=MONTH(TODAY())+1
您要减去的第二个参数是 JUNE,位于引用单元格右侧的第 6 个单元格
=MONTH(TODAY())
因此,计算需要将当前行 (0) 中数组 A12:M12 的单元格值(其列号基于今天的月份)加 1,然后减去当前行 (0) 中数组 A12:M12 的单元格值(其列号基于今天的月份)。
=INDEX(A12:M12,0,MONTH(TODAY())+1)-INDEX(A12:M12,0,MONTH(TODAY()))