• ベストアンサー

Excelでのデータ入力規制とエラー表示

氏名を入力するセルの入力規制とエラー表示を以下要件で行いたいです。 ・全角入力のみの制限 ・全角入力と全角スペースが1つ入力されていない場合メッセージボックスでエラー表示を出した ・できればマクロを使用せず実現したい 可能でしょうか? 可能であれば手法を教授頂きたいです。 よろしくお願いします。

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

  • ベストアンサー
  • masnoske
  • ベストアンサー率35% (67/190)
回答No.2

まとめると「全て全角 かつ 全角スペースが 1つ」ということですね. 以下の数式を入力規則から入力値の種類でユーザー設定を選択し,数式ボックスに入力します(入力規則は A1セルに設定するという前提で説明します). = AND(A1 = JIS(A1), LEN(A1) - LEN(SUBSTITUTE(A1, " ", "")) = 1) 「すべて全角」は LEN関数と LENB関数を使用する方法もありますが JIS関数を使用する方法もあります. A1 = JIS(A1) 「全角スペースが 1つ」は LEN関数と SUBSTITUTE関数を使用します. LEN(A1) - LEN(SUBSTITUTE(A1, " ", "")) = 1 条件は「かつ」なので 2つの式を AND関数で繋ぎます. AND(A1 = JIS(A1), LEN(A1) - LEN(SUBSTITUTE(A1, " ", "")) = 1) JIS関数は,半角文字を全角文字に置き換える関数なので,半角文字が含まれると元の文字列と違うものになります. 逆の関数で ASC関数があります. こちらは全角文字を半角文字に置き換える関数ですが,全部半角かどうかの判定には使えません. たとえば "土日月" なら,半角に置き換えても "土日月" なので同じ文字列になってしまいます. 逆に変換後の文字列が違っていれば,半角文字が含まれているということなので,全てが全角とは言えないと同じになります. なので ASC関数を使って,以下のように全て全角かどうかを判定することは可能です. A1 <> ASC(A1) 全部半角かどうかは LENB(A1) = 2 * LEN(A1) で判定できますが,入力規則を使用するのなら,日本語入力を無効に設定すれば判定する必要はありません.

その他の回答 (2)

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.3

No.2 です. 以下の部分を削除してください. 逆に変換後の文字列が違っていれば,半角文字が含まれているということなので,全てが全角とは言えないと同じになります. なので ASC関数を使って,以下のように全て全角かどうかを判定することは可能です. A1 <> ASC(A1)

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

規則を設定したいセルを全て選択して(たとえばA1を含む範囲とした場合) 入力値の種類を「ユーザー設定」にして 「数式」に以下を入れて試してみてください。 =AND(LEN(A1)*2=LENB(A1),SUM(LEN(A1)-LEN(SUBSTITUTE(A1," ","")))/LEN(" ")=1)

関連するQ&A