Se você quisesse verificar o valor e a lógica de verificação não fosse muito complexa, isso poderia ser feito com a validação de dados padrão do Excel. No entanto, desde que você gostaria de reformatar o valor para ser correto, você precisará usar o VBA ou Visual Studio Tools for Office. A seguir, uma macro VBA simples que faz o que você deseja.
A mágica acontece quando o evento Worksheet_Change é acionado. Para o exemplo, suponho que você esteja inserindo valores únicos na primeira coluna. A função CorrectPartNo faz o trabalho pesado. Ele analisa o valor inserido e retorna um valor formatado corretamente ou nada para indicar que houve um erro de validação (ele verifica apenas o comprimento máximo). O processamento funciona com o seu exemplo, mas provavelmente é muito simples para o mundo real. Poderia ser facilmente aprimorado com expressão regular ou outro processamento igualmente poderoso.
O manipulador de eventos continua atualizando a célula com o número de peça formatado corretamente ou torna o valor inserido pelo usuário em negrito e vermelho para indicar um erro.
Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim NewValue As String
If (Target.Column = 1 And Target.Count = 1) Then
Application.EnableEvents = False
NewValue = CorrectPartNo(Target.Value)
If (Len(NewValue) = 0) Then
Target.Font.Color = vbRed
Target.Font.Bold = True
Else
Target.Value = NewValue
End If
Application.EnableEvents = True
End If
End Sub
Function CorrectPartNo(PartNo As String)
Dim StartPartNo As String
Dim EndPartNo As String
Dim EndPartNoPosition As Integer
StartPartNo = Left(PartNo, 1)
If (Mid(PartNo, 2, 1) = "-") Then
If (Len(PartNo) > 4) Then
CorrectPartNo = ""
Exit Function
Else
EndPartNoPosition = 3
End If
Else
If (Len(PartNo) > 3) Then
CorrectPartNo = ""
Exit Function
Else
EndPartNoPosition = 2
End If
End If
EndPartNo = Right("0" + Mid(PartNo, EndPartNoPosition), 2)
CorrectPartNo = StartPartNo + EndPartNo
End Function