• ベストアンサー

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

  • VBA(Excel)で文字列内の"~"記号だけ半角変換したくない

    VBA(Excel)で、StrConvを用いて、文字列内に存在する記号を全角→半角に変換して、再び文字列内に格納するようにしています。   strValue = StrConv(strValue, vbNarrow) しかし、"~"も"~"に変換されてしまいます。 "~"は半角変換しないようにしたいのですが、何か良い手法はありますでしょうか? どなたかご教授下さいませ。 よろしくお願い致します。

  • 文字の置換のVBA

    こんばんは。 下記の文字列の置換をマクロ(VBA)で出来ますでしょうか。 今は関数(SUBSTITUTE)を繰り返して処理しているのですが、1度で出来る方法がありましたら教えて下さい。 100 ABC-23d=3,4 → 100ABC23D3.4 (1)スペース削除 (2)小文字を大文字へ (3)"-" "=" など数字とアルファベット以外を削除 (4)","→ "." (カンマをドットへ変換) 宜しくお願いします。

  • Excel2016で文字列の一括置換を行うVBA

    Excel中級者です。Windows10, Excel2016で、別の「マスタ」シートにある表に従い、「Data」シートにある文字列を一括置換するVBAを教えていただけますと幸いです。マスタ表は2列 100行で1列目に置換前の語、2列目に置換後の語があります。dataシートは1顧客1行で、20列に商品名が入っており、同シートで一括置換を実行したく存じます。どうぞよろしくお願い申し上げます。

  • Excel文字列の連結について教えてください(VBA)

    Excelの文字列の結合について教えてください。 色々調べたのですが、VBA自体がよくわからず困っています。 やりたい事は、(Excel表をご参考) 『セルA1とB1とA2の文字を固定で、セルA3以降の文字以降を  順次連結してcsvに書き出すVBAを作成したい。』 どうしても繰り返す連結マクロがわかりません。 ExcelVBAに詳しい方、教えてください。 よろしくお願いします。 結果例) 20080501A01 20080501A02 20080501B01 20080501C01   ・   ・(300件以上続きます) <Excel表>    A列  B列 1  2008  05 2  01    3  A01 4  A02 5  B01 6  C01 7  ・ 8  ・

  • 文字列の比較

    excelvbaです。(excel2003) 3個のセル(a1,b1,c1)に文字列が入っています。 このそれぞれ文字列の右8桁を比較し、 最小の文字列が入っているセルに色を付けたいのです。 調べたら、minは使えませんし、dminがありましたが、 right(range("A1").value,8)をどう扱うかが分かりません。 出来ましたら、dminでなく他の方法が在ればベターです。 宜しくお願いします。

  • 文字列の分解

    ”abddfr018874”のようにアルファベットと数字が分かれている文字列において、アルファベット部分と数字部分に分けて取り出したいのですが、そういうことが できる関数は有りますか? 多分無いと思うのですが、そうだとすると1文字ずつ数字かどうかを判断して、分解するしかないのでしょうか? <環境> WIN98 VC++6.0 MFC 

  • Excel2003 マクロで同じ文字列の行を消す

    Excel2007からは重複したデータを消すことは出来ますが、同じ文字列を全部消す(ひとつものこらず)方法が無いか悩んでいます。 例えば、A1に「1234」 A2に「4231」 A3に「1234」がある場合、A1とA3どちらも削除したいです。 このような事が自動で出来るマクロをどのようにすれば作れるでしょうか? 私が考えているのは、 1)A列をソート 2)一つ前の行と比較して同じならどちらの行も消す (同じデータは、2つ以上ないです) という具合なのですが、2の部分の書き方が分かりません。

  • VBA CASE文 文字列比較に特殊記号

    CASE文で ¥ \ など特殊な記号で 文字列比較したいケースが時折あります。 MsgBox 等で比較すると問題無くTrueになるのですが、 Caseの文字列比較だと正しく評価されません。 どの様に記述するべきでしょうか。

  • 文字列の分離方法

    お世話になります。 エクセルで下記の様な数字とアルファベットが組み合わさった 文字列を数字とアルファベットに分離させたいのですが、 VBAでそれをする場合、どの様な記述をすれば宜しいでしょうか。   記 ・154AC ・2298BCZ ・80X

  • VBAで正規表現を使って文字を抜き取りたい

    以下のような文字列があったとします あいうえおかきki990sks98くけこさし この中からki990sks98の部分のアルファベットと数字による10ケタの文字列を 抜き出したいとおもっております。 但し、対象の文字はランダムに変化します 例えば すせそ8ds8sjj9seなにぬねのは ひふへほまみむis987ss9s0めも ですので文字列の位置や左右に囲まれた文字列を指定して欲しい部分を取り出す事ができませんので 「アルファベットと数字を含むだけのものが連続して構成される10ケタの文字列」 という形で文字列を抜き取りたいのですが、どのようにしたらよいでしょうか? アドバイスをお願いします。 可能であればVBA用に 変数に上記のランダム文字列が入っている状態からの抜き取り作業コードも教えていただければ幸いです。(初心者なものでもうしわけありません) よろしくお願いします。

このQ&Aのポイント
  • スマホと個人PCはWi-Fiが繋がるのに、会社PCだけ一旦は繋がるもののすぐに切れてしまい困っています。
  • とりあえずテザリングで対応している状況ですが、お金がかなりかかりそうなので解決できると嬉しいです。
  • エレコム株式会社の製品についての質問です。ご利用の端末タイプ・OSはノートパソコンで、製品名はWRC-X3200GST3です。接続方法は無線LANです。質問内容の要約として、Wi-Fiが会社PCで繋がるがすぐに切れる問題を解決する方法を教えてください。
回答を見る

専門家に質問してみよう