Tengo un extracto de AD con más de 54000 nombres que generalmente están en este formato (datos de muestra):
Barnes, Bob B [WST]
Santiago, Francis AB [AT]
Chandler, Ronald
Jefferson, Katherine T [NT]
Forrest, Stan S [WST]
El Guerrero, Annette BMD [AT]
Lopez, Todd TA [CNT]
Jackson, Lincoln F [NT]
Nunez, Mattie Joey LC [WST]
Moran, David DA [AT]
Gowan, Darryl V
Hansen, Rick AF [NT]
Lowe, Denise DR [WST]
Butler, Doug D [AT]
Kim, Erika
Desafortunadamente, este formato no es consistente en todos los datos. En ocasiones, no habrá un MI o puede haber hasta 3 MI. Además, el [RGN] no siempre está presente. Y para empeorar las cosas, hay una buena cantidad de nombres que también tienen espacios (por ejemplo, Da Vinci).
Necesito limpiar estos nombres para que lean:
Apellido, Nombre
Intenté usar las funciones IZQUIERDA, DERECHA y Texto a columnas con mínimo éxito. Hasta ahora, el mejor resultado es el método Text-to-Columns delimitado por un espacio y luego uniéndolos usando (a1&" "&b1). Esto solo funciona quizás para la mitad de los nombres y actualmente planeo continuar uniendo celdas (a1, b1, c1, etc.) y luego verificar manualmente los nombres para asegurarme de que sean correctos. Estoy orando y esperando que alguien pueda salvarme a mí y a mis ojos de hacer esto y tenga una idea para probar.
Respuesta1
yo sueloComplemento RegEx Buscar/Reemplazartener la función de hoja de trabajo habilitada para expresiones regulares.
Con eso puedes eliminar fácilmente MI y RGN:
=RegExReplace(A1," [A-Z ]*(\[.*)*","",-1)
encontrar patrón
" [A-Z ]*(\[.*)*"
coincide con el espacio después del nombre
[A-Z ]*
opcionalmente coincide con las iniciales(\[.*)*
opcionalmente coincide con la región
- lo reemplaza a nada
""
- sólo reemplaza la última aparición
-1
Respuesta2
Utilice una expresión regular, o algo parecido, para dividir esa cadena en tres partes. Apellido, Nombre, extra.
Probablemente pueda usar la misma funcionalidad para dividir el extra en MI y RGN, suponiendo que tenga una lista corta de RGN (¿regiones?).
Usar la coma como delimitador para quitar el apellido del frente es fácil. Encontrar los nombres con espacios puede resultar más difícil. Sin embargo, suponiendo que los que tienen 3 MI tienen iniciales únicas, puede buscar el primer carácter único como la primera inicial del segundo nombre. Todo lo anterior a ese es el nombre.
Hagas lo que hagas, hazlo por etapas. Quita los apellidos, ya que es fácil. El resto es Nombre MI [RGN]. Si los corchetes existen donde hay una región, eso también es fácil. Quítatelos.
Eso deja FirstName MI. Trabajaría de derecha a izquierda. Si el último carácter es un espacio, suéltelo. Si es un carácter y el carácter que queda es un espacio, entonces es una inicial. Sáquelo y agréguelo al frente del campo de destino para MI. Repita hasta que haya una cadena de varios caracteres. Este es el final del nombre. Felicitaciones, ya terminaste de dividirlo todo.
Otra pregunta: ¿Puedes volver a AD y reexportar y obtener los campos individuales y no el nombre para mostrar? (powershell, Get-ADUser ...
) Sería MUCHO más fácil volver a ensamblar el nombre para mostrar que hacer lo que acabo de enumerar.