私はINC0001、INC0002などのような値を持つ列を持っています。2つのForループを使用せずに重複する値を見つけて_countを追加する必要があります。
例: INC001
INC002 DATA-
INC003 INC001
INC002 INC001
以下の出力が
INC001
INC002 INC003
INC001_1 INC002_1
INC001_2であるべきです。Excel VBA - 列内の重複する値を検索して_countを追加する方法
私は2 forループを使って行っていますが、約15000レコードで約15-20分かかります。マクロをExcelで効率的に実行する方法はありますか?
あなたはこのように行くことができる
Sub AppendMacro()
Worksheets("Sheet1").Activate
Dim lngMaxRow As Long
lngMaxRow = Range("A" & Rows.count).End(xlUp).Row
Dim count As Integer
For i = 2 To lngMaxRow - 1 Step 1
Dim incNum As String
incNum = ActiveSheet.Range("A" & i).Value
count = 1
If (Len(incNum) = 11) Then
For j = i + 1 To lngMaxRow Step 1
If (incNum = ActiveSheet.Range("A" & j).Value) Then
ActiveSheet.Range("A" & j).Value = ActiveSheet.Range("A" & j).Value & "_" & count
count = count + 1
End If
Next
End If
Next
End Sub
をあなたは閉じられているからそれを防ぐことができ、あなたの質問に、それを含めて、コードを既存している場合。私はおそらくこれのための辞書を使用することをお勧めします - キーの値を使用し、値としてインスタンス番号を格納します。あなたは単一のループが必要です。 –
最初にデータを並べ替えることはできますか?もしそうなら、それはVBAをより簡単にし、VBAを必要とせずに式を使うだけかもしれません。 – BruceWayne
あなたが 2.削除キー – dgorti