Excel – 用实际单元格引用replace偏移公式
我有一张桌子,是从一个非常大的工作表拉动成千上万的数据行。 表格中的一些列正在从该大表格的每第五行获取他们的数据。 为了加快创build单元格引用的过程,我使用了OFFSET公式从第5行抓取单元格:
=OFFSET('Large Sheet'!B$2572,(ROW(1:1)-1)*5,,) =OFFSET('Large Sheet'!B$2572,(ROW(2:2)-1)*5,,) =OFFSET('Large Sheet'!B$2572,(ROW(3:3)-1)*5,,) =OFFSET('Large Sheet'!B$2572,(ROW(4:4)-1)*5,,) =OFFSET('Large Sheet'!B$2572,(ROW(5:5)-1)*5,,) etc...
OFFSET虽然可以在计算大型桌子时吃掉资源,但我正在寻找一种方法来加速/简化我的公式。 有没有简单的方法来将OFFSET公式转换成简单的单元格引用,如:
='Large Sheet'!B2572 ='Large Sheet'!B2577 ='Large Sheet'!B2582 ='Large Sheet'!B2587 ='Large Sheet'!B2592 etc...
我不能只是粘贴值。 这需要是一个积极的参考,因为大单将改变。
谢谢你的帮助。
这是最后一个不使用VBA或公式的方法。 这只是一个快速和脏的使用AutoFilter和删除行。
大意
- 添加对单元格的引用
=Sheet1!A1
并将其复制以匹配主数据中的行数。 - 在
B1
增加另一个公式=MOD(ROW(), 5)
- 过滤列
B
并取消选中0(或任何单个数字) - 删除所有可见的行
- 删除B列
- 瞧,每五行的公式
一些参考图像 ,这些都是采取Sheet2
。
使用AutoFilter准备好的公式。
已过滤并准备删除
删除所有这些行(selectA1
,CTRL + SHIFT +向下箭头,SHIFT +空格,CTRL + MINUS)
删除列B每5行用“纯”公式得到最终结果。
如果你想采用VBA的方法,你可以使用简单的For
循环非常快地生成引用。
这是一些非常粗糙的代码,可以让你开始。 它使用硬编码的表格名称和variables。 我真的只是试图展示i*5
部分。
Sub CreateReferences() For i = 0 To 12 For j = 0 To 5 Sheet2.Range("H1").Offset(i, j).Formula = _ "=Sheet1!" & Sheet1.Range("A5").Offset(i * 5, j).Address Next Next End Sub
它通过使用从Sheet1
上Sheet1
格的引用的Address
构build快速公式来工作。 这里唯一的关键是在“摘要”行中有一个索引计数单元格,并乘以5以获得对“主”表单的引用。 我从A5
开始只是为了匹配INDEX
的结果。
结果显示H1
和以上的公式input。 我正在比较上面生成的INDEX
结果。
这是一种使用INDEX
而不是OFFSET
。 我不知道是否更快,我想你可以检查。 INDEX
是不稳定的,所以你可能从中获得一些优势。
图片的范围 ,你可以看到, Sheet1
有很多的数据和Sheet2
拉从该表中的每第五行。 Sheet1
的数据从A1:F1000
,只报告当前单元格的地址。
公式使用INDEX
并在Sheet2
上从A1
向下复制。
=INDEX(Sheet1!$A$1:$F$1000,ROW()*5,COLUMN())