在 Excel 中将单行引用到多行

在 Excel 中将单行引用到多行

我有一张包含销售列表的工作表,每行一个销售。为了将这些数据导入我的会计软件,我需要创建一个单独的工作表,以不同的格式显示数据。第一张工作表中的每一行将占用第二张工作表中的四行。

我在第二张工作表中设置了四行,并将所有相对引用都放在第一张工作表中的第一行。当我复制这四行时,单元格引用不正确。例如,前四行应该引用worksheet1!A1。接下来的四行应该引用worksheet1!A2。但如果我尝试通过向下填充来执行此操作A1:A4,它会引用worksheet1!A5

我需要一种方法来快速复制这四行并获得正确的引用。它应该是这样的。

worksheet1!A1 -> worksheet2!A1
worksheet1!A1 -> worksheet2!A2
worksheet1!A1 -> worksheet2!A3
worksheet1!A1 -> worksheet2!A4
worksheet1!A2 -> worksheet2!A5
worksheet1!A2 -> worksheet2!A6
worksheet1!A2 -> worksheet2!A7
worksheet1!A2 -> worksheet2!A8

目前,结果如下。您可以看到,有三行销售数据被跳过了。

worksheet1!A1 -> worksheet2!A1
worksheet1!A1 -> worksheet2!A2
worksheet1!A1 -> worksheet2!A3
worksheet1!A1 -> worksheet2!A4
worksheet1!A5 -> worksheet2!A5
worksheet1!A5 -> worksheet2!A6
worksheet1!A5 -> worksheet2!A7
worksheet1!A5 -> worksheet2!A8

可能有一个非常简单和明显的方法可以做到这一点,但我的 Excel 技能有限,而且我无法在 Google 上找到任何东西。

答案1

解决方案代表 OP 从问题内部移至答案。


我找到了一个办法。只需将行号除以四,然后四舍五入到最接近的整数即可。

=INDIRECT("'worksheet1'!A"&ROUNDUP(ROW()/4, 0))

# My real world version looks more like this, as my rows don't actually start on row 1

=INDIRECT("'worksheet1'!A"&ROUNDUP((ROW()-1)/4, 0) + 8)

答案2

假设您从第二张表开始A1,您可以在 A 列中填写以下公式以获得所需的结果。

=IF(INT((ROW()+3)/4)=(ROW()+3)/4,INDIRECT("worksheet1!A"&(ROW()+3)/4),"")

它有点复杂,会使您的工作表更难审核,但它可以完成工作。如果您需要清晰、易于理解的公式,VBA 可能是您的最佳选择。

相关内容