スプレッドシートロゴ

スプシ コピペで崩れた表を修復するFILTER関数の応用

こんにちは。テックブログの萱場です。今回もスプシの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)の開発・導入支援を行っております。ご興味をお持ちの方は、是非下記リンクよりお気軽にお問い合わせください。


投稿日

カテゴリー:

投稿者:

タグ: