1

恐ろしいデータをクリーンアップしようとしています。さまざまな部分の説明を含む説明の列があります。このデータを保持していた人は誰であれ、彼または彼女の狂気への方法がないように見えましたが、それはまた別の機会に.

データの重複を見つけて、重複としてマークしようとしています。残念ながら、これがどのように作られたかという理由で、それは難しいかもしれません. たとえば、「BEARING」という記述を考えてみましょう。現在のコードを使用すると、「BEARING」と表示されたセルのみをキャッチできます。彼らが「BEARING」または「BEARING」(スペースに注意)または「BEARING」(再びスペース)と言った場合、それはキャッチされません。

Sub test()
    Dim uniqueCounter As New Scripting.Dictionary
    Dim counter As Long
    Dim rowCount As Long
    Dim identifier As String


    rowCount = 10235

    uniqueCounter.CompareMode = TextCompare

    For counter = 1 To rowCount
        identifier = ActiveSheet.Cells(counter, 3) 'Put whatever number of combination of cells which the row unique here (maybe it's just the one)
        If uniqueCounter.Exists(identifier) Then
            uniqueCounter(identifier) = CLng(uniqueCounter(CStr(ActiveSheet.Cells(counter, 3)))) + 1
            ActiveSheet.Cells(counter, 1) = "Duplicate " & identifier
        Else
            uniqueCounter.Add identifier, "0"
            ActiveSheet.Cells(counter, 1) = "Original " & identifier
        End If
    Next counter

End Sub

SQL で LIKE を使用する方法と同様に、コードの実行時に辞書エントリの可能なすべてのバリアントをキャッチする方法はありますか?

4

2 に答える 2

2

Excel で正規表現のワイルドカード マッチングを実行したいようです。組み込みの Range.Find を調べて、必要なことが達成できるかどうかを確認してみてください。VBA での文字列の一致に関するこの回答を見つけたので、 .Find の使用に関するこの投稿にたどり着きました。

于 2013-07-25T20:41:40.577 に答える