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

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

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

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

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

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

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

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

このQ&Aに関連する最新のQ&A

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に関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QExcelで入力禁止文字を設定したい

いつもお世話になって居ます。
以下のように特定のセルに入力の規制をしたいのですが、お分かりの方がいらしたらお手数ですがご教示ください。

A1セルの入力時に、「文字数を30文字以下、且つ特定の文字(仮にあ、い、う、え、お)を禁止し、さらに半角のみ」
A2セルの入力時に、「文字数を30文字以下、且つ特定の文字(仮にか、き、く、け、こ)を禁止し、さらに全角のみ」
A3のセルの入力時に、「文字数を20文字以下、且つ特定の文字(仮にあ、い、う、え、お、か、き、く、け、こ)を禁止し、さらに半角のみ」

何れもエラーメッセージがそれぞれの規制ごとに「文字数オーバー」「禁止文字を使用」「全角(半角)で登録」と表示できると助かります。

入力規制ですと「特定の文字のみ可能」となってしまい、希望通りに出来ませんでした。

Aベストアンサー

E1~E5に、それぞれ順に「あ、い、う、え、お」と入力して、
=AND(LEN(A1)<=30,ISERR(FIND($E$1:$E$5,A1)),LENB(A1)=LEN(A1))

QExcel 入力規則の複数指定について

1つのセルに対し、複数の入力規則は出来ないのでしょうか?

例えば、Excelシートで

A1に学校名を入力
B1に入学する年(西暦)
C1に入学する月

を入力させたいのですが、

A1に学校名が入力されてなかった場合、
B1とC1は入力規則でエラーメッセージを出して入力不可にしたいのです。

逆に、A1に学校名が入力された場合、
B1には、入力規則で適切な西暦だけを入力可能にしたいのです。
C1には、入力規則で適切な月だけを入力可能にしたいのです。

適切な西暦や月が入力されなかった場合は、
入力規則でエラーメッセージを出して入力不可にしたいのです。

ちなみに現在使用している仕様は「WinXP、Excel2003」です。

Excel初心者なので、VBAは分かりません・・・。
関数は、少々分かりますので、入力規則以外でこの様な
複数指定の方法が出来るのでしたら、教えていただけないでしょうか?
なにとぞ、ご教授のほど宜しくお願い致します。

Aベストアンサー

例えば次のようにします。
シート2のA列には学校名が入力されているとします。
その後、シート1のA1セルを選択したのちに「データの入力規則」の「ユーザー設定」で数式の窓には
=COUNTIF(Sheet2!A:A,A1)>0
B1セルを選択して同様にデータの入力規則のユーザー設定の数式の窓には
西暦2010から2020を入力できるようにする場合には
=AND(A1<>"",B1>=2010,B1<=2020)
C1セルを選択して
=AND(A1<>"",B1<>"",C1>=1,C1<=12)

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Qあるセルに特定の文字列を打つと、他のセルに決められた文字が自動入力するように

お世話になります。

表題の通り、
あるセルに特定の文字列を打つと、
他のセルにあらかじめ決められた文字が自動入力するようにしたいです。

具体的に言うと、
(1)セル(A,1)に「キリン」と打ち込むと

   A   B   C   D
1 キリン
2
3
4

(2)1列目の B,C,Dに予め決めておいた文字が入力されるようにしたい

   A   B   C   D
1 キリン 首  長い  アフリカ
2
3
4

のです。
エクセルで可能でしょうか?
詳しい方よろしくお願いいたします!

Aベストアンサー

出来ます。この場合はキリンがキーになっていますね。
先ずこのキーをもとにSheet2にデータを登録しておきます。
   A   B   C   D
1 キリン 首  長い  アフリカ
2 ゾウ  鼻  長い アフリカ
3 
4
次に表示させたいセルに
 A   B             C           D
1  =VLOOKUP(A1,Sheet2!A:D,2) =VLOOKUP(A1,Sheet2!A:D,3) ″ 
2  =VLOOKUP(A2,Sheet2!A:D,2) =VLOOKUP(A2,Sheet2!A:D,3) ″
3  =VLOOKUP(A3,Sheet2!A:D,2) =VLOOKUP(A3,Sheet2!A:D,3) ″
4  =VLOOKUP(A4,Sheet2!A:D,2) =VLOOKUP(A4,Sheet2!A:D,3) ″

を入れておきます。
これで出来ると思います。
エラー表示がいやな場合は、=IF(A1="","",VLOOKUP(A1,Sheet2!A:D,2)) の様にして下さい。

出来ます。この場合はキリンがキーになっていますね。
先ずこのキーをもとにSheet2にデータを登録しておきます。
   A   B   C   D
1 キリン 首  長い  アフリカ
2 ゾウ  鼻  長い アフリカ
3 
4
次に表示させたいセルに
 A   B             C           D
1  =VLOOKUP(A1,Sheet2!A:D,2) =VLOOKUP(A1,Sheet2!A:D,3) ″ 
2  =VLOOKUP(A2,Sheet2!A:D,2) =VLOOKUP(A2,Sheet2!A:D,3) ″
3  =VLOOKUP(A3,Sheet2!A:D,2) =VLOOKUP(A3,Sheet2!A...続きを読む

QExcelで未入力のセルがある場合にエラーメッセージをだしたい。

教えてください。
EXCEL2003(SP1)で表を作成し、複数人で使用しています。
大分類と中分類に分けて数字を入力したいのですが
大分類だけ入力して、中分類の入力を忘れてしまう方が多くて困っています。
大分類を入力したら、中分類の入力を促すメッセージを出すか、
中分類を入力しないとその後の作業が行えない(次の大分類を入力できない等)ような機能はありますか?

Aベストアンサー

督促する方法ですが如何でしょうか。
(1)大分類セル範囲を選択→データ→入力規制
(2)入力メッセージタブでメッセージ欄に督促メッセージを入力して下さい。
   セルをクリックすると督促メッセージが表示されます。
又は、中分類列に条件付き書式設定で大分類セル入力済み、中分類セル未入力の場合、中分類セルに色付けする方法もあります。
(1)書式→条件付き書式設定→「数式が」、数式を=(大分類セル<>"")*(中分類セル="")として、書式から任意色を選択

Qエクセルで半角カナや特殊文字を入力制限する

エクセルの入力規則に、「20文字以内」「半角カナ不可」「機種依存する特殊文字不可」という条件をかけたいのですがいまいちわかりません。

今のところ、
=AND(A4=JIS(A4),LEN(A4)<=20)*(COUNTIF(A4,"*(株)*")=0)
として、全角のみ、20文字以下、特殊文字は個々で入れるというかんじでしか対応できていません。

誰かご存知でしたら方法教えてください!
どうぞよろしくお願いします!

Aベストアンサー

こんにちは。
返事が遅くなってしまいました。

>入力規則だとデータ入力する際にコピーペーストされると適用外になってしまうため、おっしゃるようにマクロの方がいいのかもしれません。しかし、やり方がわからず・・・

このマクロ自体は、思っていたよりもてこずってしまいました。あまり、うまい出来栄えではないとは思いますが、コピーペーストも禁止できます。使用勝手は、入力規則とほぼ同じです。

考え方は、dreamconさんが、特殊文字は個々で入れるという方法を使いました。

取り付け方は、シートタブを右クリックして、「コードの表示」をクリック。
次に、以下を貼り付けます。

入力規則の指定する場所に、Range("A:A") と、範囲を入力します。
複雑な範囲の場合は、例えば、このようにします。Range("A1:A10,B1:B2") 

全体の場合を設定したい場合は、If Intersect ... の行そのものを削除します。

'------------------------------------------------
Dim KinshiMoji As Variant
Private Sub Worksheet_Change(ByVal Target As Range)
  Dim c As Range
  Dim msg As String
 
  '以下は、A列のみに、入力規則を施しています。
  If Intersect(Target, Range("A:A")) Is Nothing Then Exit Sub
  On Error GoTo ErrMsg
  If IsEmpty(Target) Then Exit Sub
  Application.EnableEvents = False
 
  If Len(KinshiMoji) < 1 Then Call MakingMoji
 
  For Each c In Target.Cells
  If Len(c.Text) > 20 And c.Value <> "" Then _
   msg = "入力した値は20文字以上です。": Err.Raise 513
   If c.Text Like "*[" & Chr(&HA6) & "-" & Chr(&HDF) & "]*" Or _
     c.Text Like "*[" & KinshiMoji & "]*" Then
    msg = "入力した値は正しくありません。": Err.Raise 513
   End If
  Next
  Application.EnableEvents = True
  Exit Sub
ErrMsg:
  If MsgBox(msg & vbCrLf & vbCrLf & _
   "ユーザーの設定によって、セルに入力できる値が制限されています。", _
    16 + vbRetryCancel) = vbRetry Then
   c.Select
   Application.SendKeys "{F2}"
   Else
   Target.ClearContents
  End If
  msg = ""
  Application.EnableEvents = True
End Sub
Private Sub MakingMoji()

'禁じする文字を作ります。
Dim i As Long
For i = &H8740 To &H878F
 KinshiMoji = KinshiMoji & Chr(i)
Next
End Sub
'------------------------------------------------

こんにちは。
返事が遅くなってしまいました。

>入力規則だとデータ入力する際にコピーペーストされると適用外になってしまうため、おっしゃるようにマクロの方がいいのかもしれません。しかし、やり方がわからず・・・

このマクロ自体は、思っていたよりもてこずってしまいました。あまり、うまい出来栄えではないとは思いますが、コピーペーストも禁止できます。使用勝手は、入力規則とほぼ同じです。

考え方は、dreamconさんが、特殊文字は個々で入れるという方法を使いました。

取り付け方は、...続きを読む

Q複数の文字列のいずれかが含まれていたらTRUEを返す関数について

複数の文字列のいずれかが含まれていたらTRUEを返す関数について
エクセル2003を使用しています。
B列に例えば住所が入力されていて、「東京都北区」「千代田区」「東村山市」等いくつかの文字列のいずれかが含まれていたら、A列にTRUEを返すということをしたいのですが方法がわかりません。
単純なことのような気がするのですがどうしても思いつきません。よろしくお願いいたします。

Aベストアンサー

こうかなあ。。。
A2セル
=OR(SUBSTITUTE(B2,$D$2:$D$4,"",1)<>B2)
[Ctrl]+[Shft] +[Enter] で確定、配列数式です({}で囲まれる)
下へオートフィル

D2:D4に文字列を入力しておく

Qエクセルで、条件に一致した行を別のセルに抜き出す方法

エクセルで、指定した条件に一致するセルを含む行をすべて抜き出す方法が知りたいです。

たとえば、

<A列> <B列> <C列>
7/1 りんご 100円
7/2 ぶどう 200円
7/2 すいか 300円
7/3 みかん 100円

このような表があって、100円を含む行をそのままの形で、
別のセル(同じシート内)に抜き出したいのですが。

7/1 りんご 100円
7/3 みかん 100円

抽出するだけならオートフィルターでもできますが、
抽出結果を自動的に、別の場所に、常に表示させておきたいのです。

初歩的な質問だと思いますが、検索しても分からなかったので、よろしくお願いします。

Aベストアンサー

同じ質問が結構よく出てますが、そんなに初歩的でもありません
別シートのA1セルに「100円」と入力し、そのシートの任意のセルに以下の式を貼り付けて下さい。後は、下方向、右方向にコピー。
日付のセル書式は「日付」形式に再設定してください

=IF(COUNTIF(Sheet1!$C:$C,$A$1)>=ROW(A1),INDEX(Sheet1!A:A,LARGE(INDEX((Sheet1!$C$1:$C$500=$A$1)*ROW(Sheet1!$C$1:$C$500),),COUNTIF(Sheet1!$C:$C,$A$1)-ROW(A1)+1)),"")

データ範囲は500行までとしていますが、必要に応じて変更して下さい

Q【エクセル】指定したセルに入力することで、別の特定のセルに決まった文字を表示させるには?

社用データを作る際の手間を省こうとしたのに、かえって難しくなってしまいました(-"-;)
分かりにくい質問で恐縮ですが、よろしくお願いします。

現在Excel2003を使っています。
「指定したセルに文字・数字問わず入力があった場合、特定のセルに特定の文字を表示させる数式(または方法)」は無いでしょうか。
(できれば指定したセルに入力が無い限り、特定文字を表示させるセルは非表示のままにしたいと思っています)

例えば、「A1のセルに『○田×男(人名など)』と入力した時、B1のセルに『様』と表記させる」と言った具合です。
(このとき、A1に入力が無ければB1も空白のままにしておきたいのです)

手動で入力した方が早そうな気もしますが、応用次第で他の表や作業もスッキリしそうなので、手があれば是非ご教授下さい。

Aベストアンサー

間違えました。

B1 に
=IF(A1="","","様")

でした。

Qエクセルでの指定文字 カウントについて

エクセルで並んだデータでの指定した名前だけの個数をカウントするにはどうすればいいのでしょうか?

山田 高橋 佐藤
高橋 梅田 赤田
 西 山田 梅田
佐藤 山田 梅田

名前が並んだデータで「高橋」という名前が何個あるのかをカウントしたいのですがどうすればいいのでしょうか?

Aベストアンサー

 データは入力されているセルの範囲を「A1:C4」とすれば、

=COUNTIF(A1:C4,"高橋")


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

人気Q&Aランキング

おすすめ情報