如何根据一列中的值递增另一列中的值?
对于ex
如果是的话
A B
TS-1
TS-1
TS-1
TS-2
TS-2
TS-3
TS-3
TS-3
TS-3它应该是这样的
A B
TS-1 TC-1-1
TS-1 TC-1-2
TS-1 TC-1-3
TS-2 TC-2-1
TS-2 TC-2-2
TS-3 TC-3-1
TS-3 TC-3-2
TS-3 TC-3-3
TS-3 TC-3-4根据A列中的值的数量,B列中的值应该如下所示
发布于 2013-01-21 22:23:44
将此公式复制到单元格dataselection.中:将内容从
发布于 2013-01-21 03:31:40
这看起来很容易实现。
设置
算法
发布于 2013-01-21 03:55:17
给定良好的环境,您可以通过将函数应用于旧值来计算基于旧值的新值。在这种情况下,您不能编写纯公式/函数,因为新值不仅取决于旧的值,还取决于组中元素的数量(1,2,3,...)它属于。
因此,您必须在源元素上编写一个循环来跟踪这些组。当看到" group“时,想想”字典“--而不是使用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-4https://stackoverflow.com/questions/14428146
复制相似问题