一行に入っている複数の項目を複数行に分解する(ダウンロード可能) ~ excel

2018年8月2日

品名が横に並んでいる注文票ですが、注文を取るときは数量のみ入れればよいので簡単なのですが、データ連携する場合には1品名ごとに行にしないと受付できない仕組みが多いと思います。

一行に入っている複数の項目を複数行に分解するのはプログラムを組めばできるのですが、excelで列を行に分解できるよう作成してみます。

 

Sheet2

OFFSET関数を使い$A$2を基準としてsheet1からデータを取得しています。元の行と繰り返し数が分かればどれだけずれているか分かります。元行-1には「=INT((ROW()-2)/3)」、繰り返しには「=ROW()-INT((ROW()-2)/3)*3-1」を分かりやすいように入れていますが使用していません。品名の数が3つなので3を入れていますが、数に応じて変更してください。品名のところはsheet1の先頭行の品名を配列として考えてINDEX関数で求めています。

sheet3

A2に「=IF(ROW(A1)>COUNTIF(Sheet2!$D$2:$D$50,0),"",INDEX(Sheet2!A$1:A$50,SMALL(INDEX((Sheet2!$D$2:$D$50=0)*10000+ROW(Sheet2!$D$2:$D$50),),ROW(A1))))」をいれて、右、下にコピーします。

50にしていますが、sheet2の最大行数をいれてください。また、10000のところは件数が多い場合は大きくしてください。

数量がゼロのものを後ろに持ってくるために、ゼロのもの行番号に10000を足しています。小さい順の列でイメージがつかめると思います。また、数量がゼロのものは空白にするようにしています。

ひな形があったほうが変更しやすいと思いますので、ダウンロードできるようにしておきます。

excel

Posted by eightban