Deberías de programar la lógica para el cambio de columna. Ya sea usando un bucle que haga los saltos de columna o programando directo las columnas que quieres que se haga
Hola Sebastian, muchas gracias por tus excelentes aportes, estoy aprendiendo demasiado contigo, power automate ha sido espectacular, pero tengo una consulta he estado tratando de crear una tabla despues de seleccionar el rango pero por mas que intento no hayo la manera, ¿qué metodo podría usar?
hola. Para crear una tabla en vba puedes usar esto. Set src = Range("B5:B10") Set ws = ActiveSheet ws.ListObjects.Add( SourceType:=xlSrcRange, Source:=src, _ xlListObjectHasHeaders:=xlYes, tablestyleName:="TableStyleMedium28").Name = "TuTabla"
¡Hola Jordan! Cualquiera de estos sirve, solo en lugar de seleccionar como celda de inicio tu encabezado, usa la celda siguiente. P.E. Si tu tabla tiene los encabezados en A1, usas tu Range en A2. Saludos!
Excelente explicación claro y conciso. ¿Mi estimado favor me podría ayudar con una macro? Hice una macro con la grabadora para colocar datos (Importes numéricos) en la columna I empezando desde la celda I12 hacia abajo al darle clip en un botón GENERAR VENTAS aleatorias, pero resulta que el rango está fijo. Quisiera una macro que genere los importes numéricos en un rango variable, ya que el rango puede aumentar o disminuir dependiendo de la cantidad de lineas que quisiera generar. Le envió la macro que hice. GRACIAS por su respuesta. Sub Macro1() ' ' Macro1 Macro Range("I12").Select ActiveCell.FormulaR1C1 = "=RANDBETWEEN(R7C6,R7C8)" Range("I12").Select Selection.AutoFill Destination:=Range("I12:I131"), Type:=xlFillDefault Range("I12:I131").Select ActiveWindow.SmallScroll Down:=-114 Range("I12").Select
hola. Usa lo explicado en este video, ya sea que quieras que el rango crezca desde la celda I12 o que necesites hacer variables los valores de la funcion randbetween
Excelente video, y si el rango varía entre 2 títulos distintos de una hoja de Excel, por ejemplo copiar el rango intermedio entre "Título 1" y "Título 2" para que sea inteligente la búsqueda del rango?. Gracias
Hola! Puedes usar la función find para encontrar las dos palabras y guardar cada una en una varíable. Checate este link de cómo usar find docs.microsoft.com/en-us/office/vba/api/excel.range.find Y este otro para unirlos y crear tu rango dinámico docs.microsoft.com/en-us/office/vba/api/excel.application.union
Hola estimado, tengo una duda, necesito crear un rango variable en filas a partir de una celda fija, ejemplo me ubico en K2 y hay datos (variables en nro de filas) en la columna K, entonces seleccionar A18 a K25 donde tendría los datos a modo de ejemplo, ¿existe alguna forma de hacer eso?
Hola! Ayudame a ver si entendí bien. 1. Estas en tu hoja de cálculo, seleccionas una celda (K2) 2. Corres la macro ahí. 3. La macro debe encontrar cual es la última celda con valores de la columna K y sacar el rango de A18 (fija) a donde sea (K25 en tu ejemplo). Entendi bien? O como buscas que se localicen los dos rangos. Saludos!
@@ExcelCute necesito crear una macro que automatice un orden personalizado de 3 columnas de un total de 17, el problema es que deben ser rangos de filas distintos. Y claro al crear una macro las selecciones quedan fijas, no variables. El segundo pero, es que las filas dependen de los datos en la columna K, y esos datos no necesariamente inician en K1, pueden ser K10 a K20 y esos datos son los que mandan la cantidad de filas seleccionadas a las cuales se les aplicará el orden personalizado según las columnas, es un poco complejo mi problema 😅😓
@@ExcelCute la forma manual de como lo consigo es la siguiente, filtro la columna K y le quito las celdas vacías, y hago el filtro personalizado de las columnas E, B y C, y así continuó con las demás columnas, L M N O P. Aplicando el mismo filtro personalizado a los datos resultantes de cada filtro
1. En cuanto a que los rangos queden fijos y no variables, probaste alguno de los métodos descritos en el video? Justo sirven para eso😁 . 2. De que depende donde inicien? Si logras resumir esa función lógica a nivel programación se puede resolver tu problema. 3. Cuando dices "quitar vacias" es eliminar? Porque entonces te serviría la combinación de xlUp+For. Para después programar los rangos restantes. Si me puedes mandar un ejemplo de archivo a svallejo@excelcute.com igual te puedo ayudar mejor.
@@ExcelCute si, estuve probando los ejemplos del video, pero solo me sirvieron para una parte de la tabla, muchas gracias estimado, le acabo de enviar un archivo de ejemplo a su correo.
Saludos mi estimado. Use la macro que me envío, y el dato de la celda D8 solo pega a la celda D9 y no pega a los demas celdas de abajo, e inclusive borré todos los datos que están desde la columna E9 hacia abajo Y solo pega a la celda D9. Gracias por su ayuda.
Hola Florencio. Creo entonces que no entendí tu problema claramente. Igual falta definir términos entonces. - Si vas a "pegar" el dato que está arriba para cada seriación de celdas entonces esto te sirve. Esto asume que ya existen valores en las celdas y lo único que hace es recorrer las celdas hacia abajo. - Si requieres realizar una serie de números iniciando desde un valor que se encuentre en la celda D9, entonces es otra cosa diferente. Si quieres, mándame tu ejemplo de lo que necesitas a svallejo@excelcute.com y lo revisamos. Saludos.
Hola, buen vídeo y en el ejemplo del mismo, cómo se podría hacer una macro, que autorrellene el mismo valor de "B1" con copiar y pegar hasta "B10", y luego que el valor de "B12" me lo copie y pegue a "B20", pero el tema está en que esa celda "B10", la próxima vez que lo descargue puede estar en "B9", por dar un ejemplo ¿Se puede copiar y pegar una celda, y que autorrellene con rangos dinámicos?. Saludos
Hola Boris. Primero tendrias que definir una condición para saber en donde debe detenerse, para despues usar un loop con cualquiera de los métodos descritos aquí. Si gustas mandame un ejemplo a svallejo@excelcute.com y lo revisamos a detalle. Saludos.
Hola Sebastián, tengo una duda. Yo deseo pegar un rango de datos de un libro a otro, pero al libro en el que deseo pegar la información se le van añadiendo datos cada día. ¿Cómo puedo hacer un "pegado dinámico" por así decirlo? Gracias por el video y la explicación clara.
¡Hola Graciela! Si actualmente usas algo como sheets(1).Range("A2").copy sheets(2).Range("A2").Pastespecial Podrías usar la técnica del video end(xldown).offset(1,0) para llegar hasta abajo del rango móvil de tu libro 2. Modificarías tu código así: sheets(1).Range("A2").copy sheets(2).Range("A1").end(xlDown).offset(1,0).PasteSpecial También podría usar algo así: sheets(1).Range("A2").copy sheets(2).Range("A" & Rows.Count).end(xlUp).offset(1,0).PasteSpecial Si tienes más dudas, escribeme a svallejo@excelcute.com y lo platicamos más a detalle.
Gracias por compartir sus conocimientos. Favor me podría ayudar con una macro? Quiero copiar y pegar un dato de una celda anterior D8 hacia las celdas hacia abajo desde la celda D9, D10, D11,.......de la misma columna D, Pero que se pegue de acuerdo a la última fila con datos que contenga la columna del costado E9. Ejemplo: Celda D8 dato a copiar: 01, Celda D9 dato a pegar: 01, Celda D10 dato a pegar: 02, Celda D11 dato a pegar: 03, Celda D12 dato a pegar: 04 y asi sucesivamente Gracias por su respuesta. Bendiciones
Hola Florencio. Puedes usar algo parecido a esto, cumple la función copiar y pegar sin usar el portapapeles. Sub test() Dim i As Long, counter As Long Dim wb As Workbook, ws As Worksheet i = 0 counter = Range("E" & Rows.Count).End(xlUp).Row Range("D9:D" & counter + 1).Value = Range("D8:D" & counter).Value End Sub Recuerda que es buena practica definir en que libro y hoja trabajas, con las variables wb y ws puedes hacerlo. Si tienes más dudas, escribeme a svallejo@excecute.com y lo checamos :D
Hola, muy buena info, una pregunta: y como sería si entre esos datos existen celdas vacías, que hubieran dos rangos de datos divido por las celdas en blanco que te comento y que a la hora de impresión se unas sin mostrar claro las vacías. Gracias 👍🏼
Excelente video.
Gracias Fredy! 😁
Excelente, consulta en caso de que quiera hacer rangos discontinuos como seria el proceso. Ejemplo la columna A y C.
Deberías de programar la lógica para el cambio de columna.
Ya sea usando un bucle que haga los saltos de columna o programando directo las columnas que quieres que se haga
Buenos días mi estimado, le acabo de enviar el archivo a su correo. Gracias de antemano por su valiosa ayuda. Bendiciones
Hola. Ya te contesté de regreso. Saludos!
Hola Sebastian, muchas gracias por tus excelentes aportes, estoy aprendiendo demasiado contigo, power automate ha sido espectacular, pero tengo una consulta he estado tratando de crear una tabla despues de seleccionar el rango pero por mas que intento no hayo la manera, ¿qué metodo podría usar?
hola.
Para crear una tabla en vba puedes usar esto.
Set src = Range("B5:B10")
Set ws = ActiveSheet
ws.ListObjects.Add( SourceType:=xlSrcRange, Source:=src, _
xlListObjectHasHeaders:=xlYes, tablestyleName:="TableStyleMedium28").Name = "TuTabla"
Muy buen video, solo una pregunta si no quiero seleccionar los títulos el único método sería el 5 ?
¡Hola Jordan!
Cualquiera de estos sirve, solo en lugar de seleccionar como celda de inicio tu encabezado, usa la celda siguiente.
P.E.
Si tu tabla tiene los encabezados en A1, usas tu Range en A2.
Saludos!
Excelente explicación claro y conciso. ¿Mi estimado favor me podría ayudar con una macro?
Hice una macro con la grabadora para colocar datos (Importes numéricos) en la columna I empezando desde la celda I12 hacia abajo al darle clip en un botón GENERAR VENTAS aleatorias, pero resulta que el rango está fijo. Quisiera una macro que genere los importes numéricos en un rango variable, ya que el rango puede aumentar o disminuir dependiendo de la cantidad de lineas que quisiera generar. Le envió la macro que hice. GRACIAS por su respuesta.
Sub Macro1()
'
' Macro1 Macro
Range("I12").Select
ActiveCell.FormulaR1C1 = "=RANDBETWEEN(R7C6,R7C8)"
Range("I12").Select
Selection.AutoFill Destination:=Range("I12:I131"), Type:=xlFillDefault
Range("I12:I131").Select
ActiveWindow.SmallScroll Down:=-114
Range("I12").Select
hola.
Usa lo explicado en este video, ya sea que quieras que el rango crezca desde la celda I12 o que necesites hacer variables los valores de la funcion randbetween
Excelente video, y si el rango varía entre 2 títulos distintos de una hoja de Excel, por ejemplo copiar el rango intermedio entre "Título 1" y "Título 2" para que sea inteligente la búsqueda del rango?. Gracias
Hola!
Puedes usar la función find para encontrar las dos palabras y guardar cada una en una varíable. Checate este link de cómo usar find docs.microsoft.com/en-us/office/vba/api/excel.range.find
Y este otro para unirlos y crear tu rango dinámico
docs.microsoft.com/en-us/office/vba/api/excel.application.union
Hola estimado, tengo una duda, necesito crear un rango variable en filas a partir de una celda fija, ejemplo me ubico en K2 y hay datos (variables en nro de filas) en la columna K, entonces seleccionar A18 a K25 donde tendría los datos a modo de ejemplo, ¿existe alguna forma de hacer eso?
Hola!
Ayudame a ver si entendí bien.
1. Estas en tu hoja de cálculo, seleccionas una celda (K2)
2. Corres la macro ahí.
3. La macro debe encontrar cual es la última celda con valores de la columna K y sacar el rango de A18 (fija) a donde sea (K25 en tu ejemplo).
Entendi bien? O como buscas que se localicen los dos rangos.
Saludos!
@@ExcelCute necesito crear una macro que automatice un orden personalizado de 3 columnas de un total de 17, el problema es que deben ser rangos de filas distintos. Y claro al crear una macro las selecciones quedan fijas, no variables. El segundo pero, es que las filas dependen de los datos en la columna K, y esos datos no necesariamente inician en K1, pueden ser K10 a K20 y esos datos son los que mandan la cantidad de filas seleccionadas a las cuales se les aplicará el orden personalizado según las columnas, es un poco complejo mi problema 😅😓
@@ExcelCute la forma manual de como lo consigo es la siguiente, filtro la columna K y le quito las celdas vacías, y hago el filtro personalizado de las columnas E, B y C, y así continuó con las demás columnas, L M N O P. Aplicando el mismo filtro personalizado a los datos resultantes de cada filtro
1. En cuanto a que los rangos queden fijos y no variables, probaste alguno de los métodos descritos en el video? Justo sirven para eso😁 .
2. De que depende donde inicien? Si logras resumir esa función lógica a nivel programación se puede resolver tu problema.
3. Cuando dices "quitar vacias" es eliminar? Porque entonces te serviría la combinación de xlUp+For. Para después programar los rangos restantes.
Si me puedes mandar un ejemplo de archivo a svallejo@excelcute.com igual te puedo ayudar mejor.
@@ExcelCute si, estuve probando los ejemplos del video, pero solo me sirvieron para una parte de la tabla, muchas gracias estimado, le acabo de enviar un archivo de ejemplo a su correo.
Saludos mi estimado. Use la macro que me envío, y el dato de la celda D8 solo pega a la celda D9 y no pega a los demas celdas de abajo, e inclusive borré todos los datos que están desde la columna E9 hacia abajo Y solo pega a la celda D9. Gracias por su ayuda.
Hola Florencio.
Creo entonces que no entendí tu problema claramente. Igual falta definir términos entonces.
- Si vas a "pegar" el dato que está arriba para cada seriación de celdas entonces esto te sirve. Esto asume que ya existen valores en las celdas y lo único que hace es recorrer las celdas hacia abajo.
- Si requieres realizar una serie de números iniciando desde un valor que se encuentre en la celda D9, entonces es otra cosa diferente.
Si quieres, mándame tu ejemplo de lo que necesitas a svallejo@excelcute.com y lo revisamos.
Saludos.
Hola, buen vídeo y en el ejemplo del mismo, cómo se podría hacer una macro, que autorrellene el mismo valor de "B1" con copiar y pegar hasta "B10", y luego que el valor de "B12" me lo copie y pegue a "B20", pero el tema está en que esa celda "B10", la próxima vez que lo descargue puede estar en "B9", por dar un ejemplo ¿Se puede copiar y pegar una celda, y que autorrellene con rangos dinámicos?. Saludos
Hola Boris.
Primero tendrias que definir una condición para saber en donde debe detenerse, para despues usar un loop con cualquiera de los métodos descritos aquí.
Si gustas mandame un ejemplo a svallejo@excelcute.com y lo revisamos a detalle.
Saludos.
Solucionado!
Gracias Sebastián por la ayuda!
Saludos estimado
Hola Sebastián, tengo una duda. Yo deseo pegar un rango de datos de un libro a otro, pero al libro en el que deseo pegar la información se le van añadiendo datos cada día. ¿Cómo puedo hacer un "pegado dinámico" por así decirlo? Gracias por el video y la explicación clara.
¡Hola Graciela!
Si actualmente usas algo como
sheets(1).Range("A2").copy
sheets(2).Range("A2").Pastespecial
Podrías usar la técnica del video end(xldown).offset(1,0) para llegar hasta abajo del rango móvil de tu libro 2.
Modificarías tu código así:
sheets(1).Range("A2").copy
sheets(2).Range("A1").end(xlDown).offset(1,0).PasteSpecial
También podría usar algo así:
sheets(1).Range("A2").copy
sheets(2).Range("A" & Rows.Count).end(xlUp).offset(1,0).PasteSpecial
Si tienes más dudas, escribeme a svallejo@excelcute.com y lo platicamos más a detalle.
@@ExcelCute Muchísimas gracias! Me fue super útil :)
No funciono el código de la prueba5, gracias de todas maneras.
Hola.
Como lo estas usando?
Saludos!
Gracias por compartir sus conocimientos. Favor me podría ayudar con una macro? Quiero copiar y pegar un dato de una celda anterior D8 hacia las celdas hacia abajo desde la celda D9, D10, D11,.......de la misma columna D, Pero que se pegue de acuerdo a la última fila con datos que contenga la columna del costado E9. Ejemplo: Celda D8 dato a copiar: 01, Celda D9 dato a pegar: 01, Celda D10 dato a pegar: 02, Celda D11 dato a pegar: 03, Celda D12 dato a pegar: 04 y asi sucesivamente Gracias por su respuesta. Bendiciones
Hola Florencio.
Puedes usar algo parecido a esto, cumple la función copiar y pegar sin usar el portapapeles.
Sub test()
Dim i As Long, counter As Long
Dim wb As Workbook, ws As Worksheet
i = 0
counter = Range("E" & Rows.Count).End(xlUp).Row
Range("D9:D" & counter + 1).Value = Range("D8:D" & counter).Value
End Sub
Recuerda que es buena practica definir en que libro y hoja trabajas, con las variables wb y ws puedes hacerlo.
Si tienes más dudas, escribeme a svallejo@excecute.com y lo checamos :D
Hola, muy buena info, una pregunta: y como sería si entre esos datos existen celdas vacías, que hubieran dos rangos de datos divido por las celdas en blanco que te comento y que a la hora de impresión se unas sin mostrar claro las vacías. Gracias 👍🏼
hola.
Con el metodo de arriba hacia abajo esto lo puedes hacer sin problema.
El ocultar las vacias solo es un for y revision del valor.
Saludos.