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

エクセルで、特定の文字列(複数あります)を入力した場合にエラーメッセージを表示したいと思っています。可能でしょうか?

仕事上で使うシートなのですが、
私が表の枠と見出しのみ入れたものに、他の部署の人がデータを入力して、また私宛に戻してきます。その後、そのデータをcsvファイルに変換し、あるソフトで読み込みデータを処理します。

入力してもらうデータの形には一定の決まりがあり、入力してはいけない文字列があります。
例えば、都道府県名を入れるセルがあり、
「都」「府」「県」は入力してはいけない(入力すると、最終的にデータを使用するソフトでエラーになる)、
つまり、「東京都」は誤りで「東京」とするのが正しいというものです。

入力するセルとは別のセルに、関数で「都」「府」「県」を除いた文字列を表示するようにしようかと思ったのですが、これでは見た目上の解決にしかならず、結局csvファイルにした時にエラーになってしまいます。

そこで、入力規則の設定で「~都」「~府」「~県」の文字列の場合にエラーメッセージが出るようにしたいのですが、
このように入力してはいけない文字が複数ある場合の数式がわかりません。
(「~県」だけが入力禁止なら、入力規則→設定で、許可=ユーザー設定 にして、数式を「=countif(A1,"*県")=0」とすれば出来るのですが……)
入力可能な文字数の設定で回避しようにも、「東京」は2文字ですが「鹿児島」は3文字です。

また、他の入力項目で、特定の文字列については置き換えが必要なものが出てくるので
(例えば「株式会社」→社名の先頭の場合は「カ)」、社名の後ろの場合は「(カ」など。)
関数などで自動的に変換されるより、入力直後に人間が誤りに気づいて訂正できるものの方が都合がよさそうです。

なお、アナログな方法ですが、見出し部分に ”「都」「府」「県」は入力しないでください” など注意書きは入れています。しかし、それに気づいてもらえていないのか、それとも勢いで「~県」と入力してしまうのか、ほとんど効果なしです。

こんな状況なのですが、入力時にエラーを表示する方法を教えてください。

A 回答 (5件)

No.3です!


たびたびごめんなさい。

前回のコードでは「京都府」の場合、「京都」としても「都」が含まれていますので、エラーになってしまいます。

前回のコードの
If Target Like "*都" Or Target Like "*府" Or Target Like "*県" Then

の行を

If Target Like "東京都" Or Target Like "*府" Or Target Like "*県" Then

に訂正してください。

検証せずに投稿して失礼しました。m(__)m
    • good
    • 0
この回答へのお礼

2度の回答ありがとうございます。
「京都」……気づきませんでしたf(@_@;)
「*都」としても、「最終文字が"都"の場合」という意味にはならないんですね。

解りやすい回答をありがとうございました。

お礼日時:2011/04/26 21:11

>京都



なるほど,気付きませんでした。

例えばA1セルについて
入力規則の数式で
=ISERROR(FIND("都",MID(A1,3,9)))*ISERROR(FIND("府",A1))*ISERROR(FIND("県",A1))
と設定してみます。

若しくは都のNGは東京都しかないのですから,これに(これらに)限って
=(A1<>"東京都")*(MID(A1,3,1)<>"府")*ISERROR(FIND("県",A1))
などのようにチェックする手でも良いですね。



#ご存じと思いますが念のため,入力規則のエラーメッセージタブで何故NGなのか理由を記入しておき,次からは皆さんも理解して気をつけて入力してくれる事を期待しましょう。
    • good
    • 2
この回答へのお礼

「京都」、実は私も気づいていませんでした。
(住所データを扱う上で、3文字の「鹿児島」「神奈川」「和歌山」よりも厄介な県名……)
わかりやすく説明していただけて助かります。


>入力規則のエラーメッセージタブで何故NGなのか理由を記入しておき,次からは皆さんも理解して気をつけて入力してくれる事を期待しましょう。

そうなんですよね……。気をつけてくれればいいのですが、みんな自分勝手で困ったものです。
でもエラーメッセージが都度出てくればさすがに気をつけざるを得ないと思うので、今後に期待します。

ご回答ありがとうございました。

お礼日時:2011/04/26 21:18

こんばんは!


すでに回答は出ていますので、参考程度で・・・
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
    • good
    • 0

例えばA1セルについて


入力規則の数式で
=ISERROR(FIND("都",A1))*ISERROR(FIND("府",A1))*ISERROR(FIND("県",A1))
と設定しておくと,都府県を含んではいけないと制限できます。

COUNTIFなどを使っても,同様にして組み立てる事が出来ます。
    • good
    • 2

都道府県を入力する列の隣にプルダウンで都道府県を選択させる列を作ったらどうでしょう?ちなみに北海道の道は大丈夫なんですか?株式会社の件も、会社名を入力するセルの前に前株、後株、(有)等のプルダウン入力列を設ければ良いのではないでしょうか。

後は、csv変換の前に文字列検索でチェックすればほとんどのミスが防げると思います。
    • good
    • 0
この回答へのお礼

北海道だけは「道」がついたままでOKにしています。(おそらく「東京都」を「東京」と言っても通じるけれど、「北海道」を「北海」と言っても通じないからではないかと)

会社名の両隣にプルダウンで「(カ」などを付けると、会社名と「(カ」でセルを2つ使うことになり、最終的にデータ処理を行う時におかしくなってしまうため不可でした。
セルの結合をすればいいのでしょうが、データ数が膨大なため、手作業で1件ずつセルの結合をしていくのは大変で……。
他のシートやセルに「=a1&a2&a3」
(a1には「カ)」などのプルダウン、a2には「○○物産」などの社名、a3には「(カ」などのプルダウン)
として、フルネームで表示しても、やはり見かけ上での回避でしかないので、肝心のデータ処理でエラー……。

ご回答ありがとうございました。

お礼日時:2011/04/26 21:08

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

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


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