アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel2003 VBAです。

2つの文字列があって、この2つの文字列を日本語の部分だけで
比較しようとしています。

なので、文字列からアルファベットと数字と記号を削除してから
比較したいのですが、どんな方法があるでしょうか。

よろしくお願いします。

A 回答 (3件)

ヘルプ「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
    • good
    • 0
この回答へのお礼

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

ありがとうございました。

お礼日時:2014/05/06 23:21

こんばんは!



>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
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/05/06 23:18

日本語だけを取り出すのは



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

こんな感じでいかがでしょう。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/05/06 23:15

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!