- ベストアンサー
Excelでこれできますか??(関数)
こんにちは 初めて質問させていただきます。 Excelで下のようなファイル(csvもしくはxls)があるのですが、 列1) 列2) 商品名 個数 商品1 5 商品2 4 商品3 3 商品4 10 本ファイル(シート)から 商品1 商品1 商品1 商品1 商品1 商品2 商品2 商品2 商品2 商品3 商品3 商品3 商品4 商品4 商品4 商品4 商品4 商品4 商品4 商品4 商品4 商品4 のように列1)の内容を列2)の個数分縦に並べたいと考えております。 関数等で簡単にできる方法ありませんか? どうぞよろしくお願いします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
「関数等で簡単にできる方法」とはいいかねますが、下記で出来ます。 (例データ)Sheet1のA1:B6(C,D列は関数を入れた結果を先回りして、出しているもの) A列 B列 C列 D列 商品名 個数 0 1 商品1 5 5 2 商品2 4 9 3 商品3 3 12 4 商品4 10 22 5 商品5 2 24 6 99 7 (関数式:1)Sheet1のC2(C1ではない)に =SUM($B$2:B2)を入れ、C6まで下方向に複写。 結果は上記のとおり。累積個数が出る。C1に0を入れる。VLOOKUP関数のTRUE型利用のため。 D1に=ROW()といれ、縦方向に複写する。結果は上記D列の通り。行番号である。 C列「99」のところは、最下行数を超える大きな数を入れておいてください。 (関数式:2)Sheet2のA1に =OFFSET(Sheet1!$A$1,VLOOKUP(ROW(A1)-1,Sheet1!$C$1:$D$6,2,TRUE),0)を入れ、「Sheet1のデータ最下行の累積個数(C列)の行」まで下方向に複写する。 (結果) 商品1 商品1 商品1 商品1 商品1 商品2 商品2 商品2 商品2 商品3 ・・ 商品4 商品5 商品5 となります。 Sheet1のC列とD列の表より、Sheet2のこの行は、Sheet1の何行目を持ってくるか、判別できています。 Sheet1でB列の個数をSheet2にもってきたい場合は =OFFSET(Sheet1!$A$1,VLOOKUP(ROW(B12)-1,Sheet1!$C$1:$D$6,2,TRUE),1)とA列の式の最後の引数を0->1にすればもってこれます。Sheet1にC列データがあっても同じ要領。
その他の回答 (2)
- saru5
- ベストアンサー率34% (41/118)
一般的にはピボットテーブルを使うのが便利だと思います。ここでご説明するのは困難なので、市販のテキストを参考にしてみてください。
お礼
ピボットも始めに挑戦しては見たのですが・・・ わたくしの持ってる知識ではできなかったんです(泣) また勉強しなおします。ありがとうございました。
- hakone
- ベストアンサー率54% (40/73)
作業列を使わずにやろうと思ったのですが、 だいぶ複雑になりそうなので、作業列を使いました・・・ あいている列(ここでは仮にC列)の「2行目に」 =SUM(B$2:B2) と書いて、下のほうにコピーします。 (累計を計算しています) 一列に並べたい最初のセルに、 =IF(ROW(A1)>MAX(C:C),"",INDEX(A:A,IF(ROW(A1)-1<MIN(C:C),1,MATCH(ROW(A1)-1,C:C))+1)) と書いて、下のほうにコピーします。
お礼
素早い回答ありがとうございました。 とても簡単にできる関数ですね、気付きませんでした。とても参考になりました。感謝いたします。
お礼
とても参考になりました。早速やってみたところ うまくいきました。本当にありがとうございました。 この関数は自分ではとても思いつきません。勉強になりました。