増えた行に数式コピーをする方法(VBA構文) | |
---|---|
[194648] 増えた行に数式コピーをする方法(VBA構文)- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ 更紗 -(2022/01/19(23:21)) □U R L/ VBA初心者です。初めてこちらのサロンに伺いました。 ルール等、勝手違いな入力等あればご容赦ください。 今手掛けているVBA操作において、以下手動フローをVBAにしたいのですがどのように構文を作成するのかがどうしても理解できずちょっとパンクしています。。 本来ならきちんと構文を記載する事が質問として当然の姿かと思いますが リリースまで数時間・・という矢先になぜかここだけができていないことが判明しました。 礼儀もわきまえず申し訳ありませんが助けていただけらありがたいです。 何をやりたいかというと・・順番に説明します。(やりたい箇所は★の部分) ○以下のような表があるとします。 行 A列 B列 C列 D列 E列 F列 1 No. 担当者 タイプ CODE 店舗名 店長名 2 10001 佐藤 LL JB-1001 東京 沢村 3 10002 鈴木 MK JB-1002 東海 大下 4 10003 松本 OP JB-4002 東北 葛見 5 10004 大和 QR JB-3356 中京 森下 6 10005 杉浦 BOX JB-4147 九州 佐波 ○E列・F列にはあらかじめ数式が入っている(E1〜E5、F1〜F5) ○A〜D列は別ブックからデータをコピペ(毎週増える)*ここは構築済。 行 A列 B列 C列 D列 E列 F列 No. 担当者 タイプ CODE 店舗名 店長名 1 10001 佐藤 LL JB-1001 東京 沢村 2 10002 鈴木 MK JB-1002 東海 大下 3 10003 松本 OP JB-4002 東北 葛見 4 10004 大和 QR JB-3356 中京 森下 5 10005 杉浦 BOX JB-4147 九州 佐波 6 10006 山本 LL JB-1001 7 10007 岩城 LL JB-1001 8 10008 上野 QR JB-3356 9 10009 佐久良 BOX JB-4147 10 10010 川崎 MK JB-1002 ★やりたいこと★ 別ブックからコピペしてきて増えた行(6行目〜10行目)の E列、F列の空白部分をひとつ上の行(5行目の『九州』『佐波』の部分)の数式をコピーして貼り付け。 ------------------------- 色々調べると、 ○別の列で最終行を取得してOFFSETなどで右移動してコピペ、などの記載が 該当なのだろう、と試行錯誤してみたものの・・・いまいちよく理解できず。 オーソドックスな構文で十分です、教えていただけたら本当にありがたいです。 よろしくお願いします。 ++++++++++++++++++++ OS ⇒OTHER Version⇒OTHER ++++++++++++++++++++ |
[194649] Re[1]: 増えた行に数式コピーをする方法(VBA構文)- ■記事引用/メール受信=OFF■ □投稿者/ ラミパス -(2022/01/20(00:28)) □U R L/ 任意の指定したセルに張り付けるには、PasteSpecialを使います。 |
[194650] Re[2]: 増えた行に数式コピーをする方法(VBA構文)- ■記事引用/メール受信=OFF■ □投稿者/ 更紗 -(2022/01/20(01:55)) □U R L/ 深夜のご返信ありがとうございます。 最終行取得してpasteSpecial…勘を掴むまでが難しいです。頑張ります。本当に有難うございます。 |
[194651] Re[3]: 増えた行に数式コピーをする方法(VBA構文)- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/01/20(09:07)) □U R L/ VBA初心者が数時間では無理でしょう。 ロジックとしては、 1.A:Dに異動があったら発動する。イベントなのでシートモジュールに書く(標準モジュールではない) 2.A列の最終行のE列にデータがない場合に発動する。(データがあれば発動は中止する。新規貼付けではないので) 3.E列の最終行が1行目の場合は、発動を中止する(数式が入ってないので) 4.E:Fの最終行をコピーして、「E列の最終行の次行のセル」〜「A列の最終行のF列のセル」(計2列)に数式を貼り付ける Private Sub Worksheet_Change(ByVal Target As Range) Dim lastA As Range Dim lastE As Range If Not Intersect(Target, Range("A:D")) Is Nothing Then 'A:Dに異動があったら Set lastA = Cells(Rows.Count, "A").End(xlUp) If lastA.Offset(, 4) = Empty Then 'E列が空白なら Set lastE = Cells(Rows.Count, "E").End(xlUp) 'E列の最終セルを取得 If lastE.Row > 1 Then '2行目以上の場合に処理する lastE.Resize(, 2).Copy 'E:Fの空白エリアに数式を貼付け Range(lastE.Offset(1), lastA.Offset(, 5)).PasteSpecial _ Paste:=xlPasteFormulasAndNumberFormats, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False lastE.Select End If End If End If End Sub |
[194658] Re[4]: 増えた行に数式コピーをする方法(VBA構文)- ■記事引用/メール受信=OFF■ □投稿者/ 更紗 -(2022/01/20(22:55)) □U R L/ ご返信が大変遅くなり失礼しました。 お察しのとおり流石に数時間では…だったので、本日はマクロ実行後にこの部分だけ手動対応してもらいました。 ありがとうございます(泣)本当に有難うございます!。 本日は平行している別業務も過渡期で。 こんな時間になってしまいましたが、明日上記構文使用させて頂きます。 また、こちらに結果報告入れます。感謝です。 |
[194660] Re[5]: 増えた行に数式コピーをする方法(VBA構文)- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2022/01/20(23:28)) □U R L/ >本日はマクロ実行後にこの部分だけ手動対応してもらいました。 マクロ実行後にこの処理をすればいいのであれば、イベントプロシージャにする必要はないです。 つまり、シートモジュールに書かず、標準モジュールに書いてください。 そちらのマクロを実行した後、最後にこのfillFormulaを実行してください。 Sub fillFormula(ByVal Wsh As Worksheet) Dim lastA As Range Dim lastE As Range With Wsh Set lastA = .Cells(.Rows.Count, "A").End(xlUp) If lastA.Offset(, 4) = Empty Then 'E列が空白なら Set lastE = .Cells(.Rows.Count, "E").End(xlUp) 'E列の最終セルを取得 If lastE.Row > 1 Then '2行目以上の場合に処理する lastE.Resize(, 2).Copy 'E:Fの空白エリアに数式を貼付け .Range(lastE.Offset(1), lastA.Offset(, 5)).PasteSpecial _ Paste:=xlPasteFormulasAndNumberFormats Application.CutCopyMode = False lastE.Select End If End If End With End Sub 呼び出す際、対象のワークシートを引数に渡す必要があります。 呼び出す例:シート名が「Sheet1」の場合 ↓ >Sub test() fillFormula Worksheets("Sheet1") >End Sub |
[194666] Re[6]: 増えた行に数式コピーをする方法(VBA構文)- ■ / 記事引用/メール受信=OFF■ □投稿者/ 更紗 -(2022/01/22(00:52)) □U R L/ 半平太さん 本日もご返信が遅くなり失礼しました。追記構文まで丁寧に記載していただき連日感謝申し上げます。 お陰様で両方ともスムーズに動き、結果としては2度目に教えていただいた ★マクロ後に実行 の方をそのまま利用させていただきます。 最終行を取得する、ということは理解していたのですが、で上のセルの数式を空白全部に入れる・・・><・・一体どう構文を組めばいいの?という入口部分から指が止まってしまって。 丁寧に教えていただいた内容で、なるほど!と理解できました。 勘を掴んで構文入力する幅を広げていきたいと思います。 本当に本当に助かりました。 今後もまず自分で試行錯誤しながら取り組み もしまたどうしても解決できないことが発生しましたら、 こちらに入れさせていただくことがあるかもしれません。 いえ、恐らくまだまだあるはずです。 見かけました際はまたよろしくお願いします。 |
このトピックに書きこむ |
---|