- ベストアンサー
検索マクロ
こんにちは。 エクセル初心者で勉強中です。 今、下記のようなエクセルシートを作成しました。 シートの所々の列に”○”、”×”が入力されています。 ここで、VBAを作成し、”×”だけを検索し、メッセージボックスに 「×が4つあります・×のセル D5 F5 F6 J5」 というふうに表示したいのです。 検索はシートのすべてを検索すれば大丈夫です。 今、目視で検索しているので大変です。 どうぞよろしくお願いします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No.1です。 補足の件について・・・ データがない場合の処理をしていませんでしたね。 Sub test() Dim c As Range Dim str As String Dim vl As Variant For Each c In ActiveSheet.UsedRange If c = "×" Then str = str & WorksheetFunction.Substitute(c.Address, "$", "") & " " vl = vl + 1 End If Next c If vl = 0 Then MsgBox "×は0個です" Exit Sub Else MsgBox ("×は、" & vl & "個あります。" & vbCrLf & "セル番地は、" & str & "です。") End If End Sub こんなんではどうでしょうか?m(_ _)m
その他の回答 (3)
- 某HN クロメート(Chromate)(@CoalTar)
- ベストアンサー率40% (705/1742)
VBAの勉強なら この回答は無視してください >今、目視で検索しているので大変です。 個数はCOUNTIF関数を使えばよいし 条件付き書式のほうが見つけやすそうな気がする。 条件付き書式のオススメ活用法 http://allabout.co.jp/gm/gc/297742/
- imogasi
- ベストアンサー率27% (4737/17069)
初心者がまずやるような課題ではない。 マクロでやるまでもなく操作で出来ること。 まず「課題ありき」(課題先行)でこういう課題を扱うのかもしれないが、初心者には難しい。 丸投げにならざるを得ない。少しでも質問者に勉強をしてもらうために、下記を書く。 検索の問題なのだが、FINDメソッドで記録される。編集ー検索はブックを対象に出来る。 (1)マクロの記録をとって勉強出来る。 コードのおおよそはそれでわかる。 コードの意味は下記WEB照会記事の解説などを見ること。 Googleで「VBA Find」で照会すればコード例が出る。 該当が複数見つかる場合だから、「VBA FindNext」でも照会する。 http://officetanaka.net/excel/vba/cell/cell11.htm このロジック(処理の仕組み)が、初心者には難しいと思う。 (2)メッセージボックスに・・・ Googleででも「VBA Msgbox」で照会したらしまい。 (3)「×が4つあります・・・・ ただし見つかった件数(セル数)は、自分で見つかった都度カウント(+1していく)しないとならないと思う。 >検索はシートのすべてを検索すれば大丈夫です 知らないから、こんな書き方をしているが、 エクセルの色々なケースで、全シートを(一斉に)対象に出来るのは、珍しいケースだということを、あらかじめ知っておいたほうが良い。1シート限りがまだまだ多いと思う。 ーー エクセルも進化しているので質問にはバージョンを書いて質問すること>
- tom04
- ベストアンサー率49% (2537/5117)
こんにちは! 一例です。 Sub test() Dim c As Range Dim vl As Variant Dim str As String For Each c In ActiveSheet.UsedRange If c = "×" Then '×は「ばつ」で変換しています。X(エックスではありません) vl = vl + 1 str = str & WorksheetFunction.Substitute(c.Address, "$", "") & " " End If Next c MsgBox ("×が、" & vl & "個あります。" & vbCrLf & "セル番地は、" & str & "です。") End Sub こんな感じではどうでしょうか? 尚、セル番地の表示順は1行目のA列からB列・C列・・・2行目のA列・B列・・・ と各行の列方向に向かって検索していきますので、その順位なってしまいます。m(_ _)m
補足
TOM04さん、ありがとうございました。 完璧でした。 追加で一つ質問なのですが ×が0個の場合、「×は0個です。」 というメッセージを出せることは できるのでしょうか。 すいません。