用于更改ID值的Excel宏';s
例如:用于更改ID值的Excel宏';s,excel,vba,Excel,Vba,例如: 695678必须是1 695678必须是1 695678必须是1 695678必须是1 695683必须是2 695683必须是2 695683必须是2 696217必须是3 696217必须是3 我得到了这个ID列表(每个数字对应一个人),但是这些数字例如695678、695683、696217不会增加1。他们的排名从低到高。有没有办法将这些值自动更改为1,2,3,。。。依此类推,将最低值更改为1,将第二个最低值更改为2,依此类推。(不知道如何使用宏执行此操作) 需要注意的是,当这
- 695678必须是1
- 695678必须是1
- 695678必须是1
- 695678必须是1
- 695683必须是2
- 695683必须是2
- 695683必须是2
- 696217必须是3
- 696217必须是3
=IF(ISBLANK(A1),1,IF(A1=A2,B1,B1+1))
向下复制以适应(数据的第一行为空白)
为了澄清,假设数据在A列,但从A2开始(A1和B1为空),上面的公式放在B2中,并向下复制以适应
首先,测试A1是否为空(如果为真,则返回1
起点-尽管这可以输入B2和一个更简单的公式,然后在B3中使用,以此类推)。如果A1不为空,则进行进一步测试,无论值是否已更改。如果没有(True),则使用紧接着上面的值,如果它已更改(False),则使用紧接着上面的值加1 请尝试:
=IF(ISBLANK(A1),1,IF(A1=A2,B1,B1+1))
向下复制以适应(数据的第一行为空白)
为了澄清,假设数据在A列,但从A2开始(A1和B1为空),上面的公式放在B2中,并向下复制以适应
首先,测试A1是否为空(如果为真,则返回1
起点-尽管这可以输入B2和一个更简单的公式,然后在B3中使用,以此类推)。如果A1不为空,则进行进一步测试,无论值是否已更改。如果没有(True),则使用紧接着上面的值,如果它已更改(False),则使用紧接着上面的值加1 请尝试:
=IF(ISBLANK(A1),1,IF(A1=A2,B1,B1+1))
向下复制以适应(数据的第一行为空白)
为了澄清,假设数据在A列,但从A2开始(A1和B1为空),上面的公式放在B2中,并向下复制以适应
首先,测试A1是否为空(如果为真,则返回1
起点-尽管这可以输入B2和一个更简单的公式,然后在B3中使用,以此类推)。如果A1不为空,则进行进一步测试,无论值是否已更改。如果没有(True),则使用紧接着上面的值,如果它已更改(False),则使用紧接着上面的值加1 请尝试:
=IF(ISBLANK(A1),1,IF(A1=A2,B1,B1+1))
向下复制以适应(数据的第一行为空白)
为了澄清,假设数据在A列,但从A2开始(A1和B1为空),上面的公式放在B2中,并向下复制以适应
首先,测试A1是否为空(如果为真,则返回
1
起点-尽管这可以输入B2和一个更简单的公式,然后在B3中使用,以此类推)。如果A1不为空,则进行进一步测试,无论值是否已更改。如果没有(True),则使用紧接着上面的值,如果它已更改(False),则使用紧接着上面的值加1 如果您需要VBA解决方案,则:
Sub Renumber()
Dim N As Long, I As Long, OldValue As Long
Dim K As Long
K = 1
N = Cells(Rows.Count, "A").End(xlUp).Row
OldValue = Cells(1, 1).Value
For I = 1 To N
If Cells(I, 1).Value = OldValue Then
Cells(I, 1).Value = K
Else
OldValue = Cells(I, 1).Value
K = K + 1
Cells(I, 1) = K
End If
Next I
End Sub
如果您需要VBA解决方案,则:
Sub Renumber()
Dim N As Long, I As Long, OldValue As Long
Dim K As Long
K = 1
N = Cells(Rows.Count, "A").End(xlUp).Row
OldValue = Cells(1, 1).Value
For I = 1 To N
If Cells(I, 1).Value = OldValue Then
Cells(I, 1).Value = K
Else
OldValue = Cells(I, 1).Value
K = K + 1
Cells(I, 1) = K
End If
Next I
End Sub
如果您需要VBA解决方案,则:
Sub Renumber()
Dim N As Long, I As Long, OldValue As Long
Dim K As Long
K = 1
N = Cells(Rows.Count, "A").End(xlUp).Row
OldValue = Cells(1, 1).Value
For I = 1 To N
If Cells(I, 1).Value = OldValue Then
Cells(I, 1).Value = K
Else
OldValue = Cells(I, 1).Value
K = K + 1
Cells(I, 1) = K
End If
Next I
End Sub
如果您需要VBA解决方案,则:
Sub Renumber()
Dim N As Long, I As Long, OldValue As Long
Dim K As Long
K = 1
N = Cells(Rows.Count, "A").End(xlUp).Row
OldValue = Cells(1, 1).Value
For I = 1 To N
If Cells(I, 1).Value = OldValue Then
Cells(I, 1).Value = K
Else
OldValue = Cells(I, 1).Value
K = K + 1
Cells(I, 1) = K
End If
Next I
End Sub
另一个公式是,如果您的数据需要取消排序,则应比任何宏更快:
=SUMPRODUCT( (FREQUENCY($A$1:$A$9, $A$1:$A$9) > 0) * (A1 >= $A$1:$A$10) )
另一个公式是,如果您的数据需要取消排序,则应比任何宏更快:
=SUMPRODUCT( (FREQUENCY($A$1:$A$9, $A$1:$A$9) > 0) * (A1 >= $A$1:$A$10) )
另一个公式是,如果您的数据需要取消排序,则应比任何宏更快:
=SUMPRODUCT( (FREQUENCY($A$1:$A$9, $A$1:$A$9) > 0) * (A1 >= $A$1:$A$10) )
另一个公式是,如果您的数据需要取消排序,则应比任何宏更快:
=SUMPRODUCT( (FREQUENCY($A$1:$A$9, $A$1:$A$9) > 0) * (A1 >= $A$1:$A$10) )
@Gary的学生,你的解决方案接近完美,我对此进行了研究,并添加了一个小的更正,编译它时会出现运行时错误,你的K值是1,在else子句中,它只会再次接受相同的值 在将其调整到excel文件后,它工作得非常完美:
Sub Renumber()
Dim N As Long, I As Long, OldValue As Long
Dim K As Long
K = 1
N = Cells(Rows.Count, 2).End(xlUp).Row
OldValue = Cells(2, 2).Value
For I = 2 To N
If Cells(I, 2).Value = OldValue Then
Cells(I, 2).Value = K
Else
OldValue = Cells(**I + 1**, 2).Value
K = K + 1
Cells(I, 2) = K
End If
Next I
End Sub
**之间的I+1是被窃听的部分。
我也相应地更改了单元格索引
亲切问候,
David@Gary的学生,您的解决方案接近完美,我已经对此进行了研究并添加了一个小的更正,编译它时会出现运行时错误,您的K值为1,而在else子句中,它只会再次接受相同的值 在将其调整到excel文件后,它工作得非常完美:
Sub Renumber()
Dim N As Long, I As Long, OldValue As Long
Dim K As Long
K = 1
N = Cells(Rows.Count, 2).End(xlUp).Row
OldValue = Cells(2, 2).Value
For I = 2 To N
If Cells(I, 2).Value = OldValue Then
Cells(I, 2).Value = K
Else
OldValue = Cells(**I + 1**, 2).Value
K = K + 1
Cells(I, 2) = K
End If
Next I
End Sub
**之间的I+1是被窃听的部分。
我也相应地更改了单元格索引
亲切问候,
David@Gary的学生,您的解决方案接近完美,我已经对此进行了研究并添加了一个小的更正,编译它时会出现运行时错误,您的K值为1,而在else子句中,它只会再次接受相同的值 在将其调整到excel文件后,它工作得非常完美:
Sub Renumber()
Dim N As Long, I As Long, OldValue As Long
Dim K As Long
K = 1
N = Cells(Rows.Count, 2).End(xlUp).Row
OldValue = Cells(2, 2).Value
For I = 2 To N
If Cells(I, 2).Value = OldValue Then
Cells(I, 2).Value = K
Else
OldValue = Cells(**I + 1**, 2).Value
K = K + 1
Cells(I, 2) = K
End If
Next I
End Sub
**之间的I+1是被窃听的部分。
我也相应地更改了单元格索引
亲切问候,
David@Gary的学生,您的解决方案接近完美,我已经对此进行了研究并添加了一个小的更正,编译它时会出现运行时错误,您的K值为1,而在else子句中,它只会再次接受相同的值 在将其调整到excel文件后,它工作得非常完美:
Sub Renumber()
Dim N As Long, I As Long, OldValue As Long
Dim K As Long
K = 1
N = Cells(Rows.Count, 2).End(xlUp).Row
OldValue = Cells(2, 2).Value
For I = 2 To N
If Cells(I, 2).Value = OldValue Then
Cells(I, 2).Value = K
Else
OldValue = Cells(**I + 1**, 2).Value
K = K + 1
Cells(I, 2) = K
End If
Next I
End Sub
**之间的I+1是被窃听的部分。
我也相应地更改了单元格索引
亲切问候,
David1)此ID是否始终已排序?2) 您想要一个公式还是应该是VBA?是的,它们都已排序!他们总是在一起。然而,一个人可能有3排