Detectar si en cadena texto los tres primeros caracteres son letras y luego los 3 siguientes son números. Resolvemos el caso con Lenguaje M + Power Query
Abrimos un nuevo proyecto e ingresamos a Transformar datos
creamos una nueva consulta
Ingresamos al Editor avanzado
let
Origen =
#table (
type table [ #"PlacasAutos" = text ],
{
{"ADG965"},
{"ASD9Q1"},
{"AW1312"},
{"JUR3621"},
{"PLKJYT"},
{"HYS145"}
}
),
#"Personalizada agregada" =
Table.AddColumn(
Origen,
"Personalizado",
each
if Text.Length([PlacasAutos]) = 6 then
let
Placa = List.Split( Text.ToList([PlacasAutos]), 3),
Parte1 = Placa{0},
Parte2 = Placa{1},
VerificarLetras =
List.Sum(
List.Transform(
Parte1,
each
Number.From(List.ContainsAny({_}, {"a".."z"}, Comparer.OrdinalIgnoreCase ))
)
),
VerificarNumeros =
List.Sum(
List.Transform(
Parte2,
each
Number.From(List.ContainsAny({_}, {"0".."9"} ))
)
)
in
if VerificarNumeros = 3 and VerificarLetras = 3
then "Placa Correcta"
else "Verificar Placa"
else "Verificar Placa [Length]"
)
in
#"Personalizada agregada"
explicación del código
- Creación de una tabla +6 registros con diferentes formatos
- Se recorre la tabla creada
- Se verifica que la longitud de la placa sea igual a 6 caracteres
- Se crea un lista con las placas tomando de 3 en 3 caracteres
- Se crean 2 variables de tipo lista con los 2 segmentos
- Se recorre la primera lista verificando que los 3 caracteres tenga formato de Letras
- Se recorre la primera lista verificando que los 3 caracteres tenga formato de Numérico
- Se verifica si la Placa es correcta (3 caracteres + 3 números)
- Retorna si la longitud es diferente de 6 y si es así le asigna el valor «Verificar Placa [Length]»
Resultado
Leave a Reply