【发布时间】:2021-04-27 08:50:33
【问题描述】:
我有这段代码,它工作得很好我一直面临的问题是代码没有根据排名粘贴结果。
我想将第一个 1 添加到排名最高的值,然后添加到第二高然后第三高等等...最后一个 1 将添加到排名最低的值.
代码将在该范围内找到它们的排名,根据该排名在其旁边的列中添加 1。这样做直到每个单元格都加 1(0 除外)。
我知道对于最终结果,排名无关紧要。但是需要添加排名逻辑。
您的帮助将不胜感激。
Sub SlowRange()
Dim LastRow As Long
LastRow = Sheet1.Cells(Sheet1.Rows.Count, 1).End(xlUp).Row
Dim rg As Range: Set rg = Sheet1.Range("A2:A" & LastRow)
Dim c As Range
For Each c In rg.Cells
If c.Value <> 0 Then
c.Offset(, 1).Value = 1
'Else
' c.Offset(, 1).Value = Empty
End If
Next c
End Sub
【问题讨论】:
-
排名是什么意思?比如,最高的数字在前?那么,B14 然后 B17 然后 B3 等等?
-
是的,你是对的@Christofer Weber
-
等等,如果它们都是 1,那有什么意义呢?还是您希望它按从大到小的顺序排列 1、2、3、4 等?
I know for the final result, the rank doesn't matter. But it is necessary to add the rank logic听起来像是某种学校项目,否则这样做毫无意义。如果是这样,你不应该让其他人为你做这件事。 -
重点是这件事可以通过排序功能来完成,但是如何在没有排序的情况下做到这一点,我毕业已经好几年了。 @西蒙
-
在将一个分配给 B 列之间是否发生了其他事情?