我根据位置或rowID将Excel VBA卡在DenseRank行中。我在下面列出了Sales列,只是为了表明我不关心基于列的排名,而是想按行排序#并根据值在#34; City&#34中的值更改时重新启动排名;。
#City# |#Sales# |#DESIREDOUTPUT#
Chicago 1 1
Chicago 5 2
Chicago 10 3
Chicago 7 4
New York 3 1
New York 5 2
New York 2 3
抱歉,我无法正确格式化表格。
答案 0 :(得分:1)
公式方法
输入C1:
=IF(A2=A1;C1+1;1)
然后将其拖下来
VBA方法
Sub main()
With Range("A2", Cells(Rows.Count, 1).End(xlUp)).Offset(, 2)
.Formula = "=if(RC[-2]=R[-1]C[-2],R[-1]C + 1,1)"
.Value = .Value
End With
End Sub
答案 1 :(得分:1)
我不清楚为什么VBA是必要的,但
with worksheets("sheet1")
with .range(.cells(2, "C"), .cells(.cells(.rows.count, "A").end(xlup).row, "C"))
.formula = "=countif(a$2:a2, a2)"
.value = .value
end with
end with