• ベストアンサー

マクロを使って文字列を分類したい。

マクロを使って、次の処理を行うマクロを作りたいのですが、 まず、漢字・ひらがな・カタカナ・数時・アルファベットを識別するコードの抽出方法と、コードの一覧がわかりません。 それから、文字列の処理の関数がなかなか思いつきません。 2年ほどマクロを使っていません。エクセルも2007になり、かなり勝手が違います。 できれば、マクロを示していただければありがたいのですが、 重要なヒントを示していただいても構いません。 ----------------------------------------------- セル(H、5)の中に、いろいろな文字列があります。 例えば、 「東京1月アメリカEUやまとChinaイギリス日本2009年おわり」 ですが、 これを 漢字をA列に1行から順に、 東京 月 日本 年 ひらがなをB列に1行から順に、 やまと おわり カタカナをC列に1行から順に、 アメリカ イギリス 数字をD列に1行から順に、 1 2009 アルファベットをE列に1行から順に、 EU China というように出力するマクロを作りたいのです。 よろしくお願いします。

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 「東京1月アメリカEUやまとChinaイギリス日本2009年おわり」 この文には、助詞がありません。だから可能ですが、助詞の区分けをしなくてはならないとしたら、もっと複雑になりますが、本格的に行うなら、Perl を使ったり、VB系では、BREGEXP を使ったりします。 なお、VBEditor 内では、Unicode ですから、JISの並びとは違いますから、ややこしいです。以下を参考にしてみてください。 '--------------------------------------------- Sub Test1()   Dim mText As String   Dim objRe As Object   Dim Matches As Object   Dim Match As Object   Dim buf As String   Dim v As Variant   Dim i As Integer   Dim j As Integer   Dim Ar() As Variant   ReDim Ar(4, 0)   If Range("H5").Value <> "" Then     mText = Range("H5").Value   Else     Exit Sub '文字がない場合   End If   '漢字,ひらがな,半角カタカナ/全角カタカナ,数字、アルファベット   For Each v In Array("[一-龠]+", "[ぁ-ん]+", "[\uFF66-\uFF9Fァ-ヶ]+", "[\d0-9]+", "[A-zA-z]+")     With CreateObject("VBScript.RegExp")       .Global = True       .Pattern = v       If .Test(mText) Then         Set Matches = .Execute(mText)         For Each Match In Matches           If UBound(Ar, 2) < i Then             ReDim Preserve Ar(4, i)           End If           buf = Match.Value           If IsNumeric(buf) Then buf = "'" & buf           Ar(j, i) = buf           i = i + 1         Next         j = j + 1         i = 0       End If     End With   Next v   Range("A1").Resize(UBound(Ar, 2) + 1, UBound(Ar, 1) + 1).Value = _   Application.Transpose(Ar) End Sub

xa_tubame
質問者

お礼

感謝申し上げます。 勉強になります。

その他の回答 (1)

回答No.1

エクセルであれば、 =CODE("A")→65 =CHAR(65)→A(半角のA) =CODE("東京")→17772(先頭の文字を処理) =CHAR(17772)→東 VBAであれば、ASC関数がCODE関数、CHR関数がCHAR関数と同じような機能みたいです。 私は使い慣れていない関数なので、実際に試してみると良いと思います。 以前マクロを使用されていたとの事ですので、詳しく書く必要もないと思いますが、 関数の性質上、一文字ずつ処理していけばできるでしょう。 参考までに私がエクセルのCODE関数で試したものです。 A~Z 65~90 a~z 97~122 A~Z 9025~9050(全角) a~z 9057~9082(全角) 0~9 48~57 0~9 9008~9017(全角) ぁ~ん 9249~9331 ァ~ン 9505~9587 亜 12321 腕 20307

関連するQ&A