• ベストアンサー

検索条件を文字列にするには

お世話になっています。 AdvancedFilterなどで検索条件をRANGEではなく文字列にすることは可能ですか?

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

これはできません。 参考 http://t_shun.at.infoseek.co.jp/My_Page/Excel-VBA/vba_page17.htm まやかし的ですが、やりたいことは下記と似てませんか 例データ A列  B列   F列 第2行目から、第1行は表見出しとして。かつF2:F3は使わないセルとする(どこのセルでも良いが)。 住所 氏名 氏名 東京 植田 諏訪 横浜 長野 鎌倉 諏訪 熱海 飯田 豊橋 山科 東京 大月 熱海 植田 横浜 諏訪 鎌倉 諏訪 横浜 木下 東京 山科 横浜 長野 Sub test01() x = InputBox("検索文字") y = InputBox("見出し") Cells(2, "F") = y Cells(3, "F") = x For j = 1 To 10 If Cells(2, j) = y Then Exit For Next j Cells(30, "A") = y Range(Cells(2, j), Cells(30, j)).AdvancedFilter Action:=xlFilterCopy, CriteriaRange:= _ Range(Cells(2, "F"), Cells(3, "F")), _ CopyToRange:=Range("A30:A60"), Unique:=False Range("F2:F3") = "" End Sub 結果 氏名 諏訪 諏訪 諏訪 やり方 Inputboxで「氏名」、検索内容を「諏訪」と答える。 A30以下に結果が出る。 そこかしこに仮定が入ってますので、修正して、自由化してください。

hetox2
質問者

お礼

参考にしてみます。ありがとうございました。

その他の回答 (2)

  • onlyrom
  • ベストアンサー率59% (228/384)
回答No.3

CriticalRangeは、字の如くRangeObjectの指定ですから AdvancedFilterメソッドを使う限り無理です。 どうしても文字列を使いたいのなら AdvancedFilterメソッドの代わりに For NextとかDo Loop等を使うことになります。  

hetox2
質問者

お礼

loopなども試してみます。ありがとうございました。

  • pauNed
  • ベストアンサー率74% (129/173)
回答No.1

こんにちは。 AdvancedFilterの第2引数のCriteriaRangeに文字列を設定したいという意味であれば、 できないと思います。 検索条件を入力した『セル範囲』を指定しなければいけません。 作業エリアやダミーシートなどに、その『文字列』をセットすればいいだけなのではありませんか? VBAから実行するなら非表示にしておけばそれほど気になりませんよ^ ^ #意味が違ってたらごめんなさい。

hetox2
質問者

お礼

そうですね。ありがとうございました。

関連するQ&A

  • 最も多い文字列を検索するには

    皆様いつもお世話になっております。 最も多い文字列を検索するにはどのようにすればよいでしょうか。 具体的には (1)A列に6文字の文字列が並んでいます。 (2)先頭4文字の文字列で最も多い種類の文字列の値を取得する (3)最も多い文字列以外の文字列を含む行を削除する というプログラムを組みたいと思います。 よろしくお願いします。

  • ある条件の文字列検索とコピー(VBA)

    初心者なのでカテゴリ違いならすみません。 下記の処理をエクセルVBAで考えています。いろいろ調べて みたのですが、やり方教えてください。VBA初挑戦にしては 難易度が高いかもしれないです。 ・処理  下記のような条件で文字列を検索して、コピーして別ファイルに 編集して書き出す処理をする ・検索条件 「?」で始まり、「=」で終わる文字列     もしくは 「&」で始まり、「=」で終わる文字列 これを検索してコピーする 例えば、「?SAZANN=123456」という文字列を検索 して「SAZANN」という文字列だけコピーして他の ファイルに文字列を書き出したいんです。 自分のイメージでは、「?SAZANN=」だけ一旦コピー して他のファイルにそれを書き出して、編集段階で 「?」「=」を一括置換で削除するイメージでいます。 ご指導宜しくお願い致します。

  • ()を含む文字列を検索

    ”()”を含む文字列を完全一致で検索したいのですが、 ()が条件として認識されません。 なにか良い手法はありますでしょうか? ちなみに、IF文で文字列一致を判断しています。

  • AdvancedFilter 検索 複数条件

    AdvancedFilterを使って検索をしたいのですが、複数条件のVBAマクロの書き方を教えてください。 エクセル2010です。 2行目が見出し行で実際のデータは4行目から入っており、 T列を複数条件で検索をしたいのですが、 T4=スカート 150サイズ,ズボン 120サイズ,Tシャツ 150サイズ T5=スカート,ズボン 150サイズ, T6=Tシャツ 150サイズ,スカート 120サイズ 1セルに対して、検索用文字列が数十種類入っている状態です。 これをUseFormを利用して複数条件で検索をしたいのですが、 テキストボックス1、テキストボックス2、コマンドボタン1 があるとして、 テキストボックス1にスカート テキストボックス2に150 と入れて検索をかけたとき、T4のみが抽出結果に表示させたいです。 テキストボックス1にスカートのみで検索をかけると、T4-6が出るように表示させたいです。 テキストボックス1にTシャツ テキストボックス2に150 T4とT6が出るようにしたい。 このような事は出来るのでしょうか? Private Sub CommandButton2_Click() Worksheets("マスタ").Activate If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData Range("BH1:BU4").ClearContents Range("BH1:BU4").NumberFormatLocal = "@" Range("BS2").Value = Range("T2").Value Range("BS2").Value = Range("T2").Value If Me.TextBox1.Value <> "" Then ' 種類 Range("BS3").Value = "*" & Me.TextBox1.Value & "*" End If If Me.TextBox2.Value <> "" Then ' サイズ Range("BS4").Value = "*" & Me.TextBox2.Value & "*" End If If Cells(3, Columns.Count).End(xlToLeft).Column > 48 Then Range("A2:AW" & Rows.Count).AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Range("BH2").CurrentRegion, Unique:=False End If Range("BH1:BU4").ClearContents Range("A1").Activate Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True End Sub これだと機能しないため、マクロを組める方、教えてほしいです。 オートフィルタだと、どうしてもフィルタボタンが出てしまい、見にくいので、 AdvancedFilterでやりたいのが希望です。 VBAわかる方、教えてください。 宜しくお願い致します。

  • 文字列検索で

    よろしくお願いします。 文字列検索instr関数で、特定文字(スペース)でない文字を検索したいのですが、どのようにしたらいいですか? instr関数では、できないのでしょうか? たとえば、 文字列" osietegoo "  →  3 文字列"    situmon"  →  7 スペースでない文字が出現する位置を知りたいです。 instr(文字列,"o")ではなく、" "ではない、、、としたいのですが、できますか?

  • ブック全体の文字列検索について

    Excelでセルに任意の文字列をペーストします。そのセルは別のブックにリンクしているのでペーストする度にリンク先のセルでは文字列が更新されます。リンク先のブックにはワークシートが10あっていづれかのシートのA列にその文字列がある事になっています。更新された文字列を検索する作業を繰り返すのでマクロで組み込もうと思ったのですがFIND関数にしても、VBでCell.Find(What:=....と書くにも参照する文字列を直接指定してやらないと動きません。参照する文字列が相対的に変化するので「特定のセルの中に入力された文字列」を参照してブック内を検索したいということなのですが、実現するにはどうしたらようでしょうか?と質問して moji = "B1" Set c = Range("A:A").Find(What:=moji, LookIn:=xlValues, LookAt:=xlWhole) If Not c Is Nothing Then c.Select というコードをしめしていただきました。このままだと検索対象がRangeオブジェクトになっているのでActivesheet上でしか検索がかからないのでCellsにすればブック内のすべてのシートに検索がかけられるかな?と思っていたのですがエラーがでます。ブック内を検索範囲に入れるためにはどうしたらよいでしょうか?

  • 特定のセルを検索するマクロ

    お世話になります。 現在EXCELで、表の中から特定のセル(行)を抽出するマクロを組んでいます。 マクロの内容は次の通です。 Sub 条件検索() ' Rows("12:9000").Select Selection.ClearContents Range("G10").Select Dim myCriteria As Range Set myCriteria = Worksheets("データ検索用").Range("B4").CurrentRegion ' Sheets("積算データ").Range("A1:O9000").AdvancedFilter Action:=xlFilterCopy, _ CriteriaRange:=myCriteria, CopyToRange:=Range("B12"), Unique:=False 「データ検索用」シートにセルB4~G8まで検索条件入力用のセルがあり(入力内容の有無によって条件範囲が可変します)、入力された条件を「積算データ」というシート(A列~O列までの表で約9000行あります)で検索し、セルB12から下に検索結果を表示するというものです。 なお、検索する際にはコマンドボタンを押す事で検索を掛けています。再検索時には既存の検索結果が削除されるようになっています。 このマクロの「検索条件」に於いて、質問があります。 たとえば次のような場合です。 検索対象データ ・コンセントボックス ・コンセントプラグ ・露出コンセント ・埋込コンセント ・防爆コンセント 検索条件:コンセント 検索結果 ・コンセントボックス ・コンセントプラグ となってしまい、検索対象の先頭に検索条件の文字列が無いものは検索されません。 検索対象の文字列に検索条件の文字列が入っていれば、その位置にかかわらず検索結果に反映されるにはどうすればいいでしょうか?

  • 文字列から文字列を検索するプログラム

    現在、C言語を学習しています。 文字列から文字列を検索する関数に「strstr]がありますが、自作関数として自分で作成する方法を考えております。 文字列から文字を検索する事は出来たのですが、文字列を検索するシーケンスがわかりません。 有識者の方、御教授よろしく御願い致します。

  • 文字列の検索について

    RichTextBoxの文字列の中の太字にした文字列や、斜体にした文字列などを検索したいのですが、InStrでできますか? もしくは他にやり方があったら教えてください。お願いします。ちなみにVB6.0です。

  • 複数の文字列検索

    いつもお世話になっています。 色々な文字列検索ソフトを使用してみたのですが なかなか思い通りの結果が出ずに悩んでおります。  複数検索が出来るソフトでも、同一行内の検索となっていたりするので・・・・ (1)複数フォルダーに大量にあるテキスト形式で書かれたファイルから (2)複数の文字列が含まれているファイルを探し出す たとえば、「あああ」と「いいい」の両方が含まれているファイルを探し出すことを行いたいのですが・・・・・ どうぞ、よろしくお願いします

専門家に質問してみよう