Com dados na coluna B , em A1 digite:
1
Em A2 digite:
=IF(B2=B1,"",1+MAX($A$1:A1))
e copie:
Eu tenho uma série de dados no excel como abaixo
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
Quero numerá-lo como abaixo:
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
Por favor ajude
Supondo que as colunas são A e B, coloque um 1
na coluna A1
, depois coloque esta fórmula em A2
e arraste-a para baixo
=IF(NOT(B2=B1),INDEX($A$1:A1,MATCH(9.99999999999999E+307,$A$1:A1))+1,"")
Isso funciona por:
=IF(NOT(B2=B1)...
- Compara a célula B2 a B1. Se eles não combinam ...
INDEX($A$1:A1,MATCH(9.99999999999999E+307,$A$1:A1))+1
- Localiza o último número de A1
(fixo) em A1 (variável) e adiciona 1 a ele. Os $ 's são necessários para garantir que esteja sempre comparando de A1, até a célula logo antes dele. Caso contrário:
"")
- Apenas retorne uma string em branco.
Este VBA faz isso. Faça isso em uma cópia da pasta de trabalho, pois não há opção de desfazer.
Observe também que você pode definir alguns valores no início do código
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
Veja também Como adiciono o VBA no MS Office?
Tags microsoft-excel