- 締切済み
エクセルの「入力規則」を用いての重複チェックについて
エクセルの「入力規則」を用いての重複チェックについて エクセルの「入力規則」でcountif関数を使い、重複チェックをしながら 入力をおこなっております。 重複の時メッセージがでるのですが、これに加えてどこと同じなのか その行をセレクトした状態など、該当するデータが分かるようにすることは 可能でしょうか? 何か方法がございましたら、ご助力をお願いいたします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- KURUMITO
- ベストアンサー率42% (1835/4283)
例えば名前がA列にあり住所がB列、電話番号がC列にあるとしたら次のようなマクロを組むことで、もし重複が上の行であれば重複した名前の方の住所や電話番号が表示されますので、それらに該当しないデータであれば「いいえ」を選択すればよいでしょう。 Private Sub Worksheet_Change(ByVal Target As Range) Dim RowPos As Integer Dim ans As Integer If Target.Column = 1 And WorksheetFunction.CountIf(Range("A:A"), Target.Value) > 1 Then For RowPos = 1 To Target.Row - 1 If Cells(RowPos, "A").Value = Target.Value Then ans = MsgBox("同じ名前が" & RowPos & "行目にあり、その人の住所は" & Cells(RowPos, "B") & "で電話番号は" & Cells(RowPos, "C") & "です。この入力を取り消しますか?", Buttons:=vbYesNo + vbQuestion, Title:="注意!") If ans = vbYes Then Target.Cells.Activate Target.Value = "" Exit For End If End If Next End If End Sub
- KURUMITO
- ベストアンサー率42% (1835/4283)
同じ名前が何行目にあるということを表示させたところで意味のないように思いますが?実際にはそれが今入力した人とは違っている人であると判断するのは何を見て判断するのでしょう。例えば名前と電話番号が一致していれば同じ人で、一致していなければ別の人といように何か比較する別の項目が無ければならないでしょう。
お礼
同一人物かの判断ですが、おっしゃるように「名前」と「電話番号」で判断しております。 現行では入力規則で「名前」が重複した時、入力者が手作業でそのデータを探し 「電話番号」(あるいは「住所」)をみて判断するという方法をとっています。 この該当するデータを重複チェックの流れで自動的に探し出す(表示する)ことが できないかと思いまして、この度質問をさせていただきました。
- KURUMITO
- ベストアンサー率42% (1835/4283)
入力規則で重複時にメッセージを出すことはできますが該当するデータがどこにあるかを表示させるあるいは書式などで色を変えるなどのことはできません。その理由はセルにデータが入力されない状態での判断ができないからです。 セルにデータを入力した後で重複を判断し、重複のデータがどこにあるかを表示させ、入力のデータをそのままにするのか? あるいは取り消すのか?をマクロを使って操作できるようにするためには次のようにすればよいでしょう。 シート見出しで該当するシート名を右クリックして「コードの表示」を選択し、表示される画面に次のコードを入力します。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 And WorksheetFunction.CountIf(Range("A:A"), Target.Value) > 1 Then ans = MsgBox(WorksheetFunction.Match(Target.Value, Range("A:A"), 0) & "行目に同じデータがあります。この入力を取り消しますか?", Buttons:=vbYesNo + vbQuestion, Title:="注意!") If ans = vbYes Then Target.Cells.Activate Target.Value = "" End If End If End Sub このコードはA列でのデータの重複を判断するものです。適宜変更して使用することができます。
お礼
返事が遅くなって申し訳ありません。 ご回答ありがとうございます。 やはりマクロを使うことになるんですね。 提示していただいたマクロで私のシートでも動作を確認できました。 質問を重ねて申し訳ないのですが、名前でチェックする時、同姓同名の方について あまりないのですが無きにしも非ずなので教えて下さい。 現マクロではデータを上から見て、一致したらそこで処理が終わってるので さらに下に同じ名前の人があったとしても有無が確認できないのですが、何らかの形で 一致するレコードをすべて表示することはできますでしょうか??
入力規則だけではじつげんできませんが、 texnos Education | EXCEL:重複データに色をつける http://blog.texnos.net/?eid=29779 で可能でしょう。
お礼
該当するレコードを一度に表示させるのではなく、示して頂いたように 1つずつ表示してやればよかったんですね。 確かにこの方法で納得のいくものになりました。 説明が下手でなかなか理解に苦しまれたでしょうが、何度もご丁寧に回答 していただき本当に感謝しております。ありがとうございました。