• ベストアンサー

エクセルで文字化けしているセルを検索するには?

あるDBをエクセルに読み込んだところ、文字が「・」と表示されている箇所がいくつもあるのを発見しました。DBは紙に印刷したものがありますので、それを参照して「・」を正しい文字に置き換えたいと思い、エクセルの検索機能を使って「・」(全角/半角)を検索しましたがうまく検索できません。どうも見かけは「・」でも実際には違う文字のようです。(たまたま発見したところを印刷したDBで調べたところ、やはり「株」を丸で囲んだ文字でした。)どなたか文字化けした「・」を漏れなく検索する方法をご存知でしたら教えてください。(何箇所もあるため、目を皿のようにして探すのは骨が折れます。)よろしくお願いします。

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

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

こんにちは。 今、私は、状況を正しく認識しているわけではありませんので、出来れば、詳しい状況を知っておきたいです。それが解決の目処になります。もし、Dxakさんのおっしゃるように、EUCの外字?でしたら、もとより、私の考えていることはUnicode範囲内では不可能です。 ご質問者の >エクセルの検索機能を使って「・」(全角/半角)を検索しましたがうまく検索できません。 これに関しては、Unicode範囲内でしたら、セルを選択し、数式バーに表示されて、その中から、「・」の該当する部分を選択し、Ctrl + C を確保し、[Esc] で選択を解除したら、検索機能や置換機能で、検索文字として、Ctrl+V で貼り付けをすれば、検索/置換は可能です。 私の知る限りでは、Excelのワークシート上で、「・」のように表示された場合、CODE()関数では、正しい文字コードは取れないと思っています。CODE()関数は、あくまでも、Shift-JIS 範囲内ですので、その範囲内のコードを返してくるはずです。 出来ましたら、ユーザー定義関数を、標準モジュールに貼り付け(記録マクロと同じ場所)てください。 '標準モジュール Function U_Code(arg As Variant) 'ユニコードを調べる関数 If VarType(arg) = vbString Then   U_Code = AscW(arg) End If End Function セルに 文字化けの文字  =U_Code(A1)          =CODE(A1) と比較してみて、コードを教えていただけませんか?

depa
質問者

お礼

『これに関しては、Unicode範囲内でしたら、セルを選択し、数式バーに表示されて、その中から、「・」の該当する部分を選択し、Ctrl + C を確保し、[Esc]で選択を解除したら、検索機能や置換機能で、検索文字として、Ctrl+V で貼り付けをすれば、検索/置換は可能です。』 できました!この方法を試してみたら「・」の裏にかくれている文字が何種類あっても、うまく検索、置換ができました。ありがとうございました。 ちなみに、ユーザ定義関数を作成して比較した結果は以下のとおりです。 「髙」U_Code -7315    CODE  34880 「(株)」(1文字でかっこ付の株)    U_Code -8004    CODE  33057 本当にありがとうございました!!

その他の回答 (3)

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.3

> 同じ文字コードが使われている「・」の一発検索、 > 一括置換の方法があれば良いのですが。 「・」が、1つの文字コードであれば検索でなく、 「・」を見つけて置き換え、 =SUBSTITUTE(対象セル,CHAR(判明した文字コード),"(株)") を1回実施して、コピー&形式を・・・貼り付けで簡単に完了します。 (要するに、含む含まない無視してますね、コピペで編集-置換も使えるかな?) > それと、文字コードからそれに対応する文字を調べる > 方法があれば教えてください。 で、これはケースバイケースなので文字コードがどこを使用しているか傾向を見ないと判りません。 私の時は、大半が外字でした。 元のデータを調べると、EUCコード、要するに化けの大半は「EUC外字」でした。 (他にも化けていたのが、あったのですが・・・。) 中身に関しては、表示できていた端末の外字エディタで中身を確認と言う手が使えましたけどね。 (コードは、読み込み時変換されていたみたいで使えませんでした。) 追伸 ホストがIBM製だからIBMコードを使用しているとも考えたのです・・・だから、標準EUCではなく、外字対応したのかな~っと。

depa
質問者

お礼

>「・」が、1つの文字コードであれば検索でなく、 >「・」を見つけて置き換え、 実際は「・」は1つの文字コードではありませんので難しそうです。 ご回答ありがとうございました。

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

こんばんは。 それは、たぶん、Unicode文字ではありませんか? ワークシートの関数は、Shift JIS 対応なので、関数では出てきません。 例えば、「○株」のUnicodeは、 ワークシート関数では、その文字は、63 =「?」ですね。 その文字は、Unicode 10進で、12945 16進で、&H3291 ということです。 そういう場合は、AscW()というVBA関数で調べます。 それは、VBAマクロで、文字を全部置き換えするか、それとも、ワークシートのフォントをUnicode 文字にするしかないのではないか、と私は思います。Unicodeフォントは、Excelのバージョンにもよりますが、ひじょうにメモリを使ったような気がします。 ただ、VBAマクロでも、Unicode変換表を作るのが、ちょっと手間です。その全てを網羅するというのは、かなり自信がありません。

depa
質問者

お礼

ご回答ありがとうございます。 「VBAマクロで文字を全部置き換えする」方法が良さそうですが、かなり専門的で現在の私には手に負えそうもありません。 が、これを機に勉強してみようと思います。

  • Dxak
  • ベストアンサー率34% (510/1465)
回答No.1

昔同じ事を実施しましたが・・・。 かなり手間が折れます。 まず、文字コードを識別することが先ですね。 「丸株」だけではなく、「丸有」もあるでしょうから・・・確か私のときは20種類近く・・・。 文字で =CODE("・") にて文字コードを調べて、 =SUBSTITUTE(対象セル,CHAR(判明した文字コード),"(株)") で、散々実施していきましたが、目が点になります。

depa
質問者

お礼

早速のご回答ありがとうございます。(文字コードの調査方法、参考になりました!) やはり目が点になりましたか・・・。 同じ文字コードが使われている「・」の一発検索、一括置換の方法があれば良いのですが。 それと、文字コードからそれに対応する文字を調べる方法があれば教えてください。

関連するQ&A