Se me planteaba la siguiente cuestión:
La idea es, por tanto, listar todos los elementos de los diferentes textos o celdas, en pares de elementos...
Para resolver nuestra cuestión en particular, insertamos el siguiente código dentro de la ventana de código de un módulo estándar desde el editor de VB:
El trabajo ha consistido en, tal y como se explica en el paso a paso, generar una matriz o Array con los diferentes elementos de cada celda (Array llamada 'matriz').
A continuación, como parte del mismo bucle se ha generado una Collection con los elementos individuales de cada matriz anterior ('coleccion').
Finalmente, uniendo a pares los elementos individuales de nuestro Collection, cargando los datos en una última Array: 'MatrizFinal'.. para finalmente volcar todos sus elementos en la columna C de la hoja...
tengo un problema y no se como hacerlo, ya que recién estoy empezando a programar, mi problema es el siguiente: tengo varias celdas con textos separados por comas, el cual me piden que ordene por filas quedando de esta forma. texto1: casa, habitaciones, edificio, oficinas texto2: licuadora, frutas, molino , grano,fiesta patrias, bandera casa habitaciones edificio oficinas licuadora frutas molino grano fiestas patrias bandera |
La idea es, por tanto, listar todos los elementos de los diferentes textos o celdas, en pares de elementos...
Para resolver nuestra cuestión en particular, insertamos el siguiente código dentro de la ventana de código de un módulo estándar desde el editor de VB:
Sub Separar_Pares() Dim matriz() As String Dim MatrizFinal() As String Dim coleccion As New Collection Set Rng = Range("A1:A2") 'recorremos cada celda del rango... For Each celda In Rng 'construimos una matriz con los elementos separados por comas 'en cada celda matriz = Split(Trim(celda), ",") 'cada elemento lo añadimos a una Collection For item = 0 To UBound(matriz) coleccion.Add Trim(matriz(item)) Next item Next celda 'pasamos por todos los elementos cargados en la Collection Dim num As Long 'controlamos que haya un número par de elementos... 'en caso contrario añadimos uno en blanco. If coleccion.Count Mod 2 <> 0 Then coleccion.Add "" End If 'Preparamos una última matriz con los pares cargados num = Int(coleccion.Count / 2) ReDim MatrizFinal(1 To num) As String 'y procedemos a la carga de la matrizFinal x = 1 For m = 1 To coleccion.Count Step 2 MatrizFinal(x) = coleccion(m) & " " & coleccion(m + 1) x = x + 1 Next m 'Retornamos los pares a la Hoja de cálculo Range("C1:C" & num).Value = Application.Transpose(MatrizFinal) End Sub
El trabajo ha consistido en, tal y como se explica en el paso a paso, generar una matriz o Array con los diferentes elementos de cada celda (Array llamada 'matriz').
A continuación, como parte del mismo bucle se ha generado una Collection con los elementos individuales de cada matriz anterior ('coleccion').
Finalmente, uniendo a pares los elementos individuales de nuestro Collection, cargando los datos en una última Array: 'MatrizFinal'.. para finalmente volcar todos sus elementos en la columna C de la hoja...
No hay comentarios:
Publicar un comentario
Nota: solo los miembros de este blog pueden publicar comentarios.