• 締切済み

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

(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/17068)
回答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

  • EXCELのマクロで条件2つでの合計

    現在シート1に以下のようにあります。 sheet1   A    B    C   D   E 1 品名  日付  担当 個数 チェック 2 いちご 1/10  伊藤 10   ○ 3 りんご 1/15  山田  2   ○ 4 ばなな 1/10  伊藤  5   × 5 いちご 1/20  伊藤  10  △ 6 いちご 1/7   山田  5   ○ 7 ばなな 1/8   江口  5   △ 8 りんご  1/4  江口  4   ○ 9 りんご  1/18 伊藤  5   ○ 10 ばなな  1/8  伊藤  6   × 11 いちご  1/20 江口  4   ○ これを以下のようにシート2にしたいです。 sheet2   A    B    C   D   E 1 品名  日付  担当 個数 チェック 2 いちご 1/10  伊藤  20  ○ 3 りんご 1/15  山田  2   ○ 4 ばなな 1/10  伊藤  11  × 6 いちご 1/7   山田  5   ○ 7 ばなな 1/8   江口  5   △ 8 りんご  1/4  江口  4   ○ 9 りんご  1/18 伊藤  5   ○ 11 いちご  1/20 江口  4   ○ 条件は、「品名」と「担当」が同じならば個数を合計してシート2にコ記すということです。 また、「日付」と「チェック」は照合した一番上の行の「日付」と「チェック」になります。 例えば、2行目と5行目は「いちご」と「伊藤」で同じなので合計を10+10で20にします。 「日付」と「チェック」は2行目の方が上なので「1/10」と「○」になります。 以上をマクロでやりたいです。 マクロの勉強中なので色々なやり方を知りたいです。 よろしくお願いします。

  • EXCELのマクロで。。。

    シートAのセルC2の値(数字)を シートBのE、F、Gの各列のうち空いている一番左のセルで、かつ、D列に何か書いてある一番下の行のセル に転記したいです。 たとえば、シートBが図のような場合にはF28です。これが毎回、変化します。 マクロの記述を教えて下さい。よろしくお願い致します。

  • 別シートの行を選択し対象列を転記するマクロ

    シート2のA~F列までデータがあります。 行数は10,000行です。(月ごとに100行くらい追加されます。) A列は項目がNO.で半角数字が連番で入力されてます。 セルA2→1 セルA3→2 セルA4→3 . . . セルA10000→9999 セルA10001→10000 という感じです。 シート1の セルI9に番号を入力すると シート2のその番号の行のB~F列の値を シート1のJ9~N9列に転記したいです。 例えば シート1のセルI9に100と入力したら、 シート2のA列が100と入力されているセルはA101ですから 101行目となります。101行目の各列の値を転記します。 ↓ シート1のセルJ9にシート2のセルB101の値を転記 シート1のセルK9にシート2のセルC101の値を転記 シート1のセルL9にシート2のセルD101の値を転記 シート1のセルM9にシート2のセルE101の値を転記 シート1のセルN9にシート2のセルF101の値を転記 シート1もシート2もセルの書式設定は標準。 B,E,F列は半角英数字の組み合わせで C,D列は半角数字のみです。 たまにF列に空白がある行があります。 B,F列は数字のみの場合もあります。 B,C,D,F列は数字のみの場合 「数値が文字列として入力されています」 となっています。 マクロで行いたいのですが記述そのものを教えてください。

  • エクセルVBA シート1からシート2へ転記したい

    シート1のデータはそのままで、 シート2に編集して転記したいです。 シート1にはA列からI列までデータが入っています。 行数は都度変わりますがデータは3行目から始まり 大体500行くらいです。 転記方法は シート1のD列→シート2のA列 シート1のE列→シート2のB列 シート1のF列→シート2のC列 シート1のC列→シート2のD列 でシート1のD列の値が同じ場合は 転記先のシート2の行数は増やさずにシート1のC列の値を 同じ値のF列内にカンマでつないで転記したいです。 でそのつないだ合計数をシート2のE列に表示したいです。 イメージ C  D    E     F ------------------------ A1 みかん 国内 Sサイズ A3 みかん 国内 Sサイズ D6 みかん 国内 Sサイズ D9 りんご 国内 Mサイズ G7 りんご 国内 Mサイズ F5 バナナ 海外 Lサイズ G1 バナナ 海外 Lサイズ A2 いちご 国内 Sサイズ D8 いちご 国内 Sサイズ F3 いちご 国内 Sサイズ H2 いちご 国内 Sサイズ   ↓ A    B    C      D     E ------------------------------------------- みかん 国内 Sサイズ A1,A3,D6   3←3個 りんご 国内 Mサイズ D9,G7     2←2個 バナナ 海外 Lサイズ F5,G1     2←2個 いちご 国内 Sサイズ A2,D8,F3,H2  4←4個 上記例の場合は元データは11行ですが編集後は4行です。 配列は自力で作成できないので考え方を教えていただきたいです。 構文をそのまま書いていただいても大変助かります。 Do~LoopかFor~Nextで上から順最終行まで処理で シート1からシート2へ転記する構文をかいて D列の値が直前に処理した値と同じ場合は 転記はしないでC列の値を変数1に代入し シート2の該当行のD列も変数2に代入し 変数1&","&変数2で対象行のD列に転記と考えましたが うまくできませんでした。 またシート2のE列の求め方ですが、上記変数1,2に代入した後に 変数3=変数3+1とかの文でカウントし、 その値を転記すればいいのでしょうか? すいません。今日1日頑張ってうまくできず 上手く説明できません。 よろしくお願いします。

  • エクセル のマクロで 複数の表を1つにまとめたい

    エクセル のマクロで 複数の表を1つにまとめたい 下記のようなシートがあります。 Sheet1 A B C E F G I J K 1 日付  品名 数 日付  品名 数 日付  品名 数 2 1/1  みかん 100 1/2 りんご 50 1/1 バナナ 30 3 1/5  みかん 50 1/6 りんご 25 1/7 バナナ 20 4 1/10 みかん 30 1/11 りんご 15 1/10 バナナ 10 5 1/12 りんご 30 1/11 バナナ 10 6 1/13 りんご 50 みかん・りんご・バナナのそれぞれの表をマクロで下記のような1つの表ににまとめたいのですが どのようにしたら良いかご教授お願いいたします。 (初心者なので可能であればマクロ内で’コメント付きで解説いただけると助かります)  M N O 1 日付 品名 数 2 1/1 みかん 100 3 1/1 バナナ 30 4 1/5 みかん 50 5 1/6 りんご 25 6 1/7 バナナ 20 7 1/10 みかん 30 8 1/10 バナナ 10 9 1/11 りんご 15 10 1/11 バナナ 10 11 1/12 りんご 30 12 1/13 りんご 50 うまく説明できないのでイメージ画像を添付いたします。

  • マクロでファイルを選択しデータを引用し編集

    マクロでファイルを選択しデータを引用し編集 マクロを組み込んだエクセルワークブックを 開いて、マクロを起動します。 ファイル選択画面が表示され 使用者がファイルを選択すると そのファイルのデータで以下の編集を行い 終了後は、選択したファイルには手を加えず その選択ファイルは閉じたいです。 ファイル選択メッセージを出す所や 間違ったファイルを選択した場合の回避までは作成済みです。 ファイル選択後の処理をする為のコードを教えてください。 選択したファイルには B~F列にデータが入っています。 最終行数はファイルにより異なりますが2行目からデータです。 F列を検索し、同じ値が合った場合その対象行のB~F列の値を マクロが入ったワークブックのシート名(ERR)の B~F列に転記したいです。 A列には、選択ファイルの対象になった行数を入力する。 同じ値は何種類で何個あるかわかりません。 同じ値が一切ない場合は、全データをマクロが入ったワークブックの シート名(ERR)のB~F列に転記したいです。 (シート名(ERR)が選択したファイルと同じ状態になる) 同じ値があって転記した場合と同じ値が無く 全データを転記した場合で転記終了後にそれぞれ違うメッセージ を表示したいです。 よろしくお願いします。 例(左からB,C,D,E,F列 2行目から9行目 説明の為 , で区切ります B123 , ABC , 777 , A12 , 123 B123 , ddd , 565 , B23 , 124 B128 , XYA , 714 , N12 , 120 B129 , ddd , 565 , B23 , 128 B122 , ABC , 777 , U12 , 127 B127 , ZZZ , 678 , B23 , 123 B125 , ABC , 777 , T12 , 123 B124 , ddd , 424 , 623 , 128 F列の値で 123 が2行目、7行目、8行目 128 が5行目と9行目にある ↓ シート(ERR)に転記 (左からA,B,C,D,E,F列 説明の為 , で区切ります 2 , B123 , ABC , 777 , A12 , 123 7 , B127 , ZZZ , 678 , B23 , 123 8 , B125 , ABC , 777 , T12 , 123 5 , B129 , ddd , 565 , B23 , 128 9 , B124 , ddd , 424 , 623 , 128 例2(左からB,C,D,E,F列 2行目から9行目 説明の為 , で区切ります B123 , ABC , 777 , A12 , 123 B123 , ddd , 565 , B23 , 124 B128 , XYA , 714 , N12 , 125 B129 , ddd , 565 , B23 , 126 B122 , ABC , 777 , U12 , 127 B127 , ZZZ , 678 , B23 , 128 B125 , ABC , 777 , T12 , 129 B124 , ddd , 424 , 623 , 130 F列に同じ値が無いのでシート(ERR)にすべて転記 (左からB,C,D,E,F列 2行目から9行目 説明の為 , で区切ります B123 , ABC , 777 , A12 , 123 B123 , ddd , 565 , B23 , 124 B128 , XYA , 714 , N12 , 125 B129 , ddd , 565 , B23 , 126 B122 , ABC , 777 , U12 , 127 B127 , ZZZ , 678 , B23 , 128 B125 , ABC , 777 , T12 , 129 B124 , ddd , 424 , 623 , 130

  • EXCELマクロで自動改行

    EXCELで、1ページ内で、最後まで書くと自動的に列を折り返すようにマクロを設定したいのですが、完全初心者なので何をどうすればいいのか全く分かりません。明日、職場で使う必要があります。どうか助けて下さい(><) 1ページが60行で、A~Cの列を使って表を作った場合(A:名前、B:年齢、C:生年月日)、数値を入力して、各列の61行目に数値を入力すると、自動的にD~F(D:名前、E:年齢、F:生年月日)の列に折り返して数値が表示されるようにしたいです。大体、3回くらい折り返したいです。記述方法を教えて下さい。

  • エクセル マクロ

    以下の処理を教えて頂ける方がいらっしゃいましたらご教示ください。 A - B - C - D - E 日付 - 商品名 - 単価 - 数量 - 金額 a41 - バナナ - 120 - 10 - 1,200 a42 - みかん - 110 - 20 - 2,200 a42 - りんご - 150 - 10 - 1,500 a42 - バナナ - 120 - 15 - 1,800 a42 - なし - 150 - 20 - 3,000 a51 - りんご - 150 - 30 - 4,500 a51 - バナナ - 120 - 25 - 3,000 a51 - なし - 160 - 20 - 3,200 a52 - りんご - 145 - 35 - 5,075 a52 - みかん - 120 - 40 - 4,800 a53 - バナナ - 115 - 25 - 2,875 上記、シート1のデータが、3000行あります。 A - B - C - D - E 日付 a42 a52 上記、シート2のデータが、150行あります。 A - B - C - D - E 日付 - 商品名 - 単価 - 数量 - 金額 a42 - みかん - 110 - 20 - 2,200 a42 - りんご - 150 - 10 - 1,500 a42 - バナナ - 120 - 15 - 1,800 a42 - なし - 150 - 20 - 3,000 a52 - りんご - 145 - 35 - 5,075 a52 - みかん - 120 - 40 - 4,800 シート3に上記データのように抽出するには、どうすればよろしいでしょうか。 オートフィルタで,抽出後、抽出範囲をシート3にコピー貼り付けを繰り返しているのですが、もっといい方法(VBA)で、できませんでしょうか。

  • エクセルにて複数セルの並び替え

    こんにちは、エクセルについて教えてください。列はA~Hまで、行は1~200行ほどに値が入っています。 例えばValueが以下のようだとします。 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 ... これらのValueを、別のSheetに以下のように並び替えたいのですが、 A1 B1 C1 D1 E1 F1 G1 H1 A2 B2 C2 D2 E2 F2 G2 H2 A3 B3 ...と、これがA200~H200の行分まで。なのでPaste後は800行になります。どうにかマクロか何かで簡単に 出来ないかと思い、どなたかご教授いただければと思います、よろしくお願いします!

  • マクロを教えてください

    CSVファイルで、     A    B    C    D    E   F 1 444  あああ  123  けけけ 2 555  いいい  456  かかか 3 666  ううう  000        4 山   5 川 上記のようなCSVファイルで3行目のC列には0・D列はブランクです。 そこで3行目でD列がブランクのときは、A列をC列に、B列をD列に持ってきて あいたA列には999B列には@@@を入れたいのです。 そしてもうひとつは、A列をE列にコピーをしてF列はE列の数字以外を持ってきたいのです。 結果は   A      B    C    D   E   F 1 444  あああ  123  けけけ  444 2 555  いいい  456  かかか  555 3 999  @@@  666  ううう  999 4 山                    山 5 川                    川 といった結果のマクロを作りたいです。 どなたか教えてください。よろしくお願いします。

専門家に質問してみよう