機械試験機は、テストごとに 4 列で 1000 行のデータ (+ ヘッダー タイトル行) を出力します。ただし、2 番目のテストは行 1002 から、3 番目のテストは行 2003 からというように出力されます。1001 行 (4 列) の各ブロックを移動して、新しい列の行 1 から開始する必要があります。テスト 1 は列 AD、テスト 2 は列 EH というようにする必要があります。
ご協力いただければ幸いです
答え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$10010
1001行のブロックに分割され、最初のブロックは出力の列AD、2番目のブロックは列EH、3番目のブロックは列IL、というように分割されます。したがって、出力のセルは、次の式を使用して入力ブロック番号と一致させることができます。
INT((COLUMN(cell)-1)/4)
ここで、はcell
A805や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 関数に挿入できるようになりました。これで説明は完了です。