一旦参考单元格到达终点(不是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,但这会使事情变得丑陋,因为源文件的大小可能会发生变化。是否有一个公式可以从源数据拉到最后,然后根据不同单元格中的值是否发生变化返回到开头?
答案 0 :(得分:0)
您可以使用计数器维护一个单独的列(例如,如果您的计数器列是C,C1将是1,C2将是2,依此类推)
然后,您不会通过复制整个列来引用您的源数据(例如=Source!B1
,Source!B2
,...或您现在使用的任何公式),但是使用({ {1}},=INDIRECT("Source!B"&C1)
,...)
Indirect将单元格引用作为字符串并将其转换为正确的excel引用。如果让计数器从1运行到max_row_number,您将体验到与现在完全相同的行为 - 复制整个源列。
但扭曲的是,当然你可以用公式来影响你的计数器价值,比如
(在C2中)=INDIRECT("Source!B"&C2)
这样,每当A列的值发生变化时,计数器将再次从1开始。当然你可以进一步调整它。
答案 1 :(得分:0)
我能想到的最好的方法是使用INDEX
,ROW
和MOD
代替OFFSET
的组合。这可能比我的第一个答案要好。
=INDEX(A:A,MOD(ROW()-1,COUNTA(A:A))+1,0)
第一个回答
要使用公式执行此操作,您可以结合使用CountA
,Offset
,Row
和Mod
此图显示了来自A1:A6
中来源的重复值的示例
B1中的公式是
=MOD(ROW()-1,COUNTA(A:A))
它构成C1中使用的函数的一部分(偏移行的部分)
=OFFSET($A$1,MOD(ROW()-1,COUNTA(A:A)),0)