• ベストアンサー

可能でしょうか?

  A   ヤマダタロウ ・・・フリガナ 1 山田太郎    で、「や」だけを認識させることは可能でしょうか。 つまりフリガナの1番目だけをifの判断条件として使いたいのです。 エクセルのフィルタみたいなことVBAで総なめで検出したいということです。 宜しくお願いします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問項目では「VisualBasic」となっています。また質問文中では「エクセル」の言葉も出てきます。 そして「VBAで」と出てきます。ということは、エクセルVBAやアクセスVBA、ワードVBAを念頭においているのですか?これをはっきりさせないと、回答の可能・不可能を左右するぐらい影響があると思います。 エクセルではA1セルに「やまだ」と入力し変換して、「山田」と入力したとき、B1セルに=PHONETIC(A1)といれると、「ヤマダ」と表示され、C1セルに=MID(B1,1,1)をいれると、C1に「ヤ」が表示されます。このやり方ではダメですか。 エクセルVBAなら Sub test01() Cells(1, "B") = Cells(1, "A").Phonetic.Text Cells(1, "C") = Mid(Cells(1, "B"), 1, 1) End Sub で実現できます。 VB6.0などだと、APIを使わねばならないとおもうので、「できる・出来ない」の答えは出来ないに当たると 思いますが。 「総なめで検出したい」という表現も、ファイル全体という意味でしょうが、私個人的には、全文字や全フィールドや全ファイルをWhile Loopで全数繰り返し聞く(判別する)イメージが強くでるので、一番初等的なロジックをわざわざ指定していることになり、書かずもがなとおもいます。

keiri2002
質問者

お礼

早速の回答有難うございます。 imogasiさんには、いつもお世話になってます。 Sub test01() Cells(1, "B") = Cells(1, "A").Phonetic.Text Cells(1, "C") = Mid(Cells(1, "B"), 1, 1) End Sub が欲しかったのです。「ヤ」だけ欲しいので Cells(1, "C") = Mid(Cells(1, "A").Phonetic.Text ,1,1)としてもいいですよね。 >「総なめで検出したい」という表現も・・・・ こういう「高等テクニック」が出来るようになったのもつい最近のことでして、まあ表現云々は、絶対的知識量の違いということでご容赦願います。 今後も同じような質問をするとは思いますが(進歩はしているはず・・・当社比1.5倍くらい)そこはimogasiさんの推察で的確な回答を頂けるものと願ってます。 有難うございました。

その他の回答 (1)

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1

結果的にいうと、無理。 山→や という情報をもってないとダメ。 だから入力時に振り仮名をつける必要がある。

keiri2002
質問者

お礼

どうやら質問の仕方が悪かったらしいです。。