- 締切済み
Excelで文字化けを検出する方法
Excelで、いわゆる「文字化け」を検出する方法はありますか。 例えば、列方向にダーっと文字データが並んでいて、そのセルの中に文字化けがあれば、その右側のセルに○を付けて(設定して)くれる、以下のような。(には、実際には色々な文字化けデータが入ります) 高橋広 ○ 浜田信二 中井子 ○ 山田太郎 中西太 ○
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- msMike
- ベストアンサー率20% (364/1804)
確認させてください。 私自身は“いわゆる「文字化け」”に遭遇したことがないので、貴方が経験されている「文字化け」の混入の姿をスクショに撮って見せてください。お願いします。m(_._)m
- chie65536(@chie65535)
- ベストアンサー率44% (8741/19839)
ブックでVBAエディタを開いて「標準モジュール」に以下を追加して Function codecheck(str As String) As Boolean Dim i As Integer Dim c As Integer For i = 1 To Len(str) c = Asc(Mid(str, i, 1)) If c > -4096 And c <= -1 Then codecheck = True Exit Function End If Next codecheck = False End Function B1セルに =IF(codecheck(A1),"〇","") という式を入れます。 判定は「文字コードがF000~FFFFの間なら文字化け」として判定しています。 他にも「シフトJISコードからUNICODEに変換して、再度、UNICODEからシフトJISコードに変換して、元の文字コードに戻るか?」で、判定する方法もあります。
- notnot
- ベストアンサー率47% (4900/10358)
「文字化け」というのは様々な現象に対しての主観的な評価なので、プログラムで客観的に判断することは出来ません。あくまで主観なので例えば、外国語のメールが来て「文字化けしたメールが来た」と思う人もいるわけです。「文字化けしたメール」をプログラムで判断は無理とおわかりかとおもいます。(AIを使えば「多くの人が文字化けと思うメール」は判断可能だが、あくまで多数意見) 一般論はさておき、お書きの文字を見ると、UNICODEの外字領域(E000~E3FF)の文字のようです。おそらくJISに無いだけでなくUNICODDEにも無いようなレアな文字なのでしょう。 文字列を、MID関数で1文字ずつ切り出して、UNICODE関数を使うと、その文字のUNICODE値が整数で得られます。16進数でE000からE3FFというのは、10進数で書くと57344から58367なので、例えば、 =AND(UNICODE(MID(A1,3,1))>=57344,UNICODE(MID(A1,3,1))<=58367) が真ならA1セルの3文字目がそういう文字です。 セル関数でやるなら1文字ずつ補助セルを作らないと、数百文字の数式になりそうです。 A1の文字列が3文字未満の可能性も考えると、MID(A1,3,1) の部分は MID(A1&"____",3,1) で。
- redslove10
- ベストアンサー率41% (397/968)
文字化けは、インストールされているフォントに依存します。質問者さんのPCで文字化けしていても元のデータを作った人のPCでは正しく表示されている可能性があります。 文字化けではなく、文字列を構成する文字の文字コードが想定範囲外であることはプログラムを作れば検出可能です。
- hiro_1116
- ベストアンサー率30% (2556/8268)
文字化け部分にいろいろな文字が入っていて、人間がみれば「あれっ?名前としては不自然だな!」と気付くものでも、Excel等で検出させるロジックが組めないでしょう、恐らく。
お礼
ご回答ありがとうございます。 そうですか、残念です・・・。