COMO COPIAR datos de una fórmula de una matriz obviando las celdas vacías
Tengo una matriz de 3 filas por 8 columnas donde tengo valores numéricos de una fórmula aleatoria, en algunas celdas de esa matriz otras están vacías, yo quiero copiarlos a otro archivo de excel solamente los números encolumnados sin espacios, y poder a través de un botón copiar cada vez que se generan números nuevos de la fórmula de la matriz copiar los números resultantes en el otro archivo desde ya si me pueden ayudar
1 Respuesta
Me puedes comentar lo siguiente:
1. ¿Puedes poner un ejemplo de la fórmula?
2. ¿Cuál es el rango de esa matriz?
3. ¿Cómo se llama la hoja con la matriz?
4. ¿Cómo se llama el libro y la hoja destino?
5. ¿En dónde se va a pegar los datos? ¿Se va a pegar como matriz? ¿O los quieres en una fila o en una columna?
6. Supongo que hay que pegar los valores, ¿para qué no se peguen las fórmulas?
Si puedes poner 2 imágenes, en la imagen1 que se vea tu matriz y en la imagen2 que se vea cómo estás pegando los datos que tienes en la imagen1. Procura que se vean las filas y las columnas de excel.
Hola Dante esto es por querer aprender más como hacer cosas hice para un bingo familiar en una capilla de mi barrio un generador de cartones de bingo con la fórmula aleatoria, y quiero copiar en otro archivo llamado bolillero, en una hoja llamada cartones poder copiar los números encolumnados como la imagen que te muestro que lo hice a mano pero pretendo hacerlo de forma automática, cada cartón cuenta con 3 jugadas y quiero copiar los valores generador por la fórmula aleatoria de cada cartón en una hoja aparte para tener una base con los números que tiene cada cartón en sus distintas jugadas. Te agradeceré si me das una ayuda
Espero sea lo que me pedís
Entiendo que quieres pasar los números de un cartón a otra hoja, pero no me queda claro de las 3 jugadas de un cartón, ¿cuál es la que se debe pasar?
Ahora tu ejemplo tampoco es claro, los número del cartón 001, de la imagen 2 no coinciden con los números de la imagen 1.
Puedes revisarlo y me explicas lo que necesitas.
También dime en qué momento quieres hacer la copia, ¿presionando un botón?
si justamente porque era aleatorio y cada vez que entraba en el archivo de los cartones el primero me modificaba los números ahora le saque lo de que me re calcule automáticamente a manual y en la segunda imagen yo arme solo los números de la jugada 1, tengo que hacer los mismo con las otras 2 y me llevo 3 días y primero imprimir todos los cartones y después me puse a copiar al otro archivo los números impresos, es por eso que busco la manera de hacerlo de forma automática que genere los cartones y luego cuando presione un botón me copie todos los valores al otro archivo lo que ves en la imagen 2 es solo parte de las columnas de cada cartón de la jugada , el porque solo cuando apretó un botón, por que no quiero que lo copie automáticamente y me modifique todo, es para hacer un control de las boletitas premiadas y con otras formulas que ya tengo me diga si alguien hizo bingo y que cartón es
Creo que más o menos te entiendo.
El problema de tu fórmula es que cada vez que hagas algo en el archivo se van a recalcular todos los resultados.
Lo que podemos hacer es que la macro, genere todos los cartones, lo que haría la macro es generar los números aleatorios y pondría en las celdas los valores, es decir, ya no tendrías las fórmulas.
Una vez que los cartones ya tienen los valores, los datos se pueden pasar a columnas.
Pero para generar un cartón, me tienes que explicar cómo generarlo.
Solamente explícame cómo generar un cartón, cómo es que tienes lugares vacíos.
Supongo que los demás cartones funcionan de la misma forma.
Hola bueno paso a explicarte los cartones están compuesto por 9 columnas de 3 filas en cada columna que es variable puede tener 1 o 2 números en la primer columna va del 1 al 9 en la segunda del 10 al 19, en la tercera del 20 al 29 así sucesivamente hasta el 90 yo en donde hay dos números en una columna usaba la formula aleatoria entre 1 y 5 y en la otra del 6 al 9 como ejemplo, y en la que va un solo numero le pongo aleatorio entre el 1 y 9, así arme distintos modelos y después los copie, ha me olvidaba cada cartón consta de 15 números distribuidos en 5 por fila es por eso que en algunas columnas no tiene números.
Espero que se entienda mi explicación y desde ya muchas gracias por tu respuesta.
¿Entonces quieres que te arme una macro que genere cada uno de los cartones?
¿Y cómo sé si en una columna va un número o van 2 números?
La verdad Dante me gustaría porque aprendo de todo esto los dibujos de 2 números en una columna o 1 es al asar en 1 cartón lleva en los 10 al 19 va uno solo en otro cartón en ese rango van 2, pero sobre todo es poder copiar los datos si quieres puedo enviarte mis 2 archivos para que veas lo que conseguí hacer para que puedas entender lo que me falta y ya que tienes muuuuuchaaa más idoneidad en esto me puedas reslver
Te anexo la macro para copiar todos los cartones y todas las jugadas a columnas.
También te hace una copia de los valores de los cartones (sin fórmulas) en la hoja3 para que tengas los resultados y no se cambien.
Sub cartones() 'Por.Dante Amor Application.ScreenUpdating = False Set h1 = Sheets("CARTONES DEL 1 al 100") Set h2 = Sheets("Hoja2") Set h3 = Sheets("Hoja3") Set r = h1.Range("H:K,T:W") Set b = r.Find("JUGADA", LookAt:=xlPart) ' h3.Cells.Clear h1.Cells.Copy h3.Cells.PasteSpecial Paste:=xlValues h3.Cells.PasteSpecial Paste:=xlFormats ' u2 = h2.Range("B" & Rows.Count).End(xlUp).Row If u2 = 2 Then u2 = 3 h2.Range("B3:GS" & u2).ClearContents If Not b Is Nothing Then ncell = b.Address Do If h1.Cells(b.Row - 1, b.Column + 2) <> "" Then col = h1.Cells(b.Row - 1, b.Column + 2) * 2 End If ' For Each c In h1.Range(h1.Cells(b.Row + 2, b.Column - 5), h1.Cells(b.Row + 5, b.Column + 3)) If IsNumeric(c.Value) And c.Value <> "" Then fil = h2.Cells(Rows.Count, col).End(xlUp).Row + 1 h2.Cells(fil, col) = c.Value End If Next Set b = r.FindNext(b) Loop While Not b Is Nothing And b.Address <> ncell End If ' For i = Columns("B").Column To Columns("GR").Column Step 2 With h2.Sort .SortFields.Clear .SortFields.Add Key:=h2.Cells(3, i) .SetRange h2.Range(h2.Cells(3, i), h2.Cells(17, i)) .Header = xlNo: .Apply ' .SortFields.Clear .SortFields.Add Key:=h2.Cells(18, i) .SetRange h2.Range(h2.Cells(18, i), h2.Cells(32, i)) .Header = xlNo: .Apply ' .SortFields.Clear .SortFields.Add Key:=h2.Cells(33, i) .SetRange h2.Range(h2.Cells(33, i), h2.Cells(47, i)) .Header = xlNo: .Apply End With Next MsgBox "Terminado" End Sub
Saludos.Dante Amor
Recuerda valorar la respuesta.
- Compartir respuesta