Excel で 1000 行のブロックを新しい列に移動する

Excel で 1000 行のブロックを新しい列に移動する

機械試験機は、テストごとに 4 列で 1000 行のデータ (+ ヘッダー タイトル行) を出力します。ただし、2 番目のテストは行 1002 から、3 番目のテストは行 2003 からというように出力されます。1001 行 (4 列) の各ブロックを移動して、新しい列の行 1 から開始する必要があります。テスト 1 は列 AD、テスト 2 は列 EH というようにする必要があります。

ご協力いただければ幸いです

Excel イメージ

答え1

出力は別のワークシートに表示されます。

10 ブロックのデータがあるとすると、これらは範囲内になりますExport_Curve_03!A1:D10010

出力ワークシートのセルA1に次の数式を追加します。

=INDEX(Export_Curve_03!$A$1:$D$10010,ROW(A1)+1001*INT((COLUMN(A1)-1)/4),1+MOD(COLUMN(A1)-1,4)

この数式を 1001 行目までコピーし、十分な列数 (10 ブロックのデータの場合は 40 列) まで横にコピーして範囲を指定しますA1:AN1001

変換は、おそらく入力データのセットごとに 1 回だけ必要なので、ストレージ スペースが考慮される場合は、出力ワークシート上のすべてを、特殊な貼り付けを使用して値に変更する方法が私のやり方です。

説明

このINDEX関数は配列から個々のセルを選択するために使用され、上で使用したように、INDEX(array,i, j)配列の i 行目と j 列目の値という一般的な形式を持ちます。

出力はExport_Curve_03!$A$1:$D$100101001行のブロックに分割され、最初のブロックは出力の列AD、2番目のブロックは列EH、3番目のブロックは列IL、というように分割されます。したがって、出力のセルは、次の式を使用して入力ブロック番号と一致させることができます。

INT((COLUMN(cell)-1)/4)

ここで、はcellA805やX20などのセル参照を示します。

実際、この式は、列ADのセルの場合は0、EHのセルの場合は1、ILのセルの場合は2などと評価されます。これはブロック番号より1小さいので、式に組み込むと便利です。

ROW(cell)+1001*INT((COLUMN(cell)-1)/4)

出力のセルに対応する入力から正しい行番号を識別します。

出力の列に一致する入力の必要な列番号は、列 A の 1 から始まる出力の列全体でパターン 1、2、3、4、1、2、3、4、... を繰り返すことによって取得されます。

表現

1+MOD(COLUMN(cell)-1,4)

出力のセルに対応する入力の列 (1、2、3、または 4) を効果的に識別します。

出力の任意のセルに対応する入力の行と列の 2 つの式を INDEX 関数に挿入できるようになりました。これで説明は完了です。

関連情報