こんにちは。テックブログの萱場です。今回もスプシのTIPSです。よくPDFの表などの値をまとめてコピーしてスプシに貼り付けることがありますが、表のレイアウトで貼り付けたいのに、以下の様になることがあります。

要素のコピーが上手くいかないと、上の様に縦一列にペーストされてしまいます。
これを、再整形して、以下の様にするための数式を紹介します。

使用する関数
方針としては、FILTER関数と、MOD関数を使用して、3つ飛ばしなどで必要な値だけをフィルタリングする、ということになります。
使用する数式とその解説

B列の数式と解説
=FILTER(A:A,MOD(ROW(A:A)-ROW(A1),3)=0)
これは、A列から、A1セルの行番号を0として、その行番号を3で割って、あまりが0のセルを表示させるということを表しています。
FILTER関数で、フィルタリングしたい範囲と、その条件を指定します。
MOD関数は、割り算の余りを出力します。
ROW関数は、指定したセルの行番号を取得します。
例えばA1セルは、行番号が1なので、MOD(ROW(A:A)-ROW(A1),3)=0 の赤字の部分の計算は、1-1 で 0 になります。
そして0÷3 は 0 余り 0です (MOD(ROW(A:A)-ROW(A1),3) の部分)。
この事実は、MOD(ROW(A:A)-ROW(A1),3)=0 の条件部分と対応しており(計算結果の余りが0である事)、A1セルは条件に一致するため、出力されています。
同じ様に、A4セルは、行番号が3なので、3÷3 は 1 余り 0です。
これも条件に一致しているので、出力されます。
同じ様な数式を、C列、D列に入れれば、元々の参列の表を復元できます。
C列の数式と解説
=FILTER(A:A, MOD(ROW(A:A) – ROW(A2), 3) = 0)
ほとんど同じですが、赤字の部分だけ違います。
これは、C列に出力したいのは、A2列を起点にした名前部分のセルです。
なのでROW(A2)-ROW(A2)=0 、つまA2起点になるように、赤字の部分のみ変更しています。
D列の数式と解説
=FILTER(A:A, MOD(ROW(A:A) – ROW(A3), 3) = 0)
C列の数式で解説したように、A3セルを起点にするために、赤文字の部分だけ、変わっています。
まとめ
これで、縦1列に並んでしまった値を、表に復元する事ができました。
みなさんもぜひ、活用してみて下さい!
株式会社デザインXでは、アパレル業界のお客様に向けて、ECサイトや業務基幹システム(ERP)の開発・導入支援を行っております。ご興味をお持ちの方は、是非下記リンクよりお気軽にお問い合わせください。