Sheet1 から Sheet2 に大量のデータを取得したいのですが、コマンドを右にプルすると、3 行ごとに「C」が「D」に増加するだけです。右にプルするコマンドが 3 つあるため、すべてが 3 ではなく 1 ずつ増加するはずです。
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
セルを右にどれだけシフトするかを制御するために、便利な関数を使用できます。
Sheet2 の 3 列ごとに Sheet1 の 1 列をシフトしたいので、次の関数を使用できます。
=ROUNDUP(COLUMN()/3,0)-1
これは基本的に列番号を使用し、それを 3 で割って丸めます。次に、最初の 3 列をシフトしたくないので、1 を削除します。これを右に引っ張ると、次のシーケンスが得られます。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);"")