Excel VBA排名ROW()

时间:2017-03-28 16:03:43

标签: excel vba excel-vba

我根据位置或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

抱歉,我无法正确格式化表格。

2 个答案:

答案 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