• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセルのマクロで全シ-ト複数条件検索)

エクセルのマクロで全シート複数条件検索

real beatin(@realbeatin)の回答

回答No.1

こんにちは。 ' ' /// Sub ReW9090316a() Dim wksDst As Worksheet Dim rngF As Range, rngK As Range, c As Range Dim cn As Long   With Worksheets     Set wksDst = .Add(After:=.Item(.Count)) ' 新しいシートを追加して変数に格納   End With   With Worksheets("Sheet3") ' 検索条件が設定されているシート名を正確に。""を忘れずに     Set rngK = .Range("B2:B" & .Cells(Rows.Count, "B").End(xlUp).Row)   End With   Worksheets(Array("Sheet1", "Sheet2")).Select ' 検索対象シート名をArray関数内に列挙。""を忘れずに   Columns("B").Select   For Each c In rngK ' 検索条件範囲を For Each で総当たりループ ' ' 検索     Set rngF = Selection.Find( _       What:=c, After:=ActiveCell, _       LookIn:=xlValues, LookAt:=xlWhole, _       SearchOrder:=xlByRows, SearchDirection:=xlNext)       cn = cn + 1     If rngF Is Nothing Then ' 見つからなければ       c.Copy Destination:=wksDst.Cells(cn, 2)     Else          ' 検索にヒットしたら       rngF.EntireRow.Copy Destination:=wksDst.Cells(cn, 1)     End If   Next   wksDst.Select End Sub ' ' /// 検索条件範囲を For Each で総当たりループしてそれぞれのキー毎に検索。 事前に複数の検索対象シートを作業グループにしておいて、 検索対象シートすべてのB列 を同時に選択状態にしておく。 検索にヒットしたら、行ごとコピペ、 見つからなければ、検索条件のセルをB列にコピペ。 特に指示がありませんでしたので、 重複はない、という扱いをしています。 以上、 色んな方法がありますけれど、 易しいExcel一般機能の組合わせだけで書いています。 手作業の工程をVBAに書き起こしたようなものなので、 処理内容は比較的イメージし易いのではと。 ちなみに、データの統合作業の必要が想定される場合は、 各シートに共通のタイトル行を設けておくのが、データ管理の常道です。 タイトル行があれば、もっと色々な方法が選べますし、 ループしなくてももっと簡単に速く出来ると思いますし、 回答者としても手助けし易くなります。 今後のこととして、もしもシート設計を見直しされるような場合は、 改めて別件の質問としてお訊ねください。 以上です。

loockatme
質問者

お礼

回答が遅れ申し訳ありません。 とても迅速かつ、言葉足らずの質問内容で 私のやりたかった動作を表現してくださり感謝しています。 ありがとうございました。

関連するQ&A

  • エクセルマクロ 表のタイトルを削除するには?

      A    B       C       D 1  氏名   スコア     氏名    スコア 2  山田さん  100    三谷さん   95 3 加藤さん   50     後藤さん  100   4 佐々木さん  25     鈴木さん   49  このようなデータがあり、これを   A    B       C       D 1  氏名   スコア     氏名    スコア 2  山田さん  100    三谷さん   95 3 加藤さん   50     後藤さん  100   4 佐々木さん  25     鈴木さん   49                    山田さん  100                        加藤さん   50                         佐々木さん  25 のように、隣の表のしたに付け足したいです。その時、「氏名、スコア」のタイトルの行を削除したいです。 どのような手順が一番シンプルなマクロとして記述できるでしょうか。 なお、下に付け足した元の表はそのまま残しておきたいです。 よろしくお願いいたします。  

  • エクセルの同じ名前をカウントする方法

    エクセルの同じ名前をカウントする方法 初歩的な質問ですみません。 山田太郎 田中一郎 鈴木三郎 高橋次郎 鈴木三郎 高橋次郎 鈴木三郎 A1のセルにこういった状態で名前が入力されていた場合に 山田太郎 1 田中一郎 1 鈴木三郎 3 高橋次郎 2 となるように同じ名前がいくつあるかをカウントさせ上記のように表示させたいのですが、 どうしたらいいのでしょうか? (同じシートでも、別のシートでもどちらでも構いません) 至急お答えいただけるとありがたいです。 よろしくお願いします。 

  • エクセル・マクロで書式変更したい!

    エクセルのシートに以下のようなデータがあります。 VBAで、B列が「男」ならば、A列セルの山田・佐藤・加藤を C列が「書」ならば、A列セルの佐藤・吉田を 各々網掛け表示にする方法を教えてください。   A   B   C  D  E  F 1 山田 男 音 ・ ・ ・ 2 鈴木 女 美 ・ ・ ・ 3 佐藤 男 書 ・ ・ ・ 4 吉田 女 書 ・ ・ ・ 5 加藤 男 美 ・ ・ ・ 宜しくお願い申し上げます。≦(._.)≧

  • エクセル:このような「予定表」を作りたいのです。

    よろしくお願いします。 ◆シート1に5分単位で次のような入力を行います。 職員氏名 顧客氏名 訪問予定時間 終了時間 備考 ------------------------ 山田太郎 鈴木一郎  7:05     8:35   ×× 海川三郎 ○○    ○:○○    ○:○○ 山田太郎 佐藤次郎  9:00    10:15   ▲▲ 川波五郎 ○○    ○:○○    ○:○○  山田太郎 田中六郎 13:00    14:25   □□  ◆シート2に関数でつぎのような表示を出したいのです       7:00 7:30 8:00 8:30 9:00 9:30 ・・・ ------------------------ 山田太郎  7:05~8:35    9:00~10:15・・・         鈴木一郎    佐藤次郎 ・・・         ××       ▲▲  ・・・ ------------------------ ◆シート2の時間もセルの列を5分単位で区切ってセル幅を短くし、該当時間に条件付書式で色をつけるイメージです。 ◆職員数数十名、顧客数数百名で曜日別に作成するため、重くなるのは仕方ありませんが、シート2の作成するための「ヒント」がほしいのです。関数を主体に作成いたしたく、四苦八苦したのですが、どうもうまくできません。ご指導をよろしくお願いいたします。

  • エクセルでの顧客数のカウント

    エクセルで下記のような表を作っています。 A   B       C 日付 顧客名   売上 10/1 山田太郎  1000 10/5 中村次郎  2000 10/10 鈴木三郎  1000 10/22 中村次郎  2000 10/31 山田太郎  1000 この時に、10月1か月の顧客数をカウントしたいのです。 上記であれば、山田太郎、中村次郎、鈴木三郎の3人ということになるはずです。 どのようにすればできますでしょうか。

  • 条件にあった複数データを組合わせて別のセルに表示するには?

    例えば、以下のデータがセルに入っていたとして A列には姓 B列には名 A1:鈴木  B1:一郎 A2:鈴木  B2:次郎 A3:鈴木  B3:三郎 A4:佐藤  B3:あきら A5:佐藤  B3:けんた 同じ姓にあてはまるデータの名を、組合わせて別のセルに表示したいのです。 結果イメージ C1:鈴木  D1:一郎 次郎 三郎 C2:佐藤  D2:あきら けんた このようなことAccessかExcelで出来ますか?

  • 【エクセル】リストの照合について教えてください!!

    sheet1に、下記の様に600件の氏名が書いてあります。 A      B 1     山田太郎  2     鈴木花子 ・・・ 600   佐藤次郎 sheet2に、地域と氏名がずらっと書いてあります。 A      B      C     D    E 東京都   神奈川県   埼玉県   千葉県  茨城県 山田太郎 鈴木太郎 山田花子 佐藤次郎 ・・・ このsheet2の地域を、sheet1のC列に下記の様に入れたいのですが、 どの様に行ったら良いでしょうか? みなさんのお知恵をください!!宜しくお願い致します。 A      B      C 1     山田太郎   東京都 2     鈴木花子   神奈川県 ・・・ 600   佐藤次郎   埼玉県

  • Excel上でのセルの並び替えについて

    Excel2007にて下記作業は可能でしょうか? (シート1) A1   B1   C1   D1 田中  ○   鈴木  △ A2   B2   C1   D2 浜田  ×        A3   B3   C1   D3 後藤  ○   加藤  × ↓ (シート2) A1   B1   C1 田中  ○ A2   B2   C2 鈴木  △ A3   B3   C3 浜田  ×    A4   B4   C4 後藤  ○ A5   B5   C5 加藤  × 上記のとおり別シートに自動で並び変える数式はあるのでしょうか? データの量が多いのと、Excelの操作ができない人用に自動化したいのですが。

  • Excelでのセルの検索

    セルの検索方法について、質問します。 現在の表       A    B      C     D --+-------+-------+-------+-------+------+-------+------- 1   鈴木   加藤   斎藤    --+-------+-------+-------+-------+------+-------+------- 2   佐藤   清水         --+-------+-------+-------+-------+------+-------+------- --+-------+-------+-------+-------+------+-------+------- 3   山田              --+-------+-------+-------+-------+------+-------+------- 理想形       A    B      C     D --+-------+-------+-------+-------+------+-------+------- 1   鈴木   加藤   斎藤   斎藤 --+-------+-------+-------+-------+------+-------+------- 2   佐藤   清水         清水 --+-------+-------+-------+-------+------+-------+------- --+-------+-------+-------+-------+------+-------+------- 3   山田              山田 --+-------+-------+-------+-------+------+-------+------- 上記のような表(現在の表)で、D列に空白セル以外の一番右のセルを探して表示できるような関数を探しているのですが?。 仕事で進捗表の作成を行っており、困っていますのでよろしくお願い致します。

  • エクセルVBA 複数の条件を含む対象を抜き出す。

    エクセルVBAについて質問です。 エクセルのバージョンは2003と2007を主に使用しています。 下記の様なデータがあるときに、部活が「野球」でかつクラブは「囲碁」に入っている生徒の学籍番号を別のシート(Sheet2)のB3から下に順にリスト化するマクロがどうしても出来なくて困っています。 find next等を使うのでは無いかと色々してみましたが上手く出来ない現状です。 <sheet1>    A      B      C       D    E 1 学籍番号 学年    名前     部活   クラブ 2 2222222   1    山田 太郎   野球   囲碁 3 9854923    2   吉田 次郎   剣道   絵画   4 1111111    3   佐藤 三郎   野球   囲碁 5 8888883    1   米山 権蔵   卓球   囲碁