Range.RemoveDuplicates
リストの重複を排除するためにマクロを作成し、次にまたは正規表現 ( HTML、単語、数字、および日付が混在する文字列の解析Like
に投稿したコードを参照) を使用して残りのセルをループし、セルが条件を満たしているかどうかを確認することができます。一致しないものを削除します。
重複除外してから照合する方がおそらく効率的ですが、どちらの方法でも実行できます。
VBA の初心者でコードが必要な場合は、コメントを追加してください。投稿します。
編集:
Visual Basic エディター (Alt-F11) に移動し、メニュー項目 [ツール/参照...] を選択し、[Microsoft VBScript 正規表現 5.5] を見つけてチェックし、[OK] をクリックする必要があります。VBA Project
次に、プロジェクト エクスプローラー (Ctrl-R) で、ワークブックの を右クリックし、Insert
>をクリックしますModule
。
次のコードを追加します。
Public Function RegEx(strInput As String, strRegEx As String, Optional bIgnoreCase As Boolean = True, Optional bMultiLine As Boolean = False) As Boolean
Dim RegExp As VBScript_RegExp_55.RegExp
Set RegExp = New VBScript_RegExp_55.RegExp
With RegExp
.MultiLine = bMultiLine
.IgnoreCase = bIgnoreCase
.Pattern = strRegEx
End With
RegEx = RegExp.test(strInput)
Set RegExp = Nothing
End Function
(後で使用する可能性がある場合は、HTML、単語、数字、および日付が混在する文字列の解析から他の正規表現コードを追加できます)
次のコードを追加します (削除するデータが列 A にあると仮定します)。
Public Sub DedupeAndFilter()
Dim RCtr As Long
ActiveSheet.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlNo
For RCtr = ActiveSheet.UsedRange.Rows.Count To 1 Step -1
If ActiveSheet.Range("A:A").Rows(RCtr).Text = "" Then
ActiveSheet.Range("A:A").Rows(RCtr).Delete xlShiftUp
ElseIf Not RegEx(ActiveSheet.Range("A1").Rows(RCtr), "[A-Z]{2}-\d\d", True) Then
ActiveSheet.Range("A:A").Rows(RCtr).Delete xlShiftUp
End If
Next
End Sub
次に、DedupeAndFilter
コード ブロック内にカーソルを置きF5
、緑色の実行 ">" 三角形を押すかクリックします。コードは、列 A から重複、空白セル、および不適合セルを削除します。
影響を受ける列を変更する場合は、「A:A」をActiveSheet.Range("A:A")
他の列参照に変更するか、必要なActivesheet.Selection
列を置き換えて選択します。