我的安装如上图所示。
逻辑宏的是,如果我在细胞B5
或在Range("B2:B26")
空单元格中输入一个数字1
则输出将是这种格式:
B2 3
B3 4
B4 2
B5 1
现在,它给我的输出,但也有一定的缺点例如
如果我提供输入8
到同一个单元,那么它仍然会增加排名。我加入了一个匹配检查,看看这个值是否存在,但它似乎不工作任何帮助,将不胜感激。
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Application.EnableEvents = False
Dim KeyCells As Range
Dim i As Long, Cel As Range, sht1 As Worksheet, j As Long, found As Boolean
Set sht1 = Sheet1
Set KeyCells = sht1.Range("B2:C26")
If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then
If Target.Column = 2 Then
For i = 2 To 26
If sht1.Range("B" & i) <> Empty And sht1.Range("B" & i).Value >= Target.Value And i <> Target.Row Then
sht1.Range("B" & i).Value = sht1.Range("B" & i).Value + 1
Else: End If
Next i
Else: End If
If Target.Column = 3 Then
For i = 2 To 26
If sht1.Range("C" & i) <> Empty And sht1.Range("C" & i).Value >= Target.Value And i <> Target.Row Then
sht1.Range("C" & i).Value = sht1.Range("C" & i).Value + 1
Else: End If
Next i
Else: End If
Else: End If
Call CreateDataLabels
Target.Select
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
我有点困惑。如果你在'B5'中键入'1',那么会发生什么? 'B3'中你是如何得到'4'的? –
@SiddharthRout if you will remove this part'found = False For i = 2 To 26 If sht1.Range(“B”&i)<> Empty and sht1.Range(“B”&i).Value = Target .Value And i <> Target.Row Then found = True 否则:结束如果 接下来,我会得到它。 – newguy
你能忘记代码并解释逻辑吗? :) –