プロが教えるわが家の防犯対策術!

Excelで、セル内の文字の文字コードが全て、ある範囲内であるかどうかの判定はどうすればいいですか。範囲内であれば、そのセルの右セルに○を設定する、などで結構です。

A 回答 (3件)

>セル内の文字の文字コードが全て、ある範囲内であるかどうかの判定


は言い換えると「セル内には、【ある範囲の文字コード以外の文字は存在しない】ことを判定する」と同義です。
例えばA1セルのセル内が英数記号のみで、「!」=CAHR(33)から「~」=CHAR(126)までの文字しかないと判定されたとき、B1セルに○を表示するとすると、

=REPT("○",SUMPRODUCT(ISNUMBER(FIND(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1),CONCAT(CHAR(ROW($33:$126)))))*1)=LEN(A1))・・・①

という数式で判別できます。
つまり、数式①のCHAR(ROW($33:$126)の部分の数値を文字コードの最小・最大の数値をセットすればよいことになります。
    • good
    • 0

まず、対象とする文字コード(JIS、SJIS、EUC等)の一覧で、一番値が小さい文字と一番値が大きい文字のコードを確認します。


プログラム内では入力された文字(文字列の場合は1文字ずつ)の文字コードがその範囲内にあるかをIF分を使って確認されればよいです。

参考まで。
    • good
    • 0

こんにちは



一文字ずつチェックするしかないと思います。
VBAで正規表現でチェックする方が簡単そうな気もしますが、関数でやるなら・・

チェックの内容により「ある範囲内にある」をチェックするのか「ある範囲内に無い」をチェックするかのどちらが良いかは変わると思いますが、例えば半角英大文字のの「A~Z」だけであるチェックを行うなら・・
対象の文字列がA1セルにあるとして、B1セルに
=IFS(A1="","",SUMPRODUCT((CODE(MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1))<65)+(CODE(MID(A1,ROW(OFFSET($A$1,,,LEN(A1))),1))>90)),"",1,"〇")
で、可能と思います。
(文字コードが、65~90にない文字数を数えて、0なら"〇"としています。)
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A