戻る  □一般操作のサロン  □ 使用方法  □ 新着記事  □ 新規に質問する!  □ トピック一覧  □ 検索  □ 過去ログ
[ 最新記事及び返信フォームをトピックトップへ ]
このトピック参照回数 :
増えた行に数式コピーをする方法(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


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [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


      この記事にはVBAのコードが含まれています。

      緑の太文字→注釈
      茶色の太文字→条件分岐
      赤の太文字→ループ
      青の太文字→その他




    [194666] Re[6]: 増えた行に数式コピーをする方法(VBA構文)-

    解決!!ありがとうございました! / 記事引用/メール受信=OFF■

    □投稿者/ 更紗 -(2022/01/22(00:52))
    □U R L/

      半平太さん

      本日もご返信が遅くなり失礼しました。追記構文まで丁寧に記載していただき連日感謝申し上げます。

      お陰様で両方ともスムーズに動き、結果としては2度目に教えていただいた

      ★マクロ後に実行

      の方をそのまま利用させていただきます。

      最終行を取得する、ということは理解していたのですが、で上のセルの数式を空白全部に入れる・・・><・・一体どう構文を組めばいいの?という入口部分から指が止まってしまって。

      丁寧に教えていただいた内容で、なるほど!と理解できました。
      勘を掴んで構文入力する幅を広げていきたいと思います。

      本当に本当に助かりました。

      今後もまず自分で試行錯誤しながら取り組み
      もしまたどうしても解決できないことが発生しましたら、
      こちらに入れさせていただくことがあるかもしれません。
      いえ、恐らくまだまだあるはずです。

      見かけました際はまたよろしくお願いします。




このトピック内容の全ページ数 / [0]

このトピックに書きこむ
Name/
E-Mail/

└>このツリーのレス記事をメールで受信しますか? YES/ NO/
Title/
URL/
Comment/ 通常モード->  図表モード-> (←の場合適当に改行を入れて下さい)
タグが使用できます。例 ⇒ <font color="blue">文字</font>
解決!!ありがとうございました! 解決       保留中です・・・ 保留        迷宮入りorほかあたって見ます・・ 迷宮入       すいませ〜ん。誰か〜! Help! ←※回答者専用
解決したらチェック       保留(コードテスト中など・・)         解決不可orレスが全く付かなくてほかのサイトに行くときなど・・
削除キー/
(半角8文字以内) 


- Child Forum -
Edit:ゆう-G