データに該当情報がある場合、台帳に書出すコードについて | |
---|---|
[196516] データに該当情報がある場合、台帳に書出すコードについて- ■親トピック/記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2025/04/16(11:22)) □U R L/ 全先台帳シートと年度データがあり、 シートモジュール(Worksheets("全先台帳"))でのコマンドで 下記コードを実行したのですが、うまくいきません どなたかご教示頂ければ幸いです 全先台帳シートのキー=T列 年度データシートのキー=B列 として 全先台帳シートのI列に何も無い場合 年度データシートのI列、K列、L列、M列、N列、O列、P列から 全先台帳シートのI列、J列、K列、L列、M列、N列、O列に それぞれそのセル内容を取り込みたいのです VBAコード内容 Private Sub CommandButton6_Click() V画面更新停止 Application.Calculation = xlCalculationManual V手動計算 Dim Lastrow As Long, r As Long, r2 As Long Lastrow = Cells(Rows.Count, 2).End(xlUp).Row r = 2 r2 = 2 Do Until r > Lastrow If Cells(r, WTW) = Worksheets(W年度データW).Cells(r2, WBW) Then If Cells(r, WIW) = WW Then Cells(r, WIW) = Worksheets(W年度データW).Cells(r2, WIW) Cells(r, WJW) = Worksheets(W年度データW).Cells(r2, WKW) Cells(r, WKW) = Worksheets(W年度データW).Cells(r2, WLW) Cells(r, WLW) = Worksheets(W年度データW).Cells(r2, WMW) Cells(r, WMW) = Worksheets(W年度データW).Cells(r2, WNW) Cells(r, WNW) = Worksheets(W年度データW).Cells(r2, WOW) Cells(r, WOW) = Worksheets(W年度データW).Cells(r2, WPW) End If End If r = r + 1 r2 = r2 + 1 Loop V画面更新再開 Application.Calculation = xlCalculationAutomatic V自動計算 MsgBox W終了ですW End Sub ++++++++++++++++++++ OS ⇒Windows 11 Version⇒Excel 2019 ++++++++++++++++++++ |
[196517] Re[1]: データに該当情報がある場合、台帳に書出すコードについて- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2025/04/19(12:46)) □U R L/ 1.Lastrowを求める列が、全先台帳シートのB列でいいのかどうか。 2.T列とB列にキーがあるとの話なのに、 同一行番号のデータが同じかどうかしかチェックしていないのはちょっと解せない。 |
[196518] Re[2]: データに該当情報がある場合、台帳に書出すコードについて- ■記事引用/メール受信=OFF■ □投稿者/ VBA初心者 -(2025/04/19(15:24)) □U R L/ 半平太さん、ありがとうございます。 >1.Lastrowを求める列が、全先台帳シートのB列でいいのかどうか。 全先台帳シートのB列が顧客NOのキーなので 顧客NOがある行が最後であれば、そこまでと考えました。 >2.T列とB列にキーがあるとの話なのに、 同一行番号のデータが同じかどうかしかチェックしていないのはちょっと解せな>い。 「全先台帳」シートの ユニークキー:T列=B列(顧客NO)+H列(納付月) 「年度データ」シートのユニークキー:B列=D列(顧客NO)+J列(納付月) ここで どちらのシートのI列を検索すると 「全先台帳」シートにはその列以降、I列〜O列まで セル内容が空白の場合が有り、 その場合、「年度データ」のレコードから Cells(r, WIW) = Worksheets(W年度データW).Cells(r2, WIW) 〜 Cells(r, WOW) = Worksheets(W年度データW).Cells(r2, WPW) までを書き出したいのです。 コードをうまく表せず、混乱させてすみません。 ご指導よろしくお願いいたします。 |
[196519] Re[3]: データに該当情報がある場合、台帳に書出すコードについて- ■記事引用/メール受信=OFF■ □投稿者/ 半平太 -(2025/04/19(16:49)) □U R L/ 引き続きよく分からない部分がありますが、 下の様な処理をするのが常識的かと思われます。 Private Sub CommandButton6_Click() Dim Lastrow As Long, r As Long, r2 As Variant, msg As String ’画面更新停止 Application.Calculation = xlCalculationManual ’手動計算 Lastrow = Cells(Rows.Count, 2).End(xlUp).Row r = 2 With Worksheets(”年度データ”) Do Until r > Lastrow If Cells(r, "I") = "" Then r2 = Application.Match(Cells(r, "T"), .Columns("B"), 0) If IsNumeric(r2) Then Cells(r, "I") = .Cells(r2, "I").Value Cells(r, "J").Resize(1, 6) = .Cells(r2, "K").Resize(1, 6).Value Else msg = msg & r & "行目の " & Cells(r, "T") & vbCrLf End If End If r = r + 1 Loop End With ’画面更新再開 Application.Calculation = xlCalculationAutomatic ’自動計算 If msg <> ”” Then msg = "年度データMissing" & vbCrLf & msg MsgBox msg Else MsgBox ”終了です” End If End Sub |
[196520] Re[4]: データに該当情報がある場合、台帳に書出すコードについて- ■ ![]() □投稿者/ VBA初心者 -(2025/04/19(19:41)) □U R L/ 半平太さん 大変ありがとうございました。 うまく動作しました。 まだ、コード内容は理解がおよびませんが、 勉強したいと思います。 いつも大変お世話になりました。 |
このトピックに書きこむ |
---|