• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:特定のセルを検索するマクロ)

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

このQ&Aのポイント
  • Excelで特定のセルを抽出するマクロを作成する方法をご質問いただきました。
  • マクロの内容は、指定された条件を持つセルを「積算データ」というシートから検索し、結果を表示するものです。
  • 検索結果において、検索条件の文字列が存在しないセルが無視されてしまう問題が発生しているようです。解決方法についてアドバイスします。

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

  • ベストアンサー
  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.4

> 「条件項目名」が複数ある なるほどです。 >「データ検索用」シートにセルB4~G8まで検索条件入力用のセルがあり とのことですから、私の予想では「4行目に項目、5行目以降に検索すべき単語」だと思いますので 「4行目には"*"をつけない」と言う逃げの一手でいかがでしょう。   If myCell.Row <> 4 Then  こんな感じでしょうか。 追記) 「露出コンセント」に対比させたくて「露出○○」な言葉を探したら 当該の言葉しか思いつかなかったもので(汗)。 失礼いたしました(大汗)。

kinetic7274
質問者

お礼

御回答ありがとうございます。 書いて頂いた式を再度入力したのですが・・、なぜか検索結果が全く表示されません(;_;) 疑問に思い直接「*コンセント*」と直接ワイルドカードを入力すると結果が表示されます。 いろいろ検証してみた結果、tsubuyukiさんが示して頂いた例の様に「単一」条件の場合に関してはマクロで「*文字列*」と変換してからの検索はできるのですが、「複数」条件になるとこれができなくなるようです。 試しに、tsubuyukiさんの例で、各項目に番号を付け、検索条件にも番号を追加すると、検索結果が出なくなりました。 「含む」の検索をする場合は手入力で「*」を入れる、という方法の方がいいのかもしれません・・(泣

その他の回答 (3)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.3

#1さんが仰るとおり、ワイルドカードを使用して、「含む」の検索をするのが良いかと思います。 積極的な手段とは言いづらいのですが、以下のように。 Sub 条件検索() Dim myCriteria As Range, myCell As Range     Rows("12:9000").Delete     Range("G10").Select     Set myCriteria = Worksheets("データ検索用").Range("B4").CurrentRegion         For Each myCell In myCriteria            If myCell <> "条件項目名" Then    ' 実際の項目名に変更して下さい               myCell = "*" & myCell & "*"            End If         Next myCell     Sheets("積算データ").Range("A1:O9000").AdvancedFilter Action:=xlFilterCopy, _     CriteriaRange:=myCriteria, CopyToRange:=Range("B12"), Unique:=False     myCriteria.Replace What:="~*", Replacement:="", LookAt:=xlPart End Sub 単純に、条件として入力されたセル(B4:G8)の中身を「*条件*」に書き換えてやります。 それをもってアドバンスドフィルタをかけてやり、最後に「*」を消してやる、と言う考えです。 少々セル番地が違いますが、上記マクロを走らせた結果が添付図です。 コンセントを含む語句のみを抽出してきています。 A列が元のリスト、C列が条件、E列が結果、とお読み下さいませ。

kinetic7274
質問者

お礼

回答ありがとうございます。 添付ファイルに「露出狂」という項目が入っていて笑ってしまいました(笑)。 ただ・・・せっかくコードまで書いた頂いたのに申訳ありませんが、 If myCell <> "条件項目名" Then     ' 実際の項目名に変更して下さい myCell = "*" & myCell & "*" End If Next myCell の部分で「条件項目名」が複数ある為に悩んでいます。 項目は「追番」「項目」「名称」「摘要」「備考」「施工」の6項目あります。 できれば複数項目の場合についてもお答頂けると助かるのですが・・><

回答No.2

No.1です。 最初の回答例は、検索条件の入れるセルに入っている語句に直接アスタリスクを付け加えてください。 マクロで記述する場合は、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1127213686 を参考にして、記述してみてください。 自分が記述してもいいのですが、マクロがかなり未熟なもので、間違えた記述をしてしまうと、御迷惑がかかるので。

kinetic7274
質問者

お礼

再びありがとうございます。 マクロの例を見て、自分なりに入れてみましたが、エラーが出てしまう為、もう少し勉強してみます。

回答No.1

検索条件のコンセントの両隣*を付け加えてください。*コンセント* これでコンセントを含むになるはずです。

kinetic7274
質問者

お礼

ありがとうございます。 ただ・・・毎回検索条件で「*」を入れる、というのは現実的ではありません>< お答頂いたのに申訳ありません。

関連するQ&A