• ベストアンサー

Excel2003 VBA 文字列の比較で

Excel2003 VBAです。 2つの文字列があって、この2つの文字列を日本語の部分だけで 比較しようとしています。 なので、文字列からアルファベットと数字と記号を削除してから 比較したいのですが、どんな方法があるでしょうか。 よろしくお願いします。

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

  • ベストアンサー
回答No.2

ヘルプ「ASCII 文字セット (0 - 127)」や「ASCII 文字セット (128 - 255)」に載っている文字であれば、例えば次のような感じで置換・削除できます。記号などであっても全角文字については対象とならないので、注意してください。2 系列の文字列があるなら、i のほかに j という変数も導入してループを回してください。 Dim i As Long, jpnString As String jpnString = "!聖%徳*太-子゜" For i = 32 To 223   jpnString = Replace(jpnString, Chr(i), "") Next i Debug.Print jpnString

pollux0375
質問者

お礼

ご説明ありがとうございます。 とても分かりやすくて、高速な変換ができました。 なるほど、文字コードを確認すればよかったんですね。 ありがとうございました。

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! >2つの文字列があって、この2つの文字列を日本語の部分だけで比較 具体的にどのような比較の仕方がご希望なのか判らないので、 とりあえず、A1セル以降にある文字列データを「ひらがな」「カタカナ」「漢字」のみをB列に表示するようにしてみました。 (半角カタカナは含んでいません) Sub Sample1() Dim i As Long, k As Long, str As String For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row For k = 1 To Len(Cells(i, "A")) str = Mid(Cells(i, "A"), k, 1) If str Like "[あ-ん ア-ン 一-黑]" Then '←半角カタカナは含んでいない Cells(i, "B") = Cells(i, "B") & str End If Next k Next i End Sub ※ 比較対象はお好みで別列に表示してみてください。m(_ _)m

pollux0375
質問者

お礼

ご説明ありがとうございました。 ただ、他の方の方法を採用してしまいましたので、テストには 至りませんでした。

  • kmetu
  • ベストアンサー率41% (562/1346)
回答No.1

日本語だけを取り出すのは Sub test() Dim i As Integer Dim jpnstr As String jpnstr = "" For i = 1 To Len(Range("a1")) If Mid(Range("a1"), i, 1) = StrConv(Mid(Range("a1"), i, 1), vbWide) Then jpnstr = jpnstr + Mid(Range("a1"), i, 1) End If Next i Range("c1") = jpnstr End Sub こんな感じでいかがでしょう。

pollux0375
質問者

お礼

ご説明ありがとうございました。 ただ残念ながら私には少し難しかったので、うまくできませんでした。

関連するQ&A