Si tienes una base de datos grande usar fórmulas te hará muy lento el excel mira este es el resultado de la macro, en la columna DE coloca los números según la columna F, la macro funciona así, le cada celda de la columna DE y si la inicial es numero y el final es letra considerara que es DNI y cambiara los caracte por astericos con la configuración de la columna F, si la inicla es letra y el final es letra pondrá asteriscos como si fuera un NIE y si la inicial es una letra y el final es un numero pondrá astericos en configuración pasaporte por cierto aquí funciona para ambos casos en letras mayúsculas y minúsculas
y esta es la amcro solo cópiala y ponla en un modulo estándar
Sub poner_astericos()
Set datos = Range("a2").CurrentRegion
With datos
filas = .Rows.Count: col = .Columns.Count
Set datos = .Rows(2).Resize(filas - 1)
For i = 1 To filas - 1
dni = .Cells(i, 3)
largo = Len(dni)
der = Left(dni, 1)
izq = Right(dni, 1)
codigo = Asc(der)
codigo2 = Asc(izq)
valida = codigo >= 48 And codigo <= 57
valida2 = codigo >= 65 And codigo <= 90
valida3 = codigo >= 97 And codigo <= 122
valida4 = codigo2 >= 48 And codigo2 <= 57
valida5 = codigo2 >= 65 And codigo2 <= 90
valida6 = codigo2 >= 97 And codigo2 <= 122
If valida And (valida5 = True Or valida6 = True) Then
cadena = WorksheetFunction.Replace(dni, 1, 3, "***")
cadena2 = WorksheetFunction.Replace(cadena, largo - 1, 2, "**")
.Cells(i, 4) = cadena2
End If
If (valida2 Or valida3) And (valida5 Or valida6) Then
cadena = WorksheetFunction.Replace(dni, 1, 4, "****")
cadena2 = WorksheetFunction.Replace(cadena, largo, 1, "*")
.Cells(i, 4) = cadena2
End If
If (valida2 Or valida3) And valida4 Then
cadena = WorksheetFunction.Replace(dni, 1, 5, "*****")
.Cells(i, 4) = cadena
End If
Next i
End With
Set datos = Nothing
End Sub