1. 目的
你是否在做一个表格排序,但只能知道某几个行之间的相对顺序,而可能排着排着发现后面还有顺序更靠前的项,而不得不将排好的序号重新+1+1......
所以你需要一个宏,它可以知道你输入了一个已经存在的序号,并以那个序号为准,自动修改其他序号
举两个例子:
原始 | 修改 | 修改后 |
---|---|---|
3 | 3 | |
3 | 4 | |
7 | 7 | |
2 | 2 | |
1 | 1 | |
原始 | 修改 | 修改后 |
---|---|---|
3 | 4 | |
4 | 5 | |
7 | 2 | 2 |
2 | 3 | |
1 | 1 | |
2. 宏代码
Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Target.Worksheet.Range("A:A")) Is Nothing Then
Dim ws As Worksheet
Set ws = Target.Worksheet
Dim userInputRow As Integer
userInputRow = Target.Row
Dim userInputValue As Integer
userInputValue = Target.Value
Dim i As Integer
Dim lastRow As Integer
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
For i = 1 To lastRow
If i <> userInputRow Then
If ws.Cells(i, 1).Value = userInputValue Then
ws.Cells(i, 1).Value = userInputValue + 1
End If
End If
Next i
End If
End Sub
宏怎么用就不多说了,这里是把排序列定为A列,可以按需改