• ベストアンサー

EXCEL 入力チェック

EXCELで会社名(株式会社・公司)と所在国の入力チェック(結びつかない場合には、エラー表示)させたいと思います。 具体的には、下記の様にしたいのですが、どうしたら良いか判りません。 お教え下さい。 A列に会社名  B列に国コード(入力規則を利用してプルダウン表示) XXX株式会社  JP XX(株)       JP XXXX公司    TW ”株式会社(または(株))”を含んでいるのに国コードを”JP”以外を選択した場合や ”公司”を含んでいるのに”JP”や他の国コードを選択した場合にエラー表示させたい。 お手数をお掛け致しますが、宜しくお願い致します。

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

  • ベストアンサー
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.5

No.4です! 補足を読ませていただいて・・・ 前回と同様な感じですが、一案です。 ↓の画像のようにSheet2のA列が重複するものはB列以降に表示しておきます。 そして↓のコードをコピー&ペーストしてB列のプルダウンリストで選択してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Columns(2)) Is Nothing Or Selection.Count <> 1 Then Exit Sub Dim i, j, k As Long Dim ws As Worksheet Set ws = Worksheets("Sheet2") If Target <> "" Then Application.ScreenUpdating = False For i = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row If Target.Offset(, -1) Like "*" & ws.Cells(i, 1) & "*" Then For j = 2 To ws.Cells(i, Columns.Count).End(xlToLeft).Column If Target = ws.Cells(i, j) Then k = k + 1 End If Next j If k > 0 Then Target.Interior.ColorIndex = xlNone Else Target.Interior.ColorIndex = 3 End If End If Next i Else Target.Interior.ColorIndex = xlNone End If Application.ScreenUpdating = True End Sub 'この行まで ※ 今、書き込み中に思ったのですが、 この場合だと「公司」が含まれる会社名の場合、「CH」でも「TW」でも選択できてしまいますね! というコトは完全なエラーチェックにはならないと思います。 とりあえずたたき台としてでの投稿です。 参考にならなかったらごめんなさいね。m(_ _)m

ty028548
質問者

お礼

ありがとうございました。 こちらで悩んでいる間に、こんなに早く。 ご懸念の”「CH」でも「TW」でも選択”の部分については、LTDでも同様ですので、諦めています。 本当にありがとうございました。

その他の回答 (4)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんばんは! A列は手入力、B列はプルダウンで選択するというコトですね? VBAになってしまいますが、一案です。 間違った「国コード」を選択した場合、セル色を「赤」にするようにしてみました。 ↓の画像のようにSheet2(右側Sheet)にデータを作成しておきます。 尚、Sheet2のA列には重複がないという前提です。 中国・台湾両方とも「公司」を使用していると思いますので・・・ 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてB列を選択してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Columns(2)) Is Nothing Or Selection.Count <> 1 Then Exit Sub Dim i As Long Dim ws As Worksheet Set ws = Worksheets("Sheet2") For i = 2 To ws.Cells(Rows.Count, 1).End(xlUp).Row If Target.Offset(, -1) <> "" Then If Target.Offset(, -1) Like "*" & ws.Cells(i, 1) & "*" Then If Target = ws.Cells(i, 2) Then Target.Interior.ColorIndex = xlNone Else Target.Interior.ColorIndex = 3 End If End If Else Target.Interior.ColorIndex = xlNone End If Next i End Sub 'この行まで ※ 今回はセル色で注意を促す方法にしていますが、メッセージボックスを表示させても良いかな!って思います。 ※ 他の方法として、VBAでA列を選択すれば自動でB列を表示することも可能だと思います。 参考になりますかね?m(_ _)m

ty028548
質問者

お礼

ご返事が遅れ大変申し訳ありませんでした。 詳細にありがとうございました。 上手く動きました。 大変助かりました。

ty028548
質問者

補足

大変、申し訳ありません。 「Sheet2のA列には重複がないという前提です。」の所がネックになっています。 当初は、何とかなるかと思っていろいろ変更してみたのですが、どれもうまく行きませんでした。 度々申し訳ありませんが、解決策があれば、お教えください。 お手数をお掛け致しますが、宜しくお願い致します。

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

ANo.2です。 ごめんなさい、ものすごい間違いをしていました。 C2には↓を入れて下にコピーしてください。 =SUMPRODUCT(ISNUMBER(FIND(G$2:G$5,$A3&$B3))*1)>0

  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.2

「株式会社」や「公司」などのキーワードが会社名の最後につくと言う条件でなら、こんなのはどうでしょう。 添付の図を見てください、G列を作業列として使っています G2に =E2&F2 と、入れて下にコピーしてください。 C2に =ISNUMBER(FIND(G$2:G$4,A2&B2)) と、入れて下にコピーしてください。 入力チェックで問題ない場合はTRUE、問題がある場合はFALSEと表示されます。

ty028548
質問者

お礼

ありがとうございます。 sheetの中にチェック用のセルは設けたくないので、参考までとさせていただきます。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.1

いろいろと諸事情がおありかと思いますが、 ”株式会社(または(株))”を含んでいたら、国コードを”JP”を設定する。 ”公司”を含んでいるのに”TW”を設定する。 ような処理の方が、良くないですか?

ty028548
質問者

補足

早速ありがとうございます。 会社形態の表示が多々あるので、設定してしまった場合に設定以外の表示を入力した時に国コードを選択できる様になれば、良いと思うのですが。。 かなり、複雑になりませんか?

関連するQ&A