我有一個范圍可以有多個值,但值可以重復。我試圖撰寫一個可以執行此操作的宏,但遇到了障礙。我可以對整個范圍內的單元格進行編號,從 1 到范圍末尾的計數。這是我到目前為止的代碼以及結果的串列。第二個串列是我的最終結果。
Sub Count_Items_Then_Repeat_On_Data_Change()
Dim rng As Range
Dim cell As Range
Dim count As Long
count = 1
Set rng = Application.Selection
For Each cell In rng
cell.Offset(0, 0).Value = cell.Value & "-" & count
count = count 1
Next cell
End Sub
| 錯誤的輸出 | 正確輸出 | |
|---|---|---|
| A欄 | A欄 | |
| 1 | 1.01-1 | 1.01-1 |
| 2 | 1.01-2 | 1.01-2 |
| 3 | 1.01-3 | 1.01-3 |
| 4 | 1.01-4 | 1.01-4 |
| 5 | 1.02-5 | 1.02-1 |
| 6 | 1.02-6 | 1.02-2 |
| 7 | 1.02-7 | 1.02-3 |
| 8 | 1.02-8 | 1.02-4 |
uj5u.com熱心網友回復:
我不完全確定我是否根據資料理解您的問題以及您似乎正在嘗試做什么。
看起來您希望在單元格的原始值更改時重置計數。
如果整個選擇是有序的,您可以在更改之前簡單地測驗下一個單元格,看看計數是否應該像這樣重置:
Sub Count_Items_Then_Repeat_On_Data_Change()
Dim rng As Range
Dim cell As Range
Dim count As Long
count = 1
Set rng = Application.Selection
For Each cell In rng
'If the next cell has a different value, reset count after we change this one
If cell.Value <> cell.Offset(1, 0).Value Then
cell.Value = cell.Value & "-" & count
count = 1 'Reset count to 1
Else
cell.Value = cell.Value & "-" & count
count = count 1
End If
Next cell
End Sub
我也繼續進行了更改cell.Offset(0,0).Value-您不需要.Offset(0,0)-它什么也沒做;你可以使用cell.Value.
結果:

轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/460544.html
