• ベストアンサー

検索マクロ

こんにちは。 エクセル初心者で勉強中です。 今、下記のようなエクセルシートを作成しました。 シートの所々の列に”○”、”×”が入力されています。 ここで、VBAを作成し、”×”だけを検索し、メッセージボックスに 「×が4つあります・×のセル D5 F5 F6 J5」 というふうに表示したいのです。 検索はシートのすべてを検索すれば大丈夫です。 今、目視で検索しているので大変です。 どうぞよろしくお願いします。

この投稿のマルチメディアは削除されているためご覧いただけません。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.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)

回答No.3

VBAの勉強なら この回答は無視してください >今、目視で検索しているので大変です。 個数はCOUNTIF関数を使えばよいし 条件付き書式のほうが見つけやすそうな気がする。 条件付き書式のオススメ活用法 http://allabout.co.jp/gm/gc/297742/

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

初心者がまずやるような課題ではない。 マクロでやるまでもなく操作で出来ること。 まず「課題ありき」(課題先行)でこういう課題を扱うのかもしれないが、初心者には難しい。 丸投げにならざるを得ない。少しでも質問者に勉強をしてもらうために、下記を書く。 検索の問題なのだが、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)
回答No.1

こんにちは! 一例です。 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

aidorumary
質問者

補足

TOM04さん、ありがとうございました。 完璧でした。 追加で一つ質問なのですが ×が0個の場合、「×は0個です。」 というメッセージを出せることは できるのでしょうか。 すいません。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 検索マクロ

    こんばんわ。 エクセル初心者です。 今、下記の画像(中、下)のとおり、エクセルのシート2(1月分情報)からデータを 入力しています。シートは10枚くらいになる予定です。 データの構成は、各シートのA2から氏名が入力されており、何名入力されているかは 各月シートによって違っています。 列数はA列からF列まで6列文にそれぞれ情報が入力されています。 今ここでしたい処理なのですが、下画像の上段のようにシート1に氏名検索用の シートを作り、氏名の一文字を入れることによって、シート2以降にあるすべての氏名情報を引っ張ってシート1に表示したいのです。 何かいいコードはあるのでしょうか。今は目視で各シートをひとつづつ確認しているので 大変です。 よろしくお願いします。

  • エクセルの検索マクロについて

    今までオートフォーマットで検索していたのですが,一つの列に存在するデータが多量になったため,マクロを使った検索としたいです。 検索の方法として,「コンボボックス」で選択したデータを検索したいと考えています。 現状は以下の通りです。 ○検索元となるデータは,1つのSheetにまとめてあります。 ○「コンボボックス」で指定したいデータは4つあります。 ○検索元のSheetの,D列が文字列,E列が数字,F列が文字列,G列が数字となっています。 この,D列~G列の中で,「コンボボックス」4つで指定したデータを別のSheetで表示させたいと考えています。 エクセルは,表計算やグラフならある程度使いこなせるのですが,マクロは全くの素人です。 お手数をお掛けしますが,どなたか知恵を授けてください。 よろしくお願いします。

  • エクセルの検索マクロについて

    今までオートフォーマットで検索していたのですが,一つの列に存在するデータが多量になったため,マクロを使った検索としたいです。 検索の方法として,「コンボボックス」で選択したデータを検索したいと考えています。 現状は以下の通りです。 ○検索元となるデータは,1つのSheetにまとめてあります。 ○「コンボボックス」で指定したいデータは4つあります。 ○検索元のSheetの,D列が文字列,E列が数字,F列が文字列,G列が数字となっています。 この,D列~G列の中で,「コンボボックス」4つで指定したデータを別のSheetで表示させたいと考えています。 エクセルは,表計算やグラフならある程度使いこなせるのですが,マクロは全くの素人です。 自分の力で解決しようと,色々試しましたが無理でした・・・ お手数をお掛けしますが,どなたか知恵を授けてください。 よろしくお願いします。

  • 検索後、削除や抽出するマクロ

    エクセルのシート1、A列の1~1500のセルにテキストが入力されており ある特定のテキストを含むセルを全て シート2のA列に抽出したいのですが、検索してみましたがうまくできません。 作業の流れとしては シート1のA列を範囲指定し、編集-検索、検索する文字列を入力し、すべてを検索をクリック 検索結果をコピーし、シート2のA列に貼り付ける もうひとつはシート1、A列の1~1500のセルにテキストが入力されており テキスト1またはテキスト2を含むセルを全て削除するというマクロを作成したいです。 ご指導のほどよろしくお願いいたします。

  • 指定した文字を検索

    エクセル2003を使っています。 VBAを使って文字を検索したいと思います。 (1)「あるセル」から見て最も近い、A列の「ある特定の文字が入っているセル」を検索しコピーし、別シートに貼り付ける。 (最初の「あるセル」というのはデータによって、セルの場所が変わります。但し、A列には入りません。 また、次の「特定の文字が入っているセル」というのは、データによってA列は変わりませんが、行番号は変わります。そして、特定の文字はA列に数個あります。そこであるセルから最も近いセルを検索するとします。) 例. 最初の「あるセル」をJ30とします。A列に入っている「時間」という文字を探すことにします。但し、「時間」というのはA列に数個あります。 そこで、「J30」から見て、最も近いセルの「時間」を検索してコピーし、別シートのセルA1に貼り付けます。 分かりにくいかもしれませんが、よろしくお願いします。

  • エクセルのマクロで入力文字を一文字ずつ並んだセルに入れる

    エクセルマクロ超初心者です。 エクセルVBAでユーザーフォームを作成しました。 テキストボックスに入力した文字列を「登録」ボタン押下後、エクセルシートのセルに一文字づつ入るようにするにはどうすれば良いでしょうか? 例えばテキストボックスに「kohiro」と入力するとエクセルのsheet1のA1「k」、B1「o」、C1「h」、D1「i」、E1「r」、F1「o」となるようにしたいのです。入力する文字数は0~30文字までで、その都度長さは変わります。どうやって、文字をばらせばいいのか、またどうやって可変長の文字列を指定したセルに入力すればいいのかわかりません。どうかよろしくお願いいたします。

  • エクセルのマクロ(検索)

    お世話になります。 エクセルのマクロで以下の処理をしたいのですがアドバイスください。 Excel2002です。 以下は実際の作業を簡略化したものです。 F列が●●という文字列で、かつE列が空白以外の行を検索した結果、 →対象行がない場合、【対象行はありません】というメッセージボックスを出し、OKをクリックしてマクロを終了させる →ある場合、1行目にオートフィルタを設定し、F列が●●という文字列で、かつE列が空白以外の行を表示させる(オートフィルタの機能で)ここでマクロの動作を一時停止させ、【続行】or【終了】が選択できるメッセージボックスを表示させる。 ここで【終了】をクリックすればマクロを終了させる。 【続行】をクリックすれば、いまオートフィルタで表示されている行のD列を値をすべて-1に変更する。次にオートフィルタを解除し、F列にある●●というセルをすべてクリア(空白)しマクロを終了させる。 アドバイスお願いします。

  • エクセルVBAでの検索

    みなさんこんにちは。私は今仕事で使っているエクセルのデータをVBAを使って簡単にしたい!!と日々パソコンに向かっています。けれどなかなか進まず… 助けてください。 ユーザーフォームのテキストボックスに入力した特定の文字列を、データが載っているシートから検索し、その文字列が入力されているセルの左右のセルのデータをシートの特定の場所に表示させたいのですが。 どなたかお分かりになりますか? 私がやりたいことが上手く説明出来ているのか… スゴク不安なのですが…。説明が下手で申し訳ありません。  皆さんからの回答をお待ちしております。

  • VBAマクロ・・同一セルの検索と検索したセルの操作

    VBAマクロ・・同一セルの検索と検索したセルの操作  VBAのほぼ初心者です。  決められたセル(たとえばE100)に入力された文字列と同一の文字列を その列内の上(E1~E99)で検索する。 そして、検索できれば(たとえばE30)そのセルがある行(行30)を削除する。 なお、複数検索されれば、検索されたすべてのセルに対応する行を削除する。  というようなことをVBAのマクロで作成したいです。 FindメソッドとDo..Loop Whileを使って試行錯誤してみたのですが、うまくいきません。。  いい方法があれば、是非教えていただきたいです。  どうぞよろしくお願いいたします。

  • エクセルのマクロ(値を検索して別シートにコピー)

    エクセルで下記のマクロをご教示いただけるでしょうか。 1.Sheet1のアクティブセルの右に5つ、下に1つのセルを起点として下方向に6セル分をコピー (例)Sheet1のアクティブセルがA2だとすると、F3~F8をコピー 2.Sheet1のアクティブセルの値(yy/mm/dd形式の日付)と同じ値のセルをSheet2のA列から検索し、該当セルの右に2つ分のセルに行列を入れ替えて値のみをペースト (例)Sheet1のアクティブセル(A2)の値がSheet2のA4セルにあるとすると、Sheet2のC4に行列を入れ替えて値のみペースト 3.Sheet1のアクティブセルの値がSheet2のA列に2つ以上あれば、「同じ日付が複数あります。」というメッセージを表示

専門家に質問してみよう