• 締切済み

マクロで商品ごとの並び替えで一定の数を超すと改行

(sheet1) A    B 1 りんご   2 2 ばなな 6 3 りんご 3 4 りんご 1 5 ばなな 2 6 ばなな 4  ↓ (sheet2)   A B C D E F 1りんご 2 りんご 3 りんご  1 2ばなな  6 3ばなな 2   ばなな  4 4 5 6 上記のように、sheet1の表がsheet2に転記され さらに、sheet1のB行の個数がsheet2で足して6以下は3列で転記され 6以上になると、次の行に転記される。 ようなマクロを作りたいのですが、教えていただけないでしょうか。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.1

こんな問題は聞く前に書いているとおりにプログラムすれば仕舞いでしょう。 ロジックを考えてみましたか。初心者なら、頭を整理するか、文章(箇条書き・フローチャートなど)にしてみるものだ。 いろんな方法がありえるが、やりやすいのは、商品列でソートして処理を始める方法。ソート法。 それは Sheet2で書き出すセルの行と列を示すj、kの変数を定義する(作る)。書き出すセルはSheet2のCejlls(i,J)で表される。 また、今までの個数(B列の内容が個数だということを質問の始に表示せよ)を保存する変数Xを設ける。 その変数に直前の行までの個数が足されている、変数だ。 2つのシートを扱うので、その区別するため定義する。セルにはその後その区別をかぶせること。 Sheet2の書き出すセルの行・列の数を初期化。j=3,k=1など。 (1)(ソート後のSheet1の)最初のデータ行からデータ最終行dまで以下を繰り返し For Next 行を表す変数は i  とする。 For i=3 To d 処理 Next i (2)まず前の行の商品と今の行の商品が変わったか比較する。 (3)変わったらShee2の書き出すポインターJを+1する。列は1(A列)にする。 そしてSheet2にデータの書き出し。 (4)その変数Xに、この行の個数を足したものが、6以下なら何もせずに、変数Xに足す。 Sheet2にSheet1のいまのデータを書き出し。 次の行の処理に行く (5)6以上なら、シート2の今の行に1行挿入する。jに+1し、Kは1(A列)とする。 Sheet1の今の行のデータをSheetのCells(J,K)に代入し、Xの個数を今の個数にする。 ーーー 2つのシートを扱うので、その区別しての書き方を勉強すること。 ーー 回答をコピーして出来ました、では丸投げで、質問者の勉強にならない。 上記のようなロジックをコードにする練習ぐらいすること。

すると、全ての回答が全文表示されます。

関連するQ&A