Pasar de 1 fila con 3 celdas a 3 filas con 3 celda
Hola mi consulta es la siguiente, como hacer para que tres celdas consecutivas con este formato A B C;D;E pasen a A B C A B D A B E Es decir de una fila con tres celdas pasar a tres filas con tres celdas. Muchas gracias de antemano
¿No te sirve cortar y copiar o arrastrar y colocar?...
Tendría que hacerlo unas 300 veces por cada fila osea, si de cada una salen tres pues 900 veces
Ya nos vamos entendiendo, estoy suponiendo que lo que quieres mover, es el VALOR de la celda, solo confírmame y te paso la macro...
Aquí esta la macro para mover tus datos, estoy considerando que NO tienes más datos ALREDEDOR de estos, la celda activa DEBE de estar en cualquier celda DENTRO del área de tus datos, la macro se detendera HASTA que haya una celda en blanco abajo y dos celdas a la derecha, pruébalas, yo moví mil filas para tener tres mil al final y se tardo 19 segundos en un K6-2 a 350, creo que esta bien... Option Explicit Public Sub MoverDatos() 'Seleccionamos la primer celda de mis datos ActiveCell.CurrentRegion.Cells(1, 1).Select Application.ScreenUpdating = False 'Nos detendremos cuando ya no haya datos a mover Do Until Trim(ActiveCell.Offset(1, 0).Value) = "" And _ Trim(ActiveCell.Offset(0, 3).Value) = "" 'Insertamos dos fila ActiveCell.Offset(1, 0).EntireRow.Insert ActiveCell.Offset(1, 0).EntireRow.Insert 'Copiamos los valores de A y B Range(ActiveCell, ActiveCell.Offset(0, 1)).Copy _ Range(ActiveCell. Offset(1, 0), ActiveCell.Offset(2, 1)) 'Cortamos el valor de D ActiveCell.Offset(0, 3). Cut ActiveCell.Offset(1, 2) 'Cortamos el valor de E ActiveCell.Offset(0, 4). Cut ActiveCell.Offset(2, 2) 'Activamos la siguiente fila ActiveCell.Offset(3, 0). Activate Loop Application.ScreenUpdating = True End Sub
Bueno primero gracias, y segundo perdón por seguir molestando, pero no sale, consigo separar A Y B pero nada más, voi a intentar ser más explicito. celda1 A, celda2 B, celda3 C;D;E lo que trato de hacer es que de esa fila con esas celdas queden 3 filas Celda1 A, celda2 B, celda3 C Celda1 A, celda2 B, celda3 D Celda1 A, celda2 B, celda3 E Con la macro que tu propones (que por cierto me has dejado impresionado por lo complicado que parece todo esto) lo que consigo es tener celda1 A, celda2 B, celda3 C;D;E Celda1 A, celda2 B, celda3 vacia Celda1 A, celda2 B, celda3 vacia Espero que ahora este todo más claro y también espero que no sea algo muy complicado de hacer. Gracias
Propongo ser más claros en lo que quiere uno, yo supuse esto A1 = A B1 = B C1 = C D1 = D E1 = E A2 = A B2 = B C2 = C D2 = D E2 = E Para obtener esto A1 = A | B1 = B | C1 = C A2 = A | B2 = B | C2 = D A3 = A | B3 = B | C3 = E A4 = A | B4 = B | C4 = C A5 = A | B5 = B | C5 = D A6 = A | B6 = B | C6 = E Pero me dices que tienes A1 = A | B1 = B | C1 = C;D;E A2 = A | B2 = B | C2 = C;D;E O sea, en al columna C esta los tres valores que quieres separar, ahora, con las celda de las columnas A y B no hay problema por que tienen un solo valor, pero en la columna C, mi pregunta es si estos valores son C;D;E así, las letras C, DE y E separadas por ;(punto y coma) o solo es la forma de decirme que hay tres valores, si es otro el contenido de esta columna C, necesito que me digas explícitamente cual es, y que criterio sigues para diferenciar uno de otro, el punto y coma esta bien, aunque podría ser cualquier otro carácter.
Los valores de la columna C van separados por punto y coma, menos mal que solo te he propuesto parte del problema por que si tengo que explicarlo todo (con lo bien que me explico) tardaríamos siglos. Con que me soluciones esto me conformo, el resto me peleare yo con ello. Gracias
La siguiente macro debe de funcionar y no te preocupes con el tiempo uno aprende a darse a entender, puedes preguntar cuanto gustes... Le agregue un adornito para que te vaya mostrando en la barra de estado la linea que esta procesando, para que el usuario vea que esta trabajando, saludos... Option Explicit Public Sub MoverDatos() Dim co1 As Long Dim co2 As Integer Dim Filas As Long Dim strDatos() As String On Error Resume Next 'Seleccionamos la primer celda de mis datos ActiveCell.CurrentRegion.Cells(1, 1).Select 'Obtenemos el numero de filas a manipular Filas = ActiveCell.End(xlDown).Row 'Desactivamos la actualizacion en pantalla Application.ScreenUpdating = False 'Recorremos las filas For co1 = 1 To Filas Application.StatusBar = "Procesando la fila: " & Format(co1) 'Insertamos dos fila ActiveCell.Offset(1, 0).EntireRow.Insert ActiveCell.Offset(1, 0).EntireRow.Insert 'Copiamos los valores de A y B Range(ActiveCell, ActiveCell.Offset(0, 1)).Copy _ Range(ActiveCell.Offset(1, 0), ActiveCell.Offset(2, 1)) strDatos = Split(ActiveCell.Offset(0, 2).Value, ";") For co2 = LBound(strDatos) To UBound(strDatos) ActiveCell.Offset(co2, 2).Value = strDatos(co2) Next co2 'Activamos la siguiente fila ActiveCell.Offset(3, 0).Activate Next co1 'Liberamos la barra de estado Application.StatusBar = False 'Activamos la actualizacion de la pantalla Application.ScreenUpdating = True End Sub
Perfecto, muchísimas gracas has sido de gran ayuda cuando vuelva a atascarme (que lo haré no lo dudues), volveré por aquí a preguntar. Gracias de nuevo