質問: 列ごとに全角英数・全角カナ・半角カナしか入力できないフォーマットをつくりたい エクセルで基本フォーマットを作り、他の人に配布&入力してもらった後、全てを集計&データベース化する必要があるのですが。 各列に設けた項目により、‘全角英数のみ’‘全角カナのみ’‘半角カナのみ’の入力規則を設けた後、ロックをかけてみたのですが、変換できてしまう...? 全角英数&カナに関しては【=len()*2=lenb()】で逃げれたように思うのですが、‘半角カナのみ’の入力設定がわかりません...;; ちなみに、別の列に入力したものを数式で半角に変換する方法は、今回のフォーマットには使いたくないのですが...?? どなたか、お助けください...**
回答: 入力規則の[日本語入力]タブの設定は、 あくまでimeを自動的に切り替えるだけのものですから、 残念ながら、指定した種類の文字以外の入力を禁止することはできません。 また、「全角英数のみ」「全角カナのみ」「半角カナのみ」を 簡単に判定する方法も、おそらくないと思います。 以下、かなり無理矢理ですが、 データ>入力規則>設定タブ>ユーザー設定>数式で... -------------------------------------------------------------------- ●a案:コード番号で指定する 例えば「半角カナのみ」の場合 (小書き文字,鍵括弧や長音記号など一部の記号を含む) =and(161<=min(index(code(mid(a1,row(indirect("$1:$"&len(a1))),1)),)),max(index(code(mid(a1,row(indirect("$1:$"&len(a1))),1)),))<=223) 【入力しようとした文字列のすべての文字のコード番号が、161以上223以下であれば許可】 コード番号は、code関数で調べることができます。 「半角カナ」161~223 「全角英数」9008~9082 「全角カナ」9505~9590 ※「数式はエラーと判断されます。続けますか?」 というメッセージが出てもそのまま「はい」で続行。 -------------------------------------------------------------------- ●b案:許可する文字を全て書き出す 例えば「全角英数のみ」の場合 =sumproduct(--iserror(find(mid(a1,row(indirect("$1:$"&len(a1))),1),"0123456789abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz")))=0 【入力しようとした文字列のすべての文字が、指定した文字列の中にあれば許可】 -------------------------------------------------------------------- ※いずれもexcel2003で動作確認済 ※当然ですが、[日本語入力]タブの設定も併用して、 imeを自動的に切り替えないと非常に不便です。 ※数式が長いので、直接打ち込むのではなく、 別の場所に書き込んでから、コピー>ctrl+vで貼り付けた方が確実です。 以上ご参考まで。