- ベストアンサー
エクセルで列を複数行にしたいのですが
注文表を商品ごとに集計したいのですが、商品名・数が列の入っています。これを縦にして集計しようと思っているのですが、列を行する方法を教えてください。 エクセルの表で列A・Bを共通にして列C・Dを次の行に、そして列E・Fを次の行にとしたいのですが、教えてください。 列A 列B 列C 列D 列E 列F 001 ○○会社 商品A 10 商品F 14 001 ○○会社 商品C 11 商品A 20 005 ××会社 商品D 32 商品C 25 これを 列A 列B 列C 列D 列E 列F 001 ○○会社 商品A 10 001 ○○会社 商品F 14 001 ○○会社 商品C 11 001 ○○会社 商品A 20 005 ××会社 商品D 32 005 ××会社 商品C 25 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
マクロでやる方法です。Sheet1に元の表があって、Sheet2に並べ替えた表を作成します。 Alt+F11でVBAの画面を表示し、「挿入」>「標準モジュール」を選択して、右の画面に以下のマクロをコピーして貼り付けてください。 マクロ中に出てくる"Sheet1"、"Sheet2"が実際のシート名と違ったら書き換えてください。 Sub 並び替え() Dim WS1 As Worksheet, WS2 As Worksheet Dim FromRow As Integer, FromCol As Integer Dim ToRow As Integer Set WS1 = Worksheets("Sheet1") '元の表があるシート Set WS2 = Worksheets("Sheet2") '表を並べ替えて転記するシート WS2.Cells.ClearContents For FromRow = 1 To WS1.Cells(Rows.Count, 1).End(xlUp).Row For FromCol = 3 To WS1.Cells(FromRow, Columns.Count).End(xlToLeft).Column Step 2 ToRow = ToRow + 1 WS1.Cells(FromRow, 1).Resize(1, 2).Copy WS2.Cells(ToRow, 1) WS1.Cells(FromRow, FromCol).Resize(1, 2).Copy WS2.Cells(ToRow, 3) Next Next End Sub その画面でF5キーを押すか、F11でExcelの画面に戻ってAlt+F8からマクロを実行してみてください。表が4列ずつになってSheet2に転記されているはずです。 うまく動かない、あるいは意図したのと異なる動作をする場合は補足をお願いします。
その他の回答 (2)
難しく考えないで、こんなのはどうでしょう。 現在ある表をヘッダー部分を除いて、そのまま、コピーして、表の下に付け足し、 付け足した部分のC列、D列の部分に、E列、F列を移動させます。 その上で、A列、B列でソートする。 しかし、このままでは、要求の順番は達成できていません。補助の符号を用意します。 G列に順番を振っておきます。コピーしたものにも同じ番号をつけておきます。 ソートをA列、B列、G列でやれば、目標を達成できます。 手順 (1)G列に通し番号を与える。 (2)A2:G4をコピー、A5をクリックして、ペーストする (3)E列、F列を左に移動させる。E5:F7をドラッグ。 (C列、D列に持ってくるのです) (4)全セルを選択 (5)列A,列B,列Gの優先順序でソートする (6)不要な情報(列E,列F,列G)を削除する 原始的では在りますが、結構手軽だと思います。
お礼
このようなやり方あるんですね、参考になりました。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
質問の表現が不完全。全てB+cとE+Fの2組しかないなら、少し簡単だが、実情はそうではないでしょう。 結構難しい。VBA向きの問題ですね。 簡単のため例データA2:E4に aa x y z u bb s t cc f g h ・・・ とする。 作業列をG列として G1に =COUNTA(B1:F1) と入れてG4まで式を複写 結果 0 4 6 9 累積値が出せる。 もうひとつ作業列をJ列に =MATCH(ROW()-1,$G$1:$G$100,1) と入れてG列の最大値9行まで式を複写する。 J列は 1 1 1 1 2 2 3 3 3 となる ーー K1に =OFFSET($A$2,J1-1,0)と入れて第9行まで式を複写。 L1に =OFFSET($B$2,J1-1,COUNTIF($J$1:J1,J1)-1) といれて第9行まで式を複写。 結果 aa x aa y aa z aa u bb s bb t cc f cc g cc h となる。 商品と数量のペアになった質問の場合は少し修正が必要ですが、息切れしてここまでにします。
お礼
参考になりました どうもありがとうございました。
お礼
ちゃんと転記されました。 マクロ勉強します。 どうもありがとうございました。