从上一个单元格获取数值

100

在Google Spreadsheets中,是否可以访问上面的单元格的值?

意思是:在一个单元格A2中,我想显示上面单元格A1的值。不是因为它是那个坐标,而是因为它是上面的单元格。我通过将值设置为上面的单元格来实现此目的:

enter image description here

如果我在这两个之间创建一个新行,那么会得到这样的结果:

enter image description here

我们知道,由于参考方式不是相对的,所以数值没有变化。我如何使它相对于单元格,这样无论发生什么变化,我总是选择上面的单元格?我希望结果是这样的:

enter image description here

词语相对的在这种情况下是错误的,但我希望你能理解我的意思。我同时想要通常的相对行为(这样我可以移动单元格本身,其引用将适应新的列和行),以及引用不指向特定的固定坐标,而是指向从单元格本身出发的特定路径的行为。

3个回答

226
你可以使用以下函数来解决这个问题:

=INDIRECT(ADDRESS(ROW()-1;COLUMN()))

COLUMN() 返回当前列的数字引用。

ROW() 返回当前行的数字引用。

在这个示例中,从行中减去1可以得到上一行。可以将数学运算应用于ROW()和/或COLUMN(),但是在回答您的问题时,此公式将引用上面的单元格。

然后我们有ADDRESS(),它接受一个数字行和列引用,并将单元格引用作为字符串返回。

最后,INDIRECT()允许您将单元格引用作为字符串传递,并将其处理为公式。

Google电子表格会在您输入时提供帮助提示,因此在键入上述公式时,您应该得到每个函数的完整说明。


2
有人知道如何获取所有以前的单元格吗? - Sebastian Thomas
6
这个答案改变了我的人生。谢谢你。 - dancow
4
@SebastianThomas=SUM(A1:INDIRECT(ADDRESS(ROW()-1,COLUMN())))`对我有效。 - Jarett Millard
1
天才,谢谢。我需要一种方法来保持周数和日期的一致性,同时允许对事件进行排序和排序,它完美地工作。 - Maurice
6
=间接(地址(行()-1;列())) - xpeiro
显示剩余2条评论

35

对于任何偶然看到这个问题的人,你也可以通过像这样指定列:

=INDIRECT("A" & ROW()-1)

如果你在返回B列的值,但是需要与A列的上一行进行比较,那么这个功能会非常有用。


1
这正是我需要的,以获取当前行与上一行之间的差异:=H:H-INDIRECT("H"&(ROW()-1))。谢谢! - nocdib
当我合并单元格时,它会出现错误,我该如何解决? - Mohith7548
1
非常抱歉。我不知道如何处理合并单元格。我的建议是尽量避免使用合并单元格。它们会破坏列排序、筛选、数据透视表、宏和类似这样的公式。比合并单元格更好的替代方法是格式化单元格、转到对齐选项卡,并在水平下拉菜单中选择“选择区域居中”。 - user2597747

6

最短、也是对VisiCal老手来说更容易的方法是使用旧版RC语法和相对值…

=INDIRECT("R[-1]C[0]"; FALSE)

非常直观、简单易记和修改的代码模板,非常简短。
敬礼,安东尼。

+1 为添加一种在官方参考页面中甚至未提及的替代方法而加分 - 对我来说,这是最易读的选择。谢谢! - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接