• ベストアンサー

Excel VBA頭文字検索方法について知恵を貸してください

小生VBAの初心者です。 Excelのワークシート上のある一列に半角カタカナの人名のリストがあり、 そのリストを検索にかけます。 例えば、ユーザーフォームを使い、検索指定項目として、 ア行 カ行 サ行 タ行 ナ行 ・ ・ ・ の内、ア行を選択した場合、ワークシート上の人名リストの内、 ア行に該当する人名がピックアップされるようなマクロを組みたいのですが、上手くいきません;;; 知恵をお貸し下さい。お願い致します。

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

  • ベストアンサー
  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.2

こんな感じでしょうか?(フォームを扱えるとのことなので、必要な部分のみです。) 注)人名のリストの列番号がcolとします。また、nは、あらかじめmoji()に五十音の各行が入っているとして、その引数。   例:moji(1)="カキクケコ" (←半角カタカナとします:文字数は5でなくても可) Set r = Cells(65536, col).End(xlUp).Offset(1, 0) While r.Row > 1  Set r = r.Offset(-1, 0)  If (Not (IsNumeric(r.Value))) And (InStr(moji(n), Left(r.Value, 1)) > 0) Then    '****該当する場合の処理  End If Wend セルの下から順にサーチしていますが、上から順がよければループの順を逆にしてください。 ****のところに該当する人名が見つかった時の処理をいれてください。

syu-1
質問者

補足

fujillin さん御回答ありがとうございます。 fujillin さんのマクロを使わせていただき、ためしにアイウエオ行のみで人名リストを検索し、検索ヒットした人名の横の列に"HIT"の文字を表記する処理(下記のマクロ)を行ってみましたところ、成功いたしました。ありがとうございます。  ☆fujillin さんのマクロをまだ完全に解読できていませんが^^;   → If (Not (IsNumeric(r.Value))) And (InStr(moji, Left(r.Value, 1)) > 0) Then   の部分^^; 勉強いたします^^ ↓走らせた処理です↓ ****************************** Sub 人名検索() Dim r As Range Dim moji As Variant Dim x As Integer moji = "アイウエオ" Set r = Cells(65536, 2).End(xlUp).Offset(1, 0) While r.Row > 1 Set r = r.Offset(-1, 0) x = r.Row If (Not (IsNumeric(r.Value))) And (InStr(moji, Left(r.Value, 1)) > 0) Then Cells(x, 3).Value = "HIT" End If Wend End Sub ****************************** あとは、ユーザーフォームを使い、リストボックスの(ア行、カ行、サ行・・・)選択にて 選択した行にて人名検索を行えるようにするだけです。ユーザフォームは作成済みですので あとすこしかな^^; moji(1) = "アイウエオ" moji(2) = "カキクケコ"   ・   ・   ・ ですが、配列を使って代入していく方法がベターですか? ☆すみません配列未勉強ですので、いまから勉強いたします。 わかりにくい部分あればどうぞ御指摘ください。アドバイス頂ければ幸いです。

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

その他の回答 (3)

  • fujillin
  • ベストアンサー率61% (1594/2576)
回答No.4

#2です。補足です。 If (Not (IsNumeric(r.Value))) And (InStr(moji, Left(r.Value, 1)) > 0) Then Not (IsNumeric(r.Value))は「セルの値が数字でない場合(=文字)」で、 InStr(moj(n)i, Left(r.Value, 1))は「moji(n)の中にセルの1文字目があるか」を判定しています。 実質的には2番目の判定条件だけで良いのですが、セルの値が数字の場合、2番目の判定(文字関数)をする際にエラーが出てしまうので、1番目の条件もいれてエラーを避けています。 お役に立ててなによりです。頑張ってください。 配列の入力は文字コードを使ってループで定義するのもあるかもしれませんが、数がしれているので直接定義してしまったほうが簡単かも。 moji=Array("アイウエオ","カキクケコ","サシスセソ"・・・・・・)という手もありますよ。

syu-1
質問者

お礼

fujillinさんありがとうございます^^ おかげ様でうまくいきました。 感謝しております^^丁寧な回答とアドバイス貴重なものでした。 初心者の私でも飲み込みやすく解りやすい解説でした。 本当にありがとうございました^^

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.3

>カタカナで表記された人名の頭文字が、ア行に該当する人名を別のワークシートに書き出すマクロを組みたいです。 ⇒「ア行」を選択>ア・イ・ウ・エ・オから始まる人名を抽出。 ⇒AdvancedFilter http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_advancedfilter.html ⇒どこかのセルに「ア行」を選択した時に、ア*・イ*・ウ*・エ*・オ* と代入するようにしておくとか。

syu-1
質問者

お礼

An-junさん回答ありがとうございます。 dvancedFilterを使っても絞込みできそうですね^^ 大変参考になります。 小生、この辺りも使い方も勉強しておく必要がありそうです^^ 頭文字検索成功致しました。あとは細かい部分を固めていくのみです。 皆さんの御回答ありがたい^^ 親切な対応ありがとう御座います^^

全文を見る
すると、全ての回答が全文表示されます。
  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

ア行とは何であるかExcelに教える必要があります。 「ア行」を選択>ア・イ・ウ・エ・オから始まる人名を抽出。 「カ行」・・・・・ 「サ行」・・・・・ ではないでしょうか? >ピックアップされるような とは具体的にどうしたいのか不明。 Msgboxで表示する?シートに書き出す?その他?

syu-1
質問者

補足

n-junさん回答ありがとうございます^^ 本題です。 >ピックアップされるような >とは具体的にどうしたいのか不明。 >Msgboxで表示する?シートに書き出す?その他?  質問に不備が有りました。すみません^^; ※ピックアップとはシートに書き出す処理を行いたいです。 また私の質問で、 >ア行を選択した場合、ワークシート上の人名リストの内、 >ア行に該当する人名がピックアップされるようなマクロを組みたいのですが、上手くいきません;;; ※この文章にも不備がありました。  カタカナで表記された人名の頭文字が、ア行に該当する人名を別のワークシートに書き出すマクロを組みたいです。 内容に不備がありすみません。 回答ありがとうございます^^

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

関連するQ&A

  • あかさたなはまやらわ

    あ行、か行、さ行、・・・に対してどんなイメージを持っていますか? 全部でなくてかまいませんので、ご回答よろしくお願いします。 [例] あ行:平均的、安定感がある か行:硬い さ行:すばやい た行:力強い などなど・・・ [テンプレート] あ行: か行: さ行: た行: な行: は行: ま行: や行: ら行: わ行:

  • Excelで、sheet全てを含む形で、文字列の検索を行い、該当する文字列のあるsheetへ自動的に飛ぶにはどうしたらよいでしょうか?

    環境:Excel2003 状態:Excelのsheet毎に「ア行」「カ行」・・・と作り、10sheet作成。    それぞれ「ア行」のsheetなら、「あ行」の氏名を、    「カ行」のsheetなら、「か行」の氏名を記載しています。 【検索したいこと】 例えば、「明本」と検索sheet上などで検索をした場合、自動的に「ア行」sheetの「明本」のセルに飛ぶようにしたい。 ※通常の「検索」「オプション」の方法以外に何かありましたら、お教えいただければと思います。 ※マクロについては初心者なので、もしマクロでの方法がありましたら詳しく教えていただきたく思います。 すみませんが、宜しくお願い致します。

  • エクセルで名簿を50音で切り分ける

    一つのシートに名簿があります。 半角カタカナでフリガナデータを持っていますが、 ア行で始まる人のシート、 カ行で始まる人のシート、・・・・ という様に切り分けたいのですが・・・ そういう事ってマクロで可能ですか とりあえず、ア行は1、カ行は2、と関数でコーディングしておき、1の範囲を新規シートにコピー、2の範囲を・・・とやっていけばいいのかなぁ・・・などとおぼろげに考えていますが・・・ ただ、現実に自分でマクロを組むことが出来ないので・・・ どうすればよいか教えていただければ幸いです。

  • 検索について

    今、野球選手をカタカナでDBに登録されています。 選手を検索するため、 ア行、カ行、サ行・・・ と選択して、 たとえばカ行を選択した場合、 登録している選手名の先頭の文字がカ行(カキクケコガギグゲゴ)の選手を取得したいのですが、うまくいきませんどのようにすればいいでしょうか?

  • FC2ブログで特定のカテゴリだけ表示/非表示

    プラグインの中で、カテゴリの項目があるが 初期設定では下記のようになっており、全カテゴリが表示されています。 <a href="<%category_link>" title="<%category_name>"><%category_name>(<%category_count>)</a> これを特定のカテゴリだけ表示したいです。 下記の例で「か行、な行」のみ表示するにはどうすればいいでしょうか? 教えて下さいよろしくお願い致します。 例)  【全表示の場合】    あ行 か行 さ行 た行 な行  【特定表示の場合】    か行 な行

  • エクセル VBA 複数シート検索

    超初心者です。 エクセルは2000を使用しております。 VBAを使って、複数シート(各フロア)にある座席表から、複数の人名(重複なし)を検索後、該当セルの背景に色を塗って印刷したいのですが、WEBで検索しても思うようにマクロを組めません。お助け願います。 質問が上手く出来ていないかもしれませんが、流れとしては 下記の感じです。 1.あらかじめ決められたシートに検索する人名のリストが存在 2.決められた複数のシートから検索 3.リストを上から順に人名がなくなるまで検索をループ 3.該当のセルの背景を塗りつぶす 4.印刷 簡単に言えば、誰がどのフロアのどこにいるかすばやく検索したいです。 っという感じでしょうか。

  • Excel

    仕事で顧客リストを作りました。 7月、8月、、と複数のシートで管理するように、お客様をあ行カ行サ行と縦に入力し、来店済みの人には左の表に◯をつけています。 先月来店したのに今月来てない人を探すようなExcelの関数はありますか?

  • 使用する関数式がわからなく困っています

       A  B  C  D  E   1  あ行 か行 さ行 た行 な行  2           千葉 3   このような表でA2:E2の範囲50音に該当する1つで都道府県を入力した場合(今回の場合は”千葉”) その結果をA3に表示させたい場合はどのようにすればよろしいか教えてください。よろしくお願いします。

  • UFJ銀行 枚方支店 何て読むのですか?

    オークションで相手の口座に振り込みたいのですが、支店名は何て読むのでしょうか? ア行 カ行 サ行 で、支店名を検索したいのですが、読み方が分からないので、検索出来ません。 ご存じの方よろしくお願い致します。

  • 例にならって五十音図を使った次のたし算でできる言葉をカタカナで答えなさ

    例にならって五十音図を使った次のたし算でできる言葉をカタカナで答えなさい。 例)カ行・ア段+カ行・イ段=カキ(柿) 問題 1)パ行・オ段+タ行・エ段+タ行・オ段 2)バ行・ア段+ア行・イ段+カ行・ウ段 3)ア行・イ段+ガ行・イ段+ラ行・イ段+サ行・ウ段 4)ダ行・エ段+ザ行・イ段 +タ行・ア段+ラ行・ウ段    宜しくお願いいたします。