返回excel中源数据的开头

时间:2013-12-02 16:18:54

标签: excel

一旦参考单元格到达终点(不是VBA),是否有一种公式化的方法可以返回源文件的顶部?例如:

     A      B
  1 001 63001210100
  2 001 63001210101
  3 001 63001210102
  4 001 63001210103    --end of source file 
  5 002                --should be 63001210100 again    
  6 002
  7 002
  8 002

我基本上是从另一个电子表格(源文件)中提取数据并且数据已经到了最后。但是,由于A列已更改,我需要从头开始重复数据。顺便说一下,A列是文本格式。

我知道我可以去B5并将它引用到B1,但这会使事情变得丑陋,因为源文件的大小可能会发生变化。是否有一个公式可以从源数据拉到最后,然后根据不同单元格中的值是否发生变化返回到开头?

2 个答案:

答案 0 :(得分:0)

您可以使用计数器维护一个单独的列(例如,如果您的计数器列是C,C1将是1,C2将是2,依此类推)

然后,您不会通过复制整个列来引用您的源数据(例如=Source!B1Source!B2,...或您现在使用的任何公式),但是使用({ {1}},=INDIRECT("Source!B"&C1),...)

Indirect将单元格引用作为字符串并将其转换为正确的excel引用。如果让计数器从1运行到max_row_number,您将体验到与现在完全相同的行为 - 复制整个源列。

但扭曲的是,当然你可以用公式来影响你的计数器价值,比如

(在C2中)=INDIRECT("Source!B"&C2)

这样,每当A列的值发生变化时,计数器将再次从1开始。当然你可以进一步调整它。

答案 1 :(得分:0)

我能想到的最好的方法是使用INDEXROWMOD代替OFFSET的组合。这可能比我的第一个答案要好。

=INDEX(A:A,MOD(ROW()-1,COUNTA(A:A))+1,0)

第一个回答

要使用公式执行此操作,您可以结合使用CountAOffsetRowMod

此图显示了来自A1:A6

中来源的重复值的示例

repeating values

B1中的公式是

=MOD(ROW()-1,COUNTA(A:A))

它构成C1中使用的函数的一部分(偏移行的部分)

=OFFSET($A$1,MOD(ROW()-1,COUNTA(A:A)),0)