Excel VBAで行のコピーと分割を行う方法

このQ&Aのポイント
  • Excel VBAを使用して行のコピーと分割を行う方法について教えてください。具体的には、(数量) > (マスタ) の場合に、(数量) / (マスタ) 分の行をコピーし、さらに(B列の(数量)) も(マスタ) 以下になるように分割する方法を教えてください。
  • データの位置が変わった場合に、修正する方法も教えてください。
  • ExcelのVBAを使用して、一括で行のコピーと分割を行う方法について教えてください。
回答を見る
  • ベストアンサー

EXCEL VBA について教えてください。

EXCEL VBA について教えてください。 先ほど質問した内容ですが、補足ができなかったので、再度質問しています。 条件を満たす行をコピー(挿入)さらに(数量)を分割する場合 下記のデータで , (品名 ) , (数量) , (マスタ) , (A/B) , A , B , C , D 1 , 商品1 , 1000 , 2000 , 0.5 2 , 商品2 , 3000 , 1000 , 3 3 , 商品3 , 3000 , 2000 , 1.5 4 , , , , 5 , , , , 6 , , , , このように(数量)>(マスタ)の場合に(数量)/(マスタ)分を行コピー(挿入)して , (品名 ) , (数量) , (マスタ) , (B/C) , A , B , C , D 1 , 商品1 , 1000 , 2000 , 0.5 2 , 商品2 , 1000 , 1000 , 1.0 3 , 商品2 , 1000 , 1000 , 1.0 4 , 商品2 , 1000 , 1000 , 1.0 5 , 商品3 , 2000 , 2000 , 1 6 , 商品3 , 1000 , 2000 , 0.5 さらにB列の(数量)も(マスタ)以下になるように分割する。 単に行のコピーだけなら自分でもできるのですが。。。これはさっぱりです。 どうか教えてください。 また、データの位置が変わった場合、どこを修正すればよいでしょうか? 例) 品名:P列 数量:R列 マスタ:AR列 よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

>A,B,C,D >1,商品1,1000,2000,0.5 >2,商品2,3000,1000,3 >3,商品3,3000,2000,1.5 これがホントは  …P   Q R   …AR 1 商品 … 数量  マスタ  2 商品1  1000  2000 3 商品2  3000  1000 4 商品3  3000  2000 とかだったという事でしょうか。(それは「補足」じゃなく嘘情報を正しただけに見えます。それなら手抜きでABCD列の説明をコピーするんじゃなく,実はこうでしたと最初から書き直すべきじゃないでしょうか) OFFSETの位置を丁寧に数えて合わせていけばそのまま出来ますが,それすらめんどくさいなら次のようでも良いです。 Sub macro1()  Dim h As Range  Set h = Range("R2")  Do Until h = ""   If h > cells(h.row, "AR") Then    h.EntireRow.Copy               h.Offset(1).entirerow.Insert             h = cells(h.row, "AR")       h.Offset(1) = h.Offset(1) - h    End If   Set h = h.Offset(1)  Loop  Application.CutCopyMode = False End Sub #それと。 ご相談を投稿し直したのでしたら,前のご質問投稿は解決して閉じる操作を行い,マルチポストを解消しておいてください。

その他の回答 (1)

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

例でいうE列の右も活用して、 「2,商品2,3000,1000,3」 を 「,商品2,3000,1000,3 2,商品2,1000,1000,1.0 商品2,1000,1000,1.0 商品2,1000,1000,1.0」 にさせることをまず考えてみたらどうですか?。 商品3との間に挿入させようとするからややこしい。 2段階に分けて、商品3の後に追加しやすい形をとって、あとで並べ替え。 --------------- 補足) 質問の提供データもサンプルレベルと思うので、 ここに限らず、 回答コード例なんかはそっくりそのまま必要としているシステムに使えるかどうかは なんとも言えません。 質問者にて組み込み導入のための修正は最低限必要と思います。 列が変わっても大丈夫か、くらいは質問者にて理解の上確認してもらえると助かります。 何やっているかが分かればどこ直すかは見えてくるものですが・・・。 それも分からず使うのは保守できなくなります。

関連するQ&A

  • EXCEL VBA について教えてください。

    EXCEL VBA について教えてください。 条件を満たす行をコピー(挿入)さらに(数量)を分割する場合 下記のデータで , (品名 ) , (数量) , (マスタ) , (A/B) , A , B , C , D 1 , 商品1 , 1000 , 2000 , 0.5 2 , 商品2 , 3000 , 1000 , 3 3 , 商品3 , 3000 , 2000 , 1.5 4 , , , , 5 , , , , 6 , , , , このように(数量)>(マスタ)の場合に(数量)/(マスタ)分を行コピー(挿入)して , (品名 ) , (数量) , (マスタ) , (B/C) , A , B , C , D 1 , 商品1 , 1000 , 2000 , 0.5 2 , 商品2 , 1000 , 1000 , 1.0 3 , 商品2 , 1000 , 1000 , 1.0 4 , 商品2 , 1000 , 1000 , 1.0 5 , 商品3 , 2000 , 2000 , 1 6 , 商品3 , 1000 , 2000 , 0.5 さらにB列の(数量)も(マスタ)以下になるように分割する。 単に行のコピーだけなら自分でもできるのですが。。。これはさっぱりです。 どうか教えてください。

  • エクセル VBA で 教えてください!

    初めて質問させていただきます 初心者で困っています どなたかご教授よろしくお願いします! A列 ____B列______C列 B_____________________ 123 D______________________ 1 D______________________ 2 B______________________456 D______________________ 1 D______________________ 2 D______________________ 3 B______________________789 D______________________ 1 自分はB列にいます(表現が正しいかもわかりませんが) 同じ行で A列の内容が Bだったら隣のCセルの 内容をBセル(自分のいるセル)にコピー Dだったら上の内容(Bの時コピーした内容)をコピーし          行を下へ繰り返し A列のデータが空白まで繰り返す そうして B列を 埋めたいのですが よろしくお願いしたします!       

  • Excelの関数に関して教えて下さい

    パソコンはWindos98です。 ExcelのAシートに     A列    B列    C列    D列    (品名) (ロット) (容量)  (数量) 1行 みかん   123   100g  3 2行 りんご   456   100g  4 3行 ピーチ   789   120g  2 とある場合に新たなBシートの A1のセルに「りんご」と入力した場合に A1 品名 A2 ロット A3 容量 A4 数量 Aシートの2行目のデータをBシートのそれぞれの欄に 自動的に入るという関数はありますでしょうか? ちなみにAシートのりんごのデータは2行目にくるか 3行目にくるかは分からないのでどこの行に入力しても Bシートに反映されるというようにしたいのです。 補足もしますのでどうか宜しくお願いします。

  • Excelでの集計その2

    以前、似た質問をしたものです。下記のケース を、Excel(Excel2000)で作れるでしょうか 次のようなデータが10000件ほどあります。 ------------- (A)--------------------------- 行 商品コード 品名 品番  数量   金額 1 10010005   A商品 A-005  5   1000 2 10010006   B商品 B-006  5   1050 3 10010006  B商品 B-006  6   1100 4 10010007   C商品 C-007  10   100 5 10010008   D商品 D-008   6   60 6 10010009   E商品 E-009   3   300 7 10010010   F商品 F-010  7   700 8 10010010   F商品 F-010   3   300 ------------- (B)--------------------------- 行 商品コード 品名 品番  数量   金額 1 10010005   A商品 A-005  5   1000 2 10010006   B商品 B-006  11   2150 3 10010007   C商品 C-007  10   100 4 10010008   D商品 D-008   6   60 5 10010009   E商品 E-009   3   300 6 10010010   F商品 F-010  10   1000 ------------------------------------------------- (A)のような商品コードが一部同じデータを商品コードをキーにして、数量、金額を集計して(B)のようにしたいのですが、Excelでどのようにしたら出来るでしょうか? よろしくお願いします。

  • エクセルVBAの質問

    お世話になります。 下記の様な表がシート1に有り(行数は日で変動し、大体100から200行位)、F列に数字が有る場合、その行のA列、B列、E列の値をコピーして、シート2のA2からC2に貼付したいのですが、また貼付は、10行ごとに、貼付するスタート位置が変わります。 A2~A11、A16~25、A31~40という具合に10行貼り付けたら次は、5行下からまた続きを貼付ていくイメージです。 どの様な記述をしたら良いでしょうか。ご教示下さいます様宜しくお願い致します。        記 A列  B列  C列   D列   E列   F列 No  品番  品名   地区   数量  236  A6TET  みかん  市川   3本 248  A7TGR  りんご  松戸   5本 273  B9GKT  ぶどう  柏    14本   17 273  A8UFE  すいか  行徳   6本    381  C2ROF  いちご  平井   22本   20

  • エクセル VBA 同じ内容のセルの行を合わせたい

    売上集計表があり、A列に全商品のコードが表示されてます。 毎日の売上商品のデータを商品コード別に数量を入力して同じ内容のセルの行の位置を合わせる作業を毎日行っています。 毎日の売上データはエクセルで集計されたデータを貼り付けて行っています。これをなんとかVBAで処理したいのですが、どうしたらいいのかわかりません。 内容としてはA列に全商品の商品コードが既に入力されています。 月のはじめは、B列とC列に一日の集計データそのまま貼り付けます。 A列の商品コードと同じ商品コードの行に合うまで空白のセルを挿入していきます。 次の日は、D列とE列、その次はF列とG列と右に貼り付けしていきます。 商品コードは約3000件、毎日の集計データ数は約500件です。 どうか教えてください。 完成例)   A列   B列   C列     D列    E列       F列    G列   H列   I列 商品コード    10/1分        10/2分            10/3分       10/4分・・・続く        商品コード 数量   商品コード 数量      商品コード数量 CZ1.000  CZ1.000   10    CZ1.000   20 CZ1.005                                CZ1.010  15   ←セルの挿入で CZ1.010  CZ1.010   30                    CZ1.020 30    下げる作業を CZ1.015                                CZ1.030  10 毎日行ってます。 CZ1.020  CZ1.020   11   CZ1.020    20       CZ1.040  40 CZ1.025 CZ1.030  CZ1.030   11   CZ1.030    10 よろしくお願いします。

  • EXCEL VBAで

    EXCEL VBAで シート1のA2~G2までの列にA,B,C,D~と題名があり、それぞれの下の行には数字が並んでます。シート2のA2~G2までの列にもA,B,C,D~と題名がありますが、ランダムに並んでます。シート1のAの行を、シート2のAの行に、BにはBへという風にコピーをさせるにはどのようにすればよいでしょうか。またシート1A~Gのどれかが欠けている場合もあります。その場合はシート1にあるもののみコピーすることとします。 わかりにくいかも知れませんか、どうかよろしくお願いします。

  • VBA

    エクセルVBAについて教えてください。 シート1 A列   B列   C列   D列   E列    F列 ・・・            商品A  商品B  商品C  商品D・・・ 日付  名前(1)   3           2     1 日付  名前(2)         1     3  ・     ・     ・     ・     ・    ・  ・     ・     ・     ・     ・    ・  ・     ・     ・     ・     ・    ・ シート2 A列   B列    C列    D列    E列 日付  名前(1)   商品A   3               商品C    2               商品D    1 日付  名前(2)   商品B    1               商品C    3 ・      ・      ・      ・  ・      ・      ・      ・ ・      ・      ・      ・      上記のような、エクセルで作ったシート1があります。 これを、シート2のようにコピーしたいと思っています。 商品は20列あり、数字が入っている列と入っていない列があります。 数字が入っている列の商品と数字をコピーして、すべてコピーが 終わったら次の行のコピーしていく。 行は100ほどあります。 よろしくお願いします。

  • エクセルで表の相違確認をVBAでしたい。

    お世話になっております。 下記の様な表がシート1とシート2に有、 シート2がシート1と比較して、行が多かったり、または 数量だけが変わっていたり、行が減っていたり、 表の行数は100から200行くらいあるので、VBAでどこが 違うかをすぐ分かる様に確認したいと思っています。 下記の表はあくまでも例ですが、実際は同じNO・同じ品番・同じ品名・同じ数量で複数行あったりします。 どの様に記述していいか分からなく、ご教示下さいます様宜しくお願い致します。    記 A列  B列  C列   D列   E列    No  品番  品名   地区   数量  236  A6TET  みかん  市川   3本 248  A7TGR  りんご  松戸   5本 273  B9GKT  ぶどう  柏    14本 273  A8UFE  すいか  行徳   6本    381  C2ROF  いちご  平井   22本

  • エクセルで一行毎、一枚づつ自動でプリントアウトしたいです。

    エクセルで一行毎、一枚づつ自動でプリントアウトしたいです。      A列   B列 5行目  品名   数量  6行目  商品A   1 7行目  商品B  45 8行目  商品C   6 9行目  商品D   0 10行目 商品E   8 11行目 商品F   0  :    :    :  :    :    : 現在は Sheet1に上のような表があり Sheet2に製品明細の雛型がたくさん作ってあり、 品名と数量をSheet1から参照し入力された状態になっており 数量が0のもの以外を選択して手動で印刷しています。 今後は 製品明細の雛型は1つで 製品明細を1行毎を1枚に印刷し 数量が0のものは印刷しないように自動でできるようにしたいです。 どのようなマクロを作れば良いのでしょうか?

専門家に質問してみよう