- ベストアンサー
特定のセルを検索するマクロ
- Excelで特定のセルを抽出するマクロを作成する方法をご質問いただきました。
- マクロの内容は、指定された条件を持つセルを「積算データ」というシートから検索し、結果を表示するものです。
- 検索結果において、検索条件の文字列が存在しないセルが無視されてしまう問題が発生しているようです。解決方法についてアドバイスします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
> 「条件項目名」が複数ある なるほどです。 >「データ検索用」シートにセルB4~G8まで検索条件入力用のセルがあり とのことですから、私の予想では「4行目に項目、5行目以降に検索すべき単語」だと思いますので 「4行目には"*"をつけない」と言う逃げの一手でいかがでしょう。 If myCell.Row <> 4 Then こんな感じでしょうか。 追記) 「露出コンセント」に対比させたくて「露出○○」な言葉を探したら 当該の言葉しか思いつかなかったもので(汗)。 失礼いたしました(大汗)。
その他の回答 (3)
- tsubuyuki
- ベストアンサー率45% (699/1545)
#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列が結果、とお読み下さいませ。
お礼
回答ありがとうございます。 添付ファイルに「露出狂」という項目が入っていて笑ってしまいました(笑)。 ただ・・・せっかくコードまで書いた頂いたのに申訳ありませんが、 If myCell <> "条件項目名" Then ' 実際の項目名に変更して下さい myCell = "*" & myCell & "*" End If Next myCell の部分で「条件項目名」が複数ある為に悩んでいます。 項目は「追番」「項目」「名称」「摘要」「備考」「施工」の6項目あります。 できれば複数項目の場合についてもお答頂けると助かるのですが・・><
- kero1192kero
- ベストアンサー率33% (3/9)
No.1です。 最初の回答例は、検索条件の入れるセルに入っている語句に直接アスタリスクを付け加えてください。 マクロで記述する場合は、 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1127213686 を参考にして、記述してみてください。 自分が記述してもいいのですが、マクロがかなり未熟なもので、間違えた記述をしてしまうと、御迷惑がかかるので。
お礼
再びありがとうございます。 マクロの例を見て、自分なりに入れてみましたが、エラーが出てしまう為、もう少し勉強してみます。
- kero1192kero
- ベストアンサー率33% (3/9)
検索条件のコンセントの両隣*を付け加えてください。*コンセント* これでコンセントを含むになるはずです。
お礼
ありがとうございます。 ただ・・・毎回検索条件で「*」を入れる、というのは現実的ではありません>< お答頂いたのに申訳ありません。
お礼
御回答ありがとうございます。 書いて頂いた式を再度入力したのですが・・、なぜか検索結果が全く表示されません(;_;) 疑問に思い直接「*コンセント*」と直接ワイルドカードを入力すると結果が表示されます。 いろいろ検証してみた結果、tsubuyukiさんが示して頂いた例の様に「単一」条件の場合に関してはマクロで「*文字列*」と変換してからの検索はできるのですが、「複数」条件になるとこれができなくなるようです。 試しに、tsubuyukiさんの例で、各項目に番号を付け、検索条件にも番号を追加すると、検索結果が出なくなりました。 「含む」の検索をする場合は手入力で「*」を入れる、という方法の方がいいのかもしれません・・(泣