我想从 Sheet1 到 Sheet2 获取大量数据,但当我向右拉命令时,它应该只会每三行将“C”增加到“D”。因为我有 3 个命令要向右拉,所有命令都应该只增加 1,而不是 3。
A1 如下所示:
=WENN(Sheet1!C3>0;Sheet1!C$2;"")
B1 是这样的:
=WENN(Sheet1!C3>0;Sheet1!$A3;"")
C1 喜欢这个:
=WENN(Sheet1!C3>0;Sheet1!C3;"")
当我将其拉到右侧时,它们会变成这样:
=WENN(Sheet1!F3>0;Sheet1!F$2;"")
=WENN(Sheet1!F3>0;Sheet1!$A3;"")
=WENN(Sheet1!F3>0;Sheet1!F3;"")
但我想要:
=WENN(Sheet1!D3>0;Sheet1!D$2;"")
=WENN(Sheet1!D3>0;Sheet1!$A3;"")
=WENN(Sheet1!D3>0;Sheet1!D3;"")
希望您明白我的意思。有什么办法吗?
答案1
您可以使用有用的OFFSET
函数来控制单元格向右移动的程度。
由于您想要每 3 列(在 Sheet2 中)移动 1 列(在 Sheet1 中),因此可以使用以下函数:
=ROUNDUP(COLUMN()/3,0)-1
这基本上会使用列号,将其除以 3 并四舍五入。然后,我们删除 1,因为我们不想移动前 3 列。如果将其向右拉,您将得到以下序列:0 0 0 1 1 1 2 2 2 3 3 3...
现在您知道需要移动单元格多少C3
,您可以使用OFFSET
函数获取正确的数据。以下是您应该使用的公式Sheet2
:
A1
=IF(OFFSET(Sheet1!$C3,0,ROUNDUP(COLUMN()/3,0)-1)>0,OFFSET(Sheet1!$C$2,0,ROUNDUP(COLUMN()/3,0)-1),"")
B1
=IF(OFFSET(Sheet1!$C3,0,ROUNDUP(COLUMN()/3,0)-1)>0,Sheet1!$A3,"")
C1
=IF(OFFSET(Sheet1!$C3,0,ROUNDUP(COLUMN()/3,0)-1)>0,OFFSET(Sheet1!$C3,0,ROUNDUP(COLUMN()/3,0)-1),"")
预期结果:
您似乎在使用德语版 Excel。以下是翻译后的公式:
=WENN(BEREICH.VERSCHIEBEN(Sheet1!$C3;0;AUFRUNDEN(SPALTE()/3;0)-1)>0;BEREICH.VERSCHIEBEN(Sheet1!$C$2;0;AUFRUNDEN(SPALTE()/3;0)-1);"")
=WENN(BEREICH.VERSCHIEBEN(Sheet1!$C3;0;AUFRUNDEN(SPALTE()/3;0)-1)>0;Sheet1!$A3;"")
=WENN(BEREICH.VERSCHIEBEN(Sheet1!$C3;0;AUFRUNDEN(SPALTE()/3;0)-1)>0;BEREICH.VERSCHIEBEN(Sheet1!$C3;0;AUFRUNDEN(SPALTE()/3;0)-1);"")