Excel2007で複数を単体として検索

このQ&Aのポイント
  • Excel2007で複数のデータを単体として検索する方法について教えてください。
  • range(A10:C12)に値A~H + ワイルドカードを自分で1つを選び入れて、1つの形にして検索できるタイプにしたいです。
  • 列OPQの最後尾のデータからO列+P列+Q列を検索し、黄色く着色されたセルの値を列HIJの3行目以下に表示したいです。
回答を見る
  • ベストアンサー

Excel2007で複数を単体として検索

前にも似たような形で質問しました。今回は、range(A10:C12)に値A~H + ワイルドカードを自分で1つを選び入れて、1つの形にして検索できるタイプにしたいです。 (1)列HIJの3行目から下に向かって既に入ってあるデータを消して (2)range(A10:C12)に自分が検索したい(ワイルドカードも時には含めた)形で値A~Hのいずれかを各セルに入れてからマクロボタンを押して (3)range(A10:C12)を単体とし、それを参照して (4)(列OPQの最後尾には新しいデータが常に追加されます)O列+P列+Q列から検索し、その検索された1つ下のセルを黄色く色を着けて、その値だけをコピーして (5)列HIJの3行目から下に向かってそれをペイストして表したいです。 誰か教えて下さい。お願いします。

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

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.4

参考に Sub Test5()  Dim myRang As Range, c As Range, flg As Boolean  Dim i As Long, j As Long, LastH As Long, LastO As Long  Range("H3:J" & Cells(Rows.Count, "H").End(xlUp).Row).ClearContents  LastO = Cells(Rows.Count, "O").End(xlUp).Row  Range("O3:Q" & LastO).Interior.Color = xlNone  For i = 3 To Cells(Rows.Count, "O").End(xlUp).Row - 3   Set myRang = Cells(i, "O").Resize(3, 3)   For Each c In Range("A10:C12")    j = j + 1    If c.Value <> "*" And c.Value <> myRang.Item(j) Then flg = True   Next   If flg = False Then    flg = False    Cells(i + 3, "O").Resize(, 3).Interior.Color = vbYellow    LastH = Cells(Rows.Count, "H").End(xlUp).Row + 1    If LastH < 3 Then LastH = 3     Cells(LastH, "H").Resize(, 3).Value = Cells(i + 3, "O").Resize(, 3).Value    End If    flg = False    j = 0   Next End Sub

961awaawa
質問者

お礼

ピシャッとできましたー!!! ありがとうございますwatabe007さん。 今回は意志疎通が上手くいったきがします。私の複雑な考えはまだまだ有りますのでまた御協力お願いいたします。

その他の回答 (3)

  • SI299792
  • ベストアンサー率48% (713/1474)
回答No.3

私の考えているものと、データの入り方が違っているのだと思います。 データがどのように入っていて、検索ワードがどのようなものなのか書いてないので、かなり想像で作りました。 できれば、元のワークブックを上げていただければと思います。 YahooBoxは禁止されているみたいで、前に削除されました。

参考URL:
https://www.filesend.to/
961awaawa
質問者

お礼

いつもありがとうございますSI299792さん。私はガラケでもう色々と方法が追いやられてるんでちょっと難しいみたいです。 OPQの3列の3行目から(今のところ1000行目まで)下に向かってA~Hのいずれかが各セルに1つずつぎっしり入ってます。 検索ワードはrange(A10:C12)に格子を入れて |A|B|*| |*|C|*| |*|A|A| や |*|*|*| |A|A|B| |*|A|B| のような形で検索してこの形の1つ下の3つ並びのデータを抜き出して指定の所に並べるんです。私の知っている限りなんですがワイルドカードは全てに対応なんでしょうね。 SI299792さんのおっしゃい方だと理解してくれてるようなので意志疎通が上手くできてて嬉しくおもいます。 質問や説明って難しいものですね。

  • SI299792
  • ベストアンサー率48% (713/1474)
回答No.2

[A10:C12] の値をキーワードにしてO列+P列+Q列を検索、 結果の1つ下を黄色にして、更に、H~Jにコピーする という風に解釈しました。 ' Option Explicit ' Sub Macro1() '   Dim Find As Range   Dim FEnd As Range   Dim Row As Long '   Range("H3:J" & Rows.Count).ClearContents   [O:R].Interior.Pattern = xlNone   Row = 2 '   For Each Find In [A10:C12] '     If Find = "" Then       Set Find = Nothing     Else       Set Find = [O:Q].Find(Find, _         LookIn:=xlValues, Lookat:=xlWhole, searchorder:=xlByRows)     End If '     While Not Find Is Nothing       Set Find = Cells(Find.Row + 1, "O") '       If Find.Offset(1).Interior.Color <> vbYellow Then '         Set FEnd = Cells(Find.Row + 1, "Q")         Range(Find, FEnd).Interior.Color = vbYellow         Row = Row + 1         Range("H" & Row & ":J" & Row) = Range(Find, FEnd).Value       End If       Set FEnd = Range("Q" & Rows.Count)       Set Find = Range(Find, FEnd).FindNext(FEnd)     Wend   Next Find End Sub 上記解釈が間違っていたら書いて下さい。

961awaawa
質問者

お礼

お久しぶりですSI299792さん。ご協力ありがとうございます。SI299792さんが理解してくれた通りなんでやってみたんですが、列OPQにあるデータの2ヵ所だけが黄色付けされて後はポインタが砂時計になり何もならないです。

  • msMike
  • ベストアンサー率20% (363/1775)
回答No.1

》 前にも似たような形で質問しました その質問のURLは?

961awaawa
質問者

お礼

すみません。質問履歴がなくなってしまってます。

関連するQ&A

  • 前回Excel2007で複数のセルを併せて

    前にも似たような形で質問しましたが、今回は自分で検索したい形で値を入れたタイプなんです。 (1)列HIJの3行目から下に向かって既に入ってあるデータを消して (2)range(A10:C12)に自分が検索したい(ワイルドカードも時には含めた)形で値A~Fのいずれかを各セルに入れてからマクロボタンを押して (3)range(A10:C12)の複数のセルの値を併せて参照して (4)(列OPQの最後尾には新しいデータが常に追加されます)O列+P列+Q列から検索し(その検索された1つ下のセルを黄色く色を着けて)、検索された1つ下の値をコピーして (5)列HIJの3行目から下に向かってそれをペイストして表したいです。 誰か教えて下さい。お願いします。

  • EXCEL VBAで複数のシートの中から該当値を検索する方法について

    すいません、EXCEL VBAで複数のシートの中から該当する値を検索する方法について教えていただきたいことがあります。      Sheet1              A列   B列  C列   1行  11  りんご  31  2行  12  バナナ  32  3行  13  みかん  33  4行  14  ぶどう  34   ・   ・   ・     ・        Sheet2              A列   B列  C列   1行  31  すいか  11  2行  32  レモン  12  3行  33  パイン  13  4行  34  ざくろ  14   ・   ・   ・     ・ というデータが入っているブックについて 「全部のシートを検索し、A列に11の値が入っているセルの行数及びその行のB列の値」 をSheet1のD1セルとE1セルにそれぞれ返す方法はどうしたらよろしいんでしょうか。 For Each を使うのではないかと思って色々やってみたのですが、どうも上手く作動してくれません。 よろしくお願いいたします。

  • 複数列の検索、値の取り出し方

    教えててください。B列からE列までを順番に検索して値があればA列の時間を取り出すマクロが解かりません。教えていただけないでしょうかお願いします。 B列の10.5のtime(s)300秒をH4セルに記入 C列の10.5のtime(s)240秒をH5セルに記入 D列の10.5のtime(s)180秒をH6セルに記入 E列の10.5のtime(s)120秒をH7セルに記入   CSVデータを読込みデータの取り出しのマクロを作成中に、列検索でつまずきました。

  • エクセル複数検索で

    A、B、C列を検索してD列のデータを求める式を作成しました。 データリスト   A     B   C   D   1 F2    M2  55  100 2 F21   M3  55  110 3 S22   M2  60  105 4 S2    M2  65  115 求める式(10行目のA、B、Cに文字及び数値を入力し、その値に合致するDの値をD10に求める) 式:INDEX(D1:D4,MATCH(A10&"!"&B10&"!"&C10,A1:A4&"!"&B1:B4&"!"&C1:C4,)) ここで質問ですがA10のセルにはフルネームで入力してデータ行のA1~A4の値は最初の文字(F又はS)だけ認識させたいのですがその方法が分かりません。 質問がわかりにくいかもしれませんがA1~A4にはForSのみ記入しA10セルにはF2、S22などと表示したいのです。よろしくお願い致します。

  • エクセルVBAでデータ検索(Win2000,Excel2000)

    エクセルで毎日の業務で手計算している作業をVBAコードかいて試しているのですが、縦と横の検索で行き詰まってしまい質問しました。どうぞよろしくお願いします。 _A__B____C____D__E__F___G___H 1| 2|_______その他_1~3_4~6_7~10_11~20_21~30 3| 3|__項目A___ 0___50__49__46___43__40 4|__項目B___ 0___45__44__39___37__34 5|__項目C___ 0___43__42__34___30__ 28 行 *このデータは現在(B3:V42)にあり今後増える可能性あり *1行目とA列は空白です。 *2行目とB列は対応する項目です。 *3行目は関係ない値が入っています(データをつくる為の値) このようなデータが、"Sheet2"にあると仮定します "Sheet1"のシート上に配置したComboBox(コントロールツールボックスの)に検索値があります。 (ComboBox1 → 数値 , ComboBox2 → 数値 , ComboBox3 → 文字)*リストは"Sheet1"に登録してあります。 TextBox1 ÷ 2 の結果を小数点以下切上げし、これにTextBox2の値をかけたもの(仮にAAAとする)が、2列目のそれぞれのセルの数値範囲に対応し、TextBox3の文字列がB列に対応し、両検索結果の交わったセルの値を返すようにしたい。 例)もしAAAが「8」なら「F列」をみる。TextBox3 の文字列が「項目B」なら「4行目」をみる。この結果、交わったセルは「F4」なので、「F4」にある値「39」を"Sheet1"."A1"に返す。 また、これらコンボボックス(このシートとは別にテキストボックスを使うこともある)にはひとつずつchangeイベントでいきなり別シート("Sheet3")に書くコードが既に書いてあります。このセルから取り出すことも可能です。よろしくお願いします。

  • EXEL2000 複数条件で集計を求める関数式

    検索範囲のA列における検索条件が[A5001]セルと同じ値、B列が[B5001]セルと同じ値であるもののC列[C1:C5000]の合計は =SUMPRODUCT((A1:A5000=A5001)*(B1:B5000=B5001)*C1:C5001) では、検索範囲A列が検索条件が[A5001]セルと同じ値の文字列を含むもの、B列が[B5001]セルと同じ値であるもののC列[C1:C5000]の合計をする場合に (たとえば、リストの A列データの値は、青森リンゴ、長野リンゴ、和歌山ミカン等、 B列データの値は、大、中、小等、 C列データの値は、その売上高、 検索条件[A5001]セルの値が[リンゴ]、 [検索条件B5001]セルの値が[大]である場合に、 リンゴという文字列が含まれており且つ大であるものの売上合計金額を求める) =SUMPRODUCT((A1:A5000="*"&A5001&"*")*(B1:B5000=B5001)*C1:C5001) を試しましたがだめでした。 これとは別に、 =SUMPRODUCT(COUNTIF(A1:A5000,"*"&A5001&"*")/COUNTIF(A1:A5000,"*"&A5001&"*"))*(B1:B5000=B5001)*C1:C5001) も試しましたがだめでした(数日前にこちらで教えていただきまして、行数が10行程度の仮のリストで試しましたらうまくいきましたが、実際のリスト(5000行以上)では#VALUE!が返ります。リストは「値のみ貼付」で得られたデータのみが入っています) このリストで、5001行以降に検索条件が多数並んでいます。 EXEL2000で可能な関数式を教えて下さい。よろしくお願いします。

  • 【Excel】ある条件を満たすまでの件数を調べるには?

    Excel2003を使用しています。 ある書類作成で、合計金額の70%に達するまでには、何件目まで(何行目まで)記載すればよいかを調べるには、どのようにしたらよいでしょうか? データは、A列~K列の6行目以下に入力されています。 金額はG列に、降順に並んでいて、合計金額をH1セル、H1セルの70%の数値をH2セルに出しています。 A列には、6行目以下に連番がふってあり(A6=1,A7=2,A8=3,…)、H2セルの値(合計金額の70%)を超えた行のA列に入力されている値を取得できないかなと思っているのですが…。 うまく説明できなくて申し訳ないのですが、よろしくお願いします。

  • Excel2007 複数条件での検索

    Excel2007で複数条件のデータの抽出について教えて下さい。 現在、シートAにデータが入力され、シートBにデータの抽出を行いたいと思います。 シートAの内容は以下の通りです(アルファベットと数字はセルの場所です): 1行目: 項目欄 2行目以下: データ詳細 1行目 A1 「日付」 B1「名前」 C1「出社状況」 2行目以下 A2 12/01  B2 山田  C2 出社 A3 12/01  B3 佐藤  C3 早退 A4 12/01  B4 木村  C4 出社 A5 12/02  B5 木村  C5 早退 A6 12/02  B6 山田  C6 遅刻 A7 12/02  B7 佐藤  C7 遅刻 ・・・・・ A列の日付は昇順ですが、B列の人名はランダムに入力されています。 また、日付によっては途中入退社する人もいるので、12/01に名前がなくても、 12/10から名前が入力されている場合(あるいはその逆)もありえます。 シートBは以下の通りです: 1行目 名前 A列:日付 B1 木村 C1 山田 D1 佐藤 ・・・ A2 12/01 A3 12/02 このシートBの B2に シートAから 「木村の12/01の出社状況」(つまりC4)に値するデータを 自動的に抽出するような関数を入力したいのですが、どのようにすればよいのでしょうか? (このB2セルの式をB2:D3に入力していきたいので、絶対値を指定することになると思いますが・・・) IndexやらMatchやらLookupやらを色々試してみたのですが、どうも上手くいきません。 どなたかアドバイスをお願いいたします。

  • 【Excel】重複するデータの検索

    Excel2003を使用しています。 A列にデータが入力されていたら、同行のC列の値(文字列)を取り出すようにしています。(VLOOKUP関数を使用) A列のデータは4桁の数値なのですが、そのデータの数値が重複している場合があって、そのときは行番号の小さい方のC列の値が取り出されますよね? データは同じでも別の行に入力されていれば、C列に入力されている値(文字列)も違うので、それが取り出されるようにしたいのですが、そういうことは可能でしょうか?

  • Excelで複数条件を満たすのは何行目?

    Excel VBAにてどういう方法があるのか考えています。 A列はHかL、B列は1,2,3のようなデータにおいて  条件1:A列はH  条件2:B列が2 を満たす行は何行目かを探して、C列のその行のセルに コピーしていたデータを貼り付けたい (この場合、2つの条件で重複する行はありません) A列 B列 C列 H  1 H  2  ■←ここへ貼り付け H  3 L  1 L  2 L  3 この場合は、2行目なので、C列の2行目のセルをselectしてpasteしたいのです。 良い方法をご存じの方、よろしくお願いいたします。

専門家に質問してみよう