- ベストアンサー
Excel VBAで行のコピーと分割を行う方法
- Excel VBAを使用して行のコピーと分割を行う方法について教えてください。具体的には、(数量) > (マスタ) の場合に、(数量) / (マスタ) 分の行をコピーし、さらに(B列の(数量)) も(マスタ) 以下になるように分割する方法を教えてください。
- データの位置が変わった場合に、修正する方法も教えてください。
- ExcelのVBAを使用して、一括で行のコピーと分割を行う方法について教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>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)
例でいう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の後に追加しやすい形をとって、あとで並べ替え。 --------------- 補足) 質問の提供データもサンプルレベルと思うので、 ここに限らず、 回答コード例なんかはそっくりそのまま必要としているシステムに使えるかどうかは なんとも言えません。 質問者にて組み込み導入のための修正は最低限必要と思います。 列が変わっても大丈夫か、くらいは質問者にて理解の上確認してもらえると助かります。 何やっているかが分かればどこ直すかは見えてくるものですが・・・。 それも分からず使うのは保守できなくなります。