如果環境很好,可以通過向後者應用函數來計算基於舊值的新值。在這種情況下,你不能寫出一個純粹的公式/函數,因爲新值不僅取決於舊的值,而且還取決於它所屬的組的元素數量(1,2,3,...)至。
所以你必須在跟蹤組的源元素上編寫一個循環。當看到「組」時,請考慮「詞典」 - 而不是跟蹤使用If和變量的組標識符更改,讓字典爲您工作。額外獎勵:不依賴於訂單。
在代碼:
Dim aSrc : aSrc = Split("TS-1 TS-1 TS-1 TS-2 TS-2 TS-3 TS-3 TS-3 TS-3")
WScript.Echo "aSrc:", Join(aSrc)
Dim aExp : aExp = Split("TC-1-1 TC-1-2 TC-1-3 TC-2-1 TC-2-2 TC-3-1 TC-3-2 TC-3-3 TC-3-4")
ReDim aRes(UBound(aSrc))
Dim dicN : Set dicN = CreateObject("Scripting.Dictionary")
Dim nRow : nRow = 0
Dim sInp
For Each sInp In aSrc
Dim aParts : aParts = Split(sInp, "-")
dicN(aParts(1)) = dicN(aParts(1)) + 1
aRes(nRow) = "TC-" & aParts(1) & "-" & dicN(aParts(1))
nRow = nRow + 1
Next
WScript.Echo "aExp:", Join(aExp)
WScript.Echo "aRes:", Join(aRes)
輸出:
aSrc: TS-1 TS-1 TS-1 TS-2 TS-2 TS-3 TS-3 TS-3 TS-3
aExp: TC-1-1 TC-1-2 TC-1-3 TC-2-1 TC-2-2 TC-3-1 TC-3-2 TC-3-3 TC-3-4
aRes: TC-1-1 TC-1-2 TC-1-3 TC-2-1 TC-2-2 TC-3-1 TC-3-2 TC-3-3 TC-3-4
這在Office 2010中不起作用。 已將其更新爲= A1&「 - 」&COUNTIF(A $ 1:A1,A1) – TechnoCrat