
エクセルで、特定の文字列(複数あります)を入力した場合にエラーメッセージを表示したいと思っています。可能でしょうか?
仕事上で使うシートなのですが、
私が表の枠と見出しのみ入れたものに、他の部署の人がデータを入力して、また私宛に戻してきます。その後、そのデータをcsvファイルに変換し、あるソフトで読み込みデータを処理します。
入力してもらうデータの形には一定の決まりがあり、入力してはいけない文字列があります。
例えば、都道府県名を入れるセルがあり、
「都」「府」「県」は入力してはいけない(入力すると、最終的にデータを使用するソフトでエラーになる)、
つまり、「東京都」は誤りで「東京」とするのが正しいというものです。
入力するセルとは別のセルに、関数で「都」「府」「県」を除いた文字列を表示するようにしようかと思ったのですが、これでは見た目上の解決にしかならず、結局csvファイルにした時にエラーになってしまいます。
そこで、入力規則の設定で「~都」「~府」「~県」の文字列の場合にエラーメッセージが出るようにしたいのですが、
このように入力してはいけない文字が複数ある場合の数式がわかりません。
(「~県」だけが入力禁止なら、入力規則→設定で、許可=ユーザー設定 にして、数式を「=countif(A1,"*県")=0」とすれば出来るのですが……)
入力可能な文字数の設定で回避しようにも、「東京」は2文字ですが「鹿児島」は3文字です。
また、他の入力項目で、特定の文字列については置き換えが必要なものが出てくるので
(例えば「株式会社」→社名の先頭の場合は「カ)」、社名の後ろの場合は「(カ」など。)
関数などで自動的に変換されるより、入力直後に人間が誤りに気づいて訂正できるものの方が都合がよさそうです。
なお、アナログな方法ですが、見出し部分に ”「都」「府」「県」は入力しないでください” など注意書きは入れています。しかし、それに気づいてもらえていないのか、それとも勢いで「~県」と入力してしまうのか、ほとんど効果なしです。
こんな状況なのですが、入力時にエラーを表示する方法を教えてください。
No.4ベストアンサー
- 回答日時:
No.3です!
たびたびごめんなさい。
前回のコードでは「京都府」の場合、「京都」としても「都」が含まれていますので、エラーになってしまいます。
前回のコードの
If Target Like "*都" Or Target Like "*府" Or Target Like "*県" Then
の行を
If Target Like "東京都" Or Target Like "*府" Or Target Like "*県" Then
に訂正してください。
検証せずに投稿して失礼しました。m(__)m
2度の回答ありがとうございます。
「京都」……気づきませんでしたf(@_@;)
「*都」としても、「最終文字が"都"の場合」という意味にはならないんですね。
解りやすい回答をありがとうございました。
No.5
- 回答日時:
>京都
なるほど,気付きませんでした。
例えばA1セルについて
入力規則の数式で
=ISERROR(FIND("都",MID(A1,3,9)))*ISERROR(FIND("府",A1))*ISERROR(FIND("県",A1))
と設定してみます。
若しくは都のNGは東京都しかないのですから,これに(これらに)限って
=(A1<>"東京都")*(MID(A1,3,1)<>"府")*ISERROR(FIND("県",A1))
などのようにチェックする手でも良いですね。
#ご存じと思いますが念のため,入力規則のエラーメッセージタブで何故NGなのか理由を記入しておき,次からは皆さんも理解して気をつけて入力してくれる事を期待しましょう。
「京都」、実は私も気づいていませんでした。
(住所データを扱う上で、3文字の「鹿児島」「神奈川」「和歌山」よりも厄介な県名……)
わかりやすく説明していただけて助かります。
>入力規則のエラーメッセージタブで何故NGなのか理由を記入しておき,次からは皆さんも理解して気をつけて入力してくれる事を期待しましょう。
そうなんですよね……。気をつけてくれればいいのですが、みんな自分勝手で困ったものです。
でもエラーメッセージが都度出てくればさすがに気をつけざるを得ないと思うので、今後に期待します。
ご回答ありがとうございました。
No.3
- 回答日時:
こんばんは!
すでに回答は出ていますので、参考程度で・・・
VBAでの一例です
画面左下にある操作したいSheet見出し上で右クリック → コードの表示 → VBE画面が出ますので
↓のコードをコピー&ペーストしてデータを入力してみてください。
尚、都道府県名はA列・会社名はB列に入力する場合のコードにしています。
もし他の列であればコード内の列番号(Target.Column)の部分の数値を適当に変更してみてください。
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から
If Target.Column = 1 And Selection.Count = 1 Then
If Target Like "*都" Or Target Like "*府" Or Target Like "*県" Then
MsgBox "「都」「府」「県」は入力しないでください。", vbExclamation
Target.Clear
Target.Select
End If
End If
If Target.Column = 2 And Selection.Count = 1 Then
If Target Like "株式会社*" Then
MsgBox "「株式会社・・・」の場合は、" & vbCrLf & "「カ)と入力してください。", _
vbExclamation
Target.Clear
Target.Select
ElseIf Target Like "*株式会社" Then
MsgBox "「・・・株式会社」の場合は、" & vbCrLf & "(カ」と入力してください。", _
vbExclamation
Target.Clear
Target.Select
End If
End If
End Sub 'この行まで
こんな感じではどうでしょうか?m(__)m
No.2
- 回答日時:
例えばA1セルについて
入力規則の数式で
=ISERROR(FIND("都",A1))*ISERROR(FIND("府",A1))*ISERROR(FIND("県",A1))
と設定しておくと,都府県を含んではいけないと制限できます。
COUNTIFなどを使っても,同様にして組み立てる事が出来ます。
No.1
- 回答日時:
都道府県を入力する列の隣にプルダウンで都道府県を選択させる列を作ったらどうでしょう?ちなみに北海道の道は大丈夫なんですか?株式会社の件も、会社名を入力するセルの前に前株、後株、(有)等のプルダウン入力列を設ければ良いのではないでしょうか。
後は、csv変換の前に文字列検索でチェックすればほとんどのミスが防げると思います。北海道だけは「道」がついたままでOKにしています。(おそらく「東京都」を「東京」と言っても通じるけれど、「北海道」を「北海」と言っても通じないからではないかと)
会社名の両隣にプルダウンで「(カ」などを付けると、会社名と「(カ」でセルを2つ使うことになり、最終的にデータ処理を行う時におかしくなってしまうため不可でした。
セルの結合をすればいいのでしょうが、データ数が膨大なため、手作業で1件ずつセルの結合をしていくのは大変で……。
他のシートやセルに「=a1&a2&a3」
(a1には「カ)」などのプルダウン、a2には「○○物産」などの社名、a3には「(カ」などのプルダウン)
として、フルネームで表示しても、やはり見かけ上での回避でしかないので、肝心のデータ処理でエラー……。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelにの以下の設定方法について教えてください! C列にデータ入力の設定をしています。(出、入を 3 2022/06/22 01:33
- Excel(エクセル) エクセルのマクロを教えてください。 1 2022/03/30 09:29
- Excel(エクセル) エクセルの書式設定の表示形式で設定した文字を文字列としてコピーしたい 1 2022/12/21 10:41
- Excel(エクセル) セルに入力した小文字アルファベット、数字を大文字表示させるには? 3 2022/07/13 10:01
- Excel(エクセル) 【再度】Excelの関数について教えてください。 4 2023/07/28 13:06
- Excel(エクセル) Excelの関数について教えてください。 5 2023/07/28 11:27
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/06/15 14:11
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
このQ&Aを見た人はこんなQ&Aも見ています
-
Excel vbaで特定の文字以外が入っている時、メッセージを表示させるプログラムについて
Visual Basic(VBA)
-
あるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように
Excel(エクセル)
-
エクセルVB ポップアップウィンドウを出す方法
Excel(エクセル)
-
-
4
Excelで入力禁止文字を設定したい
その他(ソフトウェア)
-
5
Excel 条件によって入力禁止にする
Excel(エクセル)
-
6
エクセルの入力規則で半角英数字と一部記号のみ許可
Excel(エクセル)
-
7
エクセルである行以下全部を削除する方法
Excel(エクセル)
-
8
VBAを使って、上書き保存の再確認メッセージを出したい。
Visual Basic(VBA)
-
9
エクセルである数値を超えたら赤で表示じエラーメッセージの方法
Excel(エクセル)
-
10
WorkBooksをオープンさせずにシートにコピーしたい【EXCEL VBA】
Excel(エクセル)
-
11
エクセルで英数大文字のみの入力制限は可能ですか
Excel(エクセル)
-
12
エクセル:マクロ「Application.CutCopyMode = False」って?
Excel(エクセル)
-
13
A1セルに入力したら、入力時間をA2セルに自動挿入
Excel(エクセル)
-
14
条件に一致したときに画像を表示したいのですが・・。
Excel(エクセル)
-
15
Excelで数式内の文字色を一部だけ変更したい
Excel(エクセル)
-
16
ListBoxで改行したい
Visual Basic(VBA)
-
17
セル内の一部の文字だけをハイパーリンクに設定したい
Excel(エクセル)
-
18
値を入力後、自動的にアクティブセルが移動するマクロ
Excel(エクセル)
-
19
Excelのセルにユーザー名を表示する方法
Excel(エクセル)
-
20
リストと一致する値のセルを塗りつぶしたい。
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルのセル内に全角数字を...
-
Excelで全角の数字が半角になっ...
-
エクセルで文字入力してEnterキ...
-
Excelで【1-1】【1-2】【1-3】...
-
エクセルで【0.5日と1日】を表...
-
入力規則でスペース入力を禁止...
-
エクセルで文字列としての指数...
-
エクセルで分や秒の合計や平均...
-
セルに数字を入れると×1000にな...
-
エクセルのセルや文字を点滅表...
-
EXCELで特定の文字列を入力→エ...
-
エクセルで自動的にイコール(...
-
コクヨのリーフ仕入帳等にパソ...
-
Excelで時間順で並べ替えしたい
-
エクセルの「○分○秒」の表示形...
-
WORD2010 差し込み印刷の時間...
-
EXCELで勝手に予測入力される
-
Excel 入力規則の複数指定につ...
-
少数点以下2桁以上の入力でエ...
-
文字の上にバーをつけるには?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのセル内に全角数字を...
-
Excelで全角の数字が半角になっ...
-
エクセルで文字入力してEnterキ...
-
Excelで【1-1】【1-2】【1-3】...
-
セルに数字を入れると×1000にな...
-
エクセルで【0.5日と1日】を表...
-
エクセルのセルや文字を点滅表...
-
Excelで時間順で並べ替えしたい
-
WORD2010 差し込み印刷の時間...
-
EXCEL セルの書式設定(ユーザー...
-
EXCELで特定の文字列を入力→エ...
-
入力規則でスペース入力を禁止...
-
関数CONCATENATEの表示で
-
平方センチメートルの入力の仕方
-
エクセルで自動的にイコール(...
-
エクセルで分や秒の合計や平均...
-
少数点以下2桁以上の入力でエ...
-
エクセルの「○分○秒」の表示形...
-
excel 2010で数字にふりがなを...
-
エクセルで時刻を全角かつコン...
おすすめ情報