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

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

Noubleの回答

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.3

文字を扱っているので やや不安ですが c1に以下の式を入れ 右方向に横にずらっとフィル 縦にもフィル してくださいね。 シート1,シート2,区別無く 横にフィルした件数分だけ キーが重複していても 重複項を表示します。 =if(  sumproduct(    ($B2=Sheet1!$b:$b)+($B2=Sheet2!$b:$b)  )<=int(column((a1)/2)+1  ,""  ,offset(   chooce(    mod(     small(      index(       ($B2=Sheet1!$b:  $b)*(row(Sheet1!$b:$b)+0.01)       +($B2=Sheet2!$b:$b)*(row(Sheet1!$b:$b)+0.02)       +(($B2=Sheet1!$b:$b)+($B2=Sheet2!$b:$b))       *999999999999999)       ,,)      ,int(       column(a1)/2)+1      )     *100,100)    ,Sheet1!$b$1    ,Sheet2!$b$1)   ,small(    index(     ($B2=Sheet1!$b:$b)*(row(Sheet1!$b:$b)+0.01)     +($B2=Sheet2!$b:$b)*(row(Sheet1!$b:$b)+0.02)     +(($B2=Sheet1!$b:$b)+($B2=Sheet2!$b:$b))     *999999999999999)    ,,)   ,row(a1)-1)  ,1,1)) 此方は重複非対応、 最初にヒットした項が読み出されます c1に以下の式を入れ D1にフィル C1:D1を選択した状態で 必要なだけ下にフィルしてください 動作は シート1,シート2に 各々ヒットする項があるか調べ シート1にある場合は1を シート2にある場合は2を 各々加えます その上で更に1を加えます シート1、シート2、 どちらにも無かった場合は シート1で加えられる分の1も、 シート2で加えられる分の2も 加えられません ので、最後に加えられる1のみ 計算結果は1 チョイス関数の結果は2つ目の"" です、 次に シート1にあり、 シート2に無かった場合、 シート1を探す項の1が加えられ シート2を探す項の2が加えられず 最後の1が加えられ 計算結果は2 チョイス関数の結果は 3つ目が選択され オフセット関数により シート1からセルが読み出されます、 次に シート1に無く、 シート2にあった場合、 シート1を探す項の1が加えられず シート2を探す項の2が加えられ 最後の1が加えられ 計算結果は3 チョイス関数の結果は 4つ目が選択され オフセット関数により シート2からセルが読み出されます、 次に シート1にあり、 シート2にも あった場合、 シート1を探す項の1が加えられ シート2を探す項の2が加えられ 最後の1が加えられ 計算結果は4 チョイス関数の結果は 5つ目が選択され オフセット関数により シート1からセルが読み出されます、 =if( chooce(  not(   iserror(    match(     true()     ,index(      (($B2=Sheet1!$b:$b)      ,,)     ,0)))       +not(   iserror(    match(     true()     ,index(      (($B2=Sheet2!$b:$b)      ,,)     ,0)))*2  +1  ,""  ,offset(   Sheet1!$a$1   ,match(    true()    ,index(     (($B2=Sheet1!$b:$b)     ,,)    ,0)-1   ,column(a1)-1   ,1   ,1)  ,offset(   Sheet2!$a$1   ,match(    true()    ,index(     (($B2=Sheet2!$b:$b)     ,,)    ,0)-1   ,column(a1)-1   ,1   ,1)  ,offset(   Sheet1!$a$1   ,match(    true()    ,index(     (($B2=Sheet1!$b:$b)     ,,)    ,0)-1   ,column(a1)-1   ,1   ,1)) 如何でしょうか お役に立てて居たならば幸いです。 因みに VBAでするなら ループ等回さず .Findでした方が良いですよ 動作的に 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   米山 権蔵   卓球   囲碁