Este tutorial le mostrará cómo convertir una cadena de texto en una sola celda a múltiples columnas usando el método Range TextToColumns en VBA
Texto a columnas
los Distancia.TextToColumns El método en VBA es una herramienta poderosa para limpiar datos que se han importado de archivos de texto o csv, por ejemplo.
Considere la siguiente hoja de trabajo.
Los datos han entrado en Excel todos en una columna y están separados por comillas.
Puede utilizar el método Range TextToColumns para separar estos datos en columnas.
Sintaxis de TextToColumns
expresión.TextToColumns (Destino, Tipo de datos, TextQualifier, Delimitador consecutivo, Pestaña, Punto y coma, Coma, Espacio, Otro, OtroChar, FieldInfo, Separador decimal, Separador de miles, TrailingMinusNumbers)
Expresión
Este es el rango de celdas que desea dividir, por ejemplo: Rango (“A1: A23”).
Todos los argumentos del método TextToColumns son opcionales (tienen corchetes alrededor).
Destino
Donde desea que se coloque el resultado, a menudo anula los datos y los divide en la misma ubicación.
Tipo de datos
El tipo de análisis de texto que está utilizando; puede ser xlDelimited (predeterminado si se omite), o xlFixedWidth.
TextQualifier
Si tiene comillas (simples o dobles) alrededor de cada campo en el texto que está dividiendo, debe indicar si son simples o dobles.
ConsequtiveDelimiter
Esto es verdadero o falso y le dice a VBA que considere 2 de los mismos delimitadores juntos como si fuera 1 delimitador.
Pestaña
Esto es Cierto de Falso, el valor predeterminado es Falso - esto le dice a VBA que los datos están delimitados por una pestaña.
Punto y coma
Esto esCierto de Falso, el valor predeterminado es Falso - esto le dice a VBA que los datos están delimitados por un punto y coma.
Espacio
Esto es Cierto de Falso, el valor predeterminado es Falso - esto le dice a VBA que los datos están delimitados por un espacio.
Otro
Esto es Cierto de Falso, el valor predeterminado es Falso. Si establece esto en Verdadero, el siguiente argumento, OtroChar necesita ser especificado.
OtroChar
Este es el carácter por el que se separa el texto (es decir, o | por ejemplo).
FieldInfo
Esta es una matriz que contiene información sobre el tipo de datos que se están separando. El primer valor de la matriz indica el número de columna en los datos y el segundo valor indica la constante que va a utilizar para representar el tipo de datos que necesita.
Un ejemplo de 5 columnas con tipos de datos de texto, números y fechas podría ser:
Matriz (Matriz (1, xlTextFormat), Matriz (2, xlTextFormat), Matriz (3, xlGeneralFormat), Matriz (4, xlGeneralFormat), Matriz (5, xlMDYFormat))
Otra forma de plantear esto es:
Matriz (Matriz (1, 2), Matriz (2, 2), Matriz (3, 1), Matriz (4, 1), Matriz (5, 3))
Los números de la segunda columna son los valores de las constantes donde la constante xlTextFormat tiene un valor de 2, xlGeneralFormat (predeterminado) tiene un valor de 1 y xlMDYFormat tiene un valor de 3.
Separador decimal
Puede especificar el separador decimal que debe usar VBA si hay números en los datos. Si se omite, utilizará la configuración del sistema, que suele ser un punto.
Separador de miles
Puede especificar el separador de miles que debe usar VBA si hay números en los datos. Si se omite, utilizará la configuración del sistema, que suele ser una coma.
TrailingMinusNumbers
Este argumento es en gran parte para la compatibilidad de datos que se generan a partir de sistemas más antiguos donde un signo menos a menudo estaba después del número y no antes. Debe establecer esto en Verdadero si los números negativos tienen el signo menos detrás de ellos. El valor predeterminado es falso.
Conversión de texto en columnas
El siguiente procedimiento convertirá los datos de Excel anteriores en columnas.
12345678910111213141516 | Sub TextToCol1 ()Rango ("A1: A25"). TextToColumns _Destino: = Rango ("A1: A25"),Tipo de datos: = xlDelimited, _TextQualifier: = xlDoubleQuote, _Delimitador consecutivo: = Verdadero, _Tabulador: = Falso, _Punto y coma: = Falso, _Coma: = Falso,Espacio: = Verdadero, _Otro: = Falso, _FieldInfo: = Matriz (Matriz (1, 1), Matriz (2, 1), Matriz (3, 1), Matriz (4, 1), Matriz (5, 1)), _Separador de decimales: = "." , _Separador de miles: = ",", _TrailingMinusNumbers: = VerdaderoEnd Sub |
En el procedimiento anterior hemos completado todos los parámetros. Sin embargo, muchos de los parámetros se establecen en falso o en la configuración predeterminada y no son necesarios. A continuación se muestra una versión más limpia del procedimiento anterior. Debe usar los nombres de los parámetros para indicar qué parámetros estamos usando.
1234567 | Sub TextToCol2 ()Rango ("A1: A25"). TextToColumns _Tipo de datos: = xlDelimited, _TextQualifier: = xlDoubleQuote, _Delimitador consecutivo: = Verdadero, _Espacio: = Verdadero,End Sub |
Solo hay 4 parámetros que son realmente necesarios: los datos están delimitados por comillas dobles, desea que las comillas consecutivas se traten como una y los datos estén separados por un espacio.
Para una línea de código aún más rápida, podríamos omitir los nombres de los parámetros, pero luego necesitaríamos poner comas para guardar el lugar del parámetro. Solo necesita poner información hasta el último parámetro que está utilizando, en este caso, el espacio que separa los datos, que es el octavo parámetro.
123 | Sub TextToCol3 ()Rango ("A1: A25"). TextToColumns, xlDelimited, xlDoubleQuote, True,,,, TrueEnd Sub |
Una vez que ejecute cualquiera de los procedimientos anteriores, los datos se separarán según el gráfico a continuación.