Excel VBAで複数条件で別シート検索したい方法

このQ&Aのポイント
  • 会社から営業担当者の実績と計画を一覧で確認できる表が欲しいと言われ、Excel VBAを使用して別シートを検索する方法を探しています。
  • 計画シートと実績シートのデータを一致させるために、実績シートに計画数量の転記ボタンを配置し、ボタンをクリックすると実績シートのデータを読み取り、該当する計画シートの予定数量を実績シートに表示させたいです。
  • 具体的な流れとしては、実績シートの年月や担当者などのキーワードを使用して、計画シートを検索し、該当するデータがあれば実績シートにその数量を入力するというものです。年月や担当者によって表示が変化する部分も考慮しています。
回答を見る
  • ベストアンサー

Excel VBA 複数条件で別シート検索したい

お世話になります。 質問させていただきます。 会社から営業担当者の実績と計画を一覧で確認できる表が欲しい、と言われ格闘しております。 本件が出来ればほぼ完成できそうなので、大変恐れ入りますがどなたか実現方法をご教授いただけませんでしょうか? 添付図のようなシートが2つ(実績、計画)があります。 [計画シート] ・年月、担当者ごとにさらに企業別と商品別に定価と特売で売る数量を一月を4週(第1~4週)に分けて計画した表です。 [実績シート] ・計画シートで計画した数量と実績との差額を見るための表です。 やりたい事・・ 実績シートに[計画数量の転記]というボタンを配置して、このボタンをクリックしたら、実績シートのA2から最終データまでREADして、該当する計画シートの予定数量を実績シートに表示させたいのです。 計画シートの定価販売予定(黄色)--->実績シートの定価販売予定(黄色) 計画シートの特売販売予定(青色)--->実績シートの特売販売予定(青色) 流れとしましては・・ (1)実績シートの[年月]、[拠点]、[担当者]、[CD]、[品番]、[区分]をKEYに、計画シートの中を検索する (企業名と品名はKEYに含めません) (2)計画シートでKEYにマッチしたデータがあれば該当データのI??、J??、K??、L??の各週の計画数量を実績シートのI??、J??、K??、L??に入れ込む 補足 ・年月は1304~1403までです ・添付画像には表示されていませんが各担当者は1304~1403まで12ヵ月分の計画があります ・実績シートのI1、J1、K1、L1は年月によって表示が変化しますので、ここに表示される文字をKEYにはできません。(例 年月が1305の場合は1-12,13-19,20-26,27-31) ・実績シート、計画シートともにデータの構造(並び順)は同じです 分かりづらい説明で申し訳ございません・・・・・ どうかよろしくお願い致します。 環境 Windows XP SP3 Excel2003 以上です。

質問者が選んだベストアンサー

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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

yakkun2338
質問者

お礼

tom04さん、ご連rなくありがとうございます! 出来ましたぁぁ!! 完璧に出来ました!!! これで会社からリクエストされた事を恐らく全て実現でそうです!本当に1から10まで全てお聞きしてしまって恐縮です・・・ 今回はお忙しいところ毎回毎回ご対応いただきまして、本当になんと御礼を申し上げてよいやら・・です。 本当に助かりましたm(_ _)m 本当に本当にありがとうございました!

関連するQ&A

  • EXCEL VBA 条件による行の自動挿入

    お世話になります。 EXCEL VBAを使用して自動で行の挿入処理を実施したいと思っております。 やりたい事は添付図の表1を処理ボタンを押せば自動で表2のようにしたいのです。 表2の黄色部分が自動挿入させたい部分です。 例えば「表2作成」というボタンを押したら・・ [sheet1]にある表1をC1からC??の最終行までREADしてC??の文字列が [定価番販売実績]であれば・・ (1)[定価販売実績]の上の行に[定価販売予定]という行を挿入 (2)[定価販売実績]の下の行に[定価差異]という行を挿入 [得売販売実績]であれば・・ (3)[特売販売実績]の上の行に[特売販売予定]という行を挿入 (4)[特売販売実績]の下の行に[特売差異]という行を挿入 という作業を全商品に対して実施したいのです。 図では3商品ですが実際には変動ですが100~200品位です。 出来上がった新しい表2は別シートに表示できれば最高です! どなたか方法をご教授いただけませんでしょうか? よろしくお願い致します。 環境 Windows XP SP3 EXCEL2003

  • Excel VBA 商品毎に数量差異の自動計したい

    お世話になります。 添付の様なデータがあります。 各商品を4週に分けて週ごとの定価販売数量と特売販売数量を把握しようというものです。 やりたい事・・・ 各商品の定価販売予定と定価実績、特売販売予定と特売実績には数字が入っています。 [計算]というボタンを押したら、緑色セルにある定価販売差異と特売販売差異を求めたいのです。 数式は以下になります。 定価販売差異 = 定価実績 - 定価販売予定 特売販売差異 = 特売実績 - 特売販売予定 恐れ入りますが、どなたかご教授いただけませんでしょうか? よろしくお願い致します。 補足 ・商品数は可変ですが100種類ほどです。 ・各商品は必ず6行((1)~(6))と4列(第1週~第4週)あります。 環境 Windows XP SP3 Excel2003

  • EXCEL VBA 条件による行の自動挿入(2)

    お世話になります。 前回の質問と重なる部分がありますが、EXCEL VBAを使用して自動で行の挿入処理を実施したいと思っております。 やりたい事は添付図の表1を処理ボタンを押すと自動で表2のようにしたいのです。 表1では各商品に"定価"、"特売"という2つの売り区分が表示されます。 各商品の売り区分はブランクはなく、必ず下記の3パターンのうちのどれかが表示されます。 (1)"定価"だけ表示 (2)"特売"だけ表示 (3)"定価"と"特売"両方表示 この表1に対して処理ボタンを押すと・・ 表2では各商品の売り区分に必ず"定価"と"特売"が上下に両方表示されるようにしたいのです。 (添付図の表2参照)。順番も"定価"が上、"特売"が下にしたいのです。 表2は別シートでも同じシートでも構いません。 どなたかお力添えいただけますでしょうか? よろしくお願い致します。 環境 Windows XP SP3 Excel2003

  • エクセル 複数条件 VBA

    VBAと関数の両方を教えていただきたいです。 シート”DATA”に以下の入力フォームがあります。 A列には日付 B1には”りんご”、B2以降には数量 C1には”みかん”、C2以降には数量 D1には”なし”、D2以降には数量 シート”照会”に以下の照会画面があります。 B1には開始日、D1には終了日 A2には”りんご” A3には”みかん” A4には”なし” B2以降はそれぞれの開始日から終了日までの個数が入るようにしたいのです。 例えば、シート”DATA”に毎日10が入力されていて、シート”照会”のB1に1/1、D1に1/3と入力されたら30、B1はそのままでD1が1/10なら100と果物ごとに表示されるようにしたいのですが、どうすればよいでしょうか。 よろしくお願い致します。

  • VBAを使ってセルを検索後別シートのデータを自動入力したいです。

    見ていただきありがとうございます。 エクセルの2000VBAを使って次のようなことを考えています。 シート2に以下のようなデータがあります。 2006/7/20 コード 数量  100  200   200  400 データの数は日によって違います。 シート1には以下の表があります。横軸にはコード縦軸には日付が入っており各対応するセルに数量が入っています。       100  200  300  400 ....←コード 2006/7/1  20  40  100  800 2006/7/2  50  60  200  500   .   .   . 2007/6/30  このような場合、シート2にコマンドボタンを設けて押したときシート2の日付とコード番号によりシート1の表の検索を行って対応するセルにシート2のデータを転記したいのです。シート2のデータは本日分のデータが入った時点でシート1への転記を行います。(1日一回です) また、シート1の表は2007/6/30(これ以降は必要ないので)までの日付がすでに入力されており明日以降のデータの入るセルは空白になっております。 よろしくお願いします。

  • エクセル:別シートの複数ある同じデータを一発検索したい!

    長文ですみません。 家計簿を我流でエクセル管理しています。日々の支出のみのシートは、列に日を、行には摘要、数量、金額、分類、などを入れるスタイルです。日が前後してもあとで並べ替えできるのでどんどん思いつきで羅列しています。 ちなみにブックの構成は、上記の出納帳のようなシートのほかに、そのシートのデータを月別にわけた複数のシートと、携帯電話支払い金額や、保険、教育費、光熱費のそれぞれのシート、収入をまとめたシート、そしてそれらをリンクさせてきてまとめた合計金額シート、などからなっています。ピボットテーブルも月の締めくくりで使っていますが、これとはまた求めるものが違うので・・・。 質問事項は、上記の月別にわけた複数シートから、データの中で何度も出る品名について過去のデータの金額の傾向を調べたいのです。イメージとしては、別の画面上で検索ボタンに目的の品名を入れると、複数のシートから探してきてすべてを一覧表示させていついつに、どんな値段で購入されているかがわかるようにさせたいのです。簡単な関数なら扱えるようになっていますが、教えてください。わかりにくければまた補足いたしましう。よろしくお願いいたします!

  • EXCEL VBA VLOOKUPの様な検索したい

    お世話になります。 質問させていただきます。 添付図の表3を作成したいのです。 やりたい事は・・・ [販売金額]シートに[集計]というボタンを作成して、このボタンがクリックされたら[商品名]と[年月] (2012年4月とか)をKEYに隣の[平均単価]シート参照して、合致する平均単価を該当商品の販売金額の下段に1行挿入して平均単価を表示させたいのです。(図中 表3の緑セル部分) まとめますと・・・ 販売金額シート表1の全データをREADして商品名と年月をKEYに表2に合致した平均単価を探して、見つかれば平均単価を1行挿入して表示して最終的には表1を表3に変化させたい、のです。 補足 商品数は可変ですが1000個程度です。 もし合致する平均単価がなくても該当商品に平均単価フィールドを1行挿入して0円またはブランク表示させたいです。 何度も似たような質問ばかりしてまして申し訳ありませんが、どなたかご教授いただけませんでしょうか? よろしくお願い致します。 環境 Windows XP SP3 Excel2003

  • Excelで1つの条件で複数の値を抽出するVBA

    製造した製品について作業を行うカレンダー予定表を作りたいのですが、 生産計画をマスターシート(Sheet1)として、作業計画(Sheet2)を 以下の画像のように、自動的に抽出する事はできますか? 私は、Excelはあまり詳しい方ではありません。 それなりに色々と調べてはみたのですが、関数では思ったような物ができず、 うまくいきませんでした。 どうかよろしくお願いします。

  • Excelで複数条件を満たすデータを抽出

    以下のような場合の、データ抽出方法を教えてください。 Sheet1 "計画”, Sheet2 "実績”があります。 それぞれのSheetの A~Dには、共通列項目である ”都道府県””都道府県コード””品目””品番” が設定されています。 このふたつのSheetをまとめて、項目順に”計画”データの下に”実績”データがくるようなSheetを作りたいのですが、上記4つの条件が全て共通なデータを、関数等と使って抜出すことはできるのでしょうか? If、VLOOKUP、And、”名前をつける”などを組み合わせて、いろいろ考えてみたのですが、複数条件を満たす結果の抽出ができませんでした。 宜しくお願いします。

  • エクセルで別シートにデータ抽出したい

    一覧表として作成したシートのデータのうち、ある条件のものだけ別シートにデータ抽出するにはどうしたら良いですか? 例えば、 NO. 担当 金額 1  佐藤 200 2  佐藤 100 3  鈴木 200 4  佐藤 400 とある「一覧表」シートのデータから 担当:佐藤のデータだけ抜き出した表を別シート(「個人別」シート)に作成したいのです。 できれば、「一覧表」に新データを追加する度に、「個人別」シートにもデータが自動反映するようなものが望ましいのですが。 そんなことは可能でしょうか? アクセスを使えば簡単にできるかとは思いますが、アクセスがないので、エクセルで代用できればと。 宜しくお願いいたします。

専門家に質問してみよう