我在 Excel 中有一系列数据,如下所示
ARG2755-NNL4W BBF1732-NNM4WF BES0542-NNM4W BES0542-NNM4W BES0542-NNM4W BES0542-NNM4W BES0542-NNM4W BES0542-NNM4W BRA0743-NNM4VF BRA1650-NNM4TK BRA1919-NNO1PK BRA1919-NNO1WK BRA1920-NNL4VK BRA1920-NNL4VK BRB0939-NNL4WF BRB1625-NNL4WK BRB1625-NNL4WK
我想将其编号如下:
1 ARG2755-NNL4W 2 BBF1732-NNM4WF 3 BES0542-NNM4W BES0542-NNM4W BES0542-NNM4W BES0542-NNM4W BES0542-NNM4W BES0542-NNM4W 4 BRA0743-NNM4VF 5 BRA1650-NNM4TK 6 BRA1919-NNO1PK 7 BRA1919-NNO1WK 8 BRA1920-NNL4VK BRA1920-NNL4VK 9 BRB0939-NNL4WF 10 BRB1625-NNL4WK BRB1625-NNL4WK
请帮忙
答案1
答案2
假设列为 A 和 B,1
在列中输入 a A1
,然后输入此公式A2
并将其向下拖动
=IF(NOT(B2=B1),INDEX($A$1:A1,MATCH(9.99999999999999E+307,$A$1:A1))+1,"")
其工作原理如下:
=IF(NOT(B2=B1)...
- 将单元格 B2 与 B1 进行比较。如果它们不匹配...
INDEX($A$1:A1,MATCH(9.99999999999999E+307,$A$1:A1))+1
- 这会找到从 (固定) 到 A1 (可变) 的最后一个数字A1
,并将它加 1。需要使用 $ 来确保它始终从 A1 比较到它之前的单元格。否则:
"")
- 仅返回一个空白字符串。
答案3
这个 VBA 可以做到这一点。请在工作簿的副本上执行此操作,因为没有撤消选项。
另请注意,您可以在代码开始时设置一些值
Option Explicit
Sub SailMeHearties()
Dim row As Integer
row = 1
Dim col As String
col = "B"
Dim colOfNumber As String
colOfNumber = "A"
' LEAVE THE CODE BELOW ALONE OR WALK THE PLANK
Range(colOfNumber + ":" + colOfNumber).Clear
Range(colOfNumber & row).Value = 1
Dim startNumber As Integer
startNumber = 2
row = row + 1
Do While Range(col & row).Value <> ""
If (Range(col & row).Value <> Range(col & row - 1).Value) Then
Range(colOfNumber & row).Value = startNumber
startNumber = startNumber + 1
End If
row = row + 1
Loop
End Sub