- ベストアンサー
Excel VBAで複数条件で別シート検索したい方法
- 会社から営業担当者の実績と計画を一覧で確認できる表が欲しいと言われ、Excel VBAを使用して別シートを検索する方法を探しています。
- 計画シートと実績シートのデータを一致させるために、実績シートに計画数量の転記ボタンを配置し、ボタンをクリックすると実績シートのデータを読み取り、該当する計画シートの予定数量を実績シートに表示させたいです。
- 具体的な流れとしては、実績シートの年月や担当者などのキーワードを使用して、計画シートを検索し、該当するデータがあれば実績シートにその数量を入力するというものです。年月や担当者によって表示が変化する部分も考慮しています。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! >例 年月が1305の場合は1-12,13-19,20-26,27-31 とありますが、大の月・小の月に関係なく I~L列を表示すればよい訳ですよね? Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面に 一旦↓のコードをコピー&ペーストしておいてください。 Sub 予定表示() Dim i As Long, endRow As Long, c As Range, wS1 As Worksheet, wS2 As Worksheet Set wS1 = Worksheets("実績シート") Set wS2 = Worksheets("計画シート") Application.ScreenUpdating = False With wS1 endRow = .Cells(Rows.Count, 1).End(xlUp).Row .Range("A:A").Insert With Range(.Cells(2, 1), .Cells(endRow, 1)) .Formula = "=B2&C2&D2&E2&G2&I2" .Value = .Value End With End With With wS2 endRow = .Cells(Rows.Count, 1).End(xlUp).Row .Range("A:A").Insert With Range(.Cells(2, 1), .Cells(endRow, 1)) .Formula = "=B2&C2&D2&E2&G2&I2" .Value = .Value End With End With For i = 2 To wS1.Cells(Rows.Count, 1).End(xlUp).Row Step 3 Set c = wS2.Range("A:A").Find(what:=wS1.Cells(i, 1), LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then c.Offset(, 9).Resize(1, 4).Copy wS1.Cells(i, "J") End If Next i wS1.Range("A:A").Delete wS2.Range("A:A").Delete Application.ScreenUpdating = True MsgBox "処理完了" End Sub 次にコマンドボタンのコードを Private Sub 計画数量の転記_Click() Call 予定表示 End Sub として、コマンドボタンをクリックしてみてください。 お望み通りになりますかね?m(_ _)m
お礼
tom04さん、ご連rなくありがとうございます! 出来ましたぁぁ!! 完璧に出来ました!!! これで会社からリクエストされた事を恐らく全て実現でそうです!本当に1から10まで全てお聞きしてしまって恐縮です・・・ 今回はお忙しいところ毎回毎回ご対応いただきまして、本当になんと御礼を申し上げてよいやら・・です。 本当に助かりましたm(_ _)m 本当に本当にありがとうございました!