引用一系列单元格,并在添加新行时保持顺序
我引用第一个工作表中的一系列单元格来构build第二个工作表。 我经常在第一张纸的中间添加行。 在引用第一个的第二个表中,我添加了一行的单元格号中有一个跳过。
表1:包含我的主要清单,这是更新
一个新的行被添加(A3)到表1:
表2:引用表1并拉动行
但是,您可以看到,第3行应该包含添加的行“Rachael”,而是已经下移到Sheet1!A4并且一起错过了A3。
我怎样才能解决这个问题?
尽量避免公式挥发,这意味着即使公司的先例没有改变,公式也会重新计算公式的变化。
在工作表中有多个易失性公式可能会导致性能问题。
任何使用OFFSET()函数或INDIRECT()函数的公式都会自动变为易失性的。 但是在这两个函数中,INDIRECT比OFFSET差得多。 两者都是不稳定的,但OFFSET速度非常快,而INDIRECT速度非常慢。
不要使用间接()。
最好的select是没有问题的INDEX()函数。 它比OFFSET函数更快,INDEX也不易变。
所以在第二张单元格A2中使用下面的公式:
=INDEX(Sheet1!$1:$1048576,ROW(),COLUMN())
…然后根据需要复制。
尝试在sheet2中使用此公式:(将其添加到Sheet2,A2,然后复制它。)
=offset(sheet1!$A$1,row(a2)-1,column(a2)-1,1,1)
要直接回答你的问题 – 你可以用INDIRECT函数来实现。 INDIRECT允许你通过一个公式来dynamic地引用一个单元格,这并不一定遵循Excel的“跟踪”规则。 请记住,通常情况下,Excel给每个单元格一个“唯一的ID”,当你最初引用任何单元格时,内部逻辑指向特定的“唯一ID”,可见的引用指向“A1”细胞。 这样做可以插入行和列,而不会无意间丢失所有的引用。
一般来说,做我即将展示的东西并不是一个好主意,因为你失去了直接引用提供的内在好处(一般来说:更容易维护)。 但是,为了向您展示它将如何工作,请参阅下面的内容[假设您需要一个标题行,并且结果表中的列应与原始数据表中的列匹配]:
=INDIRECT("Sheet1!R"&ROW()+1&"C"&COLUMN())