Excelへの入力で、コピー貼り付けでの重複を防ぐ。
この記事は自分用の覚え書きです。
エクセルで入力するときに、重複したデータを入力できないようにする。
「データの入力規則」で「ユーザー設定」の「数式」に
=COUNTIF(重複を防ぐセル範囲,重複を防ぐセル範囲の一番上のセル)=1
の式を入れるやり方では、コピーしてきた値は貼り付けることができてしまう。
コピー貼り付けでも重複を禁止するにはVBAを使う。
■特定のシートについて、A1からA50を重複禁止にする。
シート名の上で右クリックして、「コード表示」を選んで次のVBAを貼り付ける。
既存の値を入力すると、メッセージボックスで知らせて重複できなくする。
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count <> 1 Then Exit Sub
If Target.Row > 50 Then Exit Sub
If Target.Column <> 1 Then Exit Sub
If Application.WorksheetFunction.Countif(Range("A1:A50"),Target.Value) > 1 Then
MsgBox "重複した値です。"
Target.Value = ""
End If
End Sub
■留意点
・単一のセルのコピー貼り付けでの重複は防止できる。
・行をコピーして貼り付け(挿入)ではこの重複禁止は機能しない。
・A1:A3というように連続したセルのコピー貼り付けではこの重複禁止は機能しない。
・セル範囲を変える場合は、Row > 50 の数値とRange("A1:A50")を変える。最大値を同じに。この場合は50。
Excel 2002
Windows XP Pro SP3
| 固定リンク
コメント
大変参考になりました。ありがとうございました。質問ですが、2列に適用するのに以下ご指示があります。
「'A列もB列も重複禁止にするといった複数列での重複の禁止はこのコードではできない。
'
'If Target.Row > 501 Then Exit Sub
'の 501 を書き換えることで、重複禁止の範囲を列方向に広げたり狭めたりできる。」
とあります。
色々トライしましたが、うまくいきません。何か方法あればお教え下さい。よろしくお願いいたします。
投稿: 光野鉄哉 | 2020.06.04 15:53