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 

它通过使用从Sheet1Sheet1格的引用的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())