Excel macros 🎀 5 Formas de crear rangos dinámicos en VBA

Поделиться
HTML-код
  • Опубликовано: 15 дек 2024

Комментарии • 35

  • @Xfredy2390
    @Xfredy2390 3 года назад +1

    Excelente video.

  • @Claudio_Rengifo
    @Claudio_Rengifo 2 месяца назад

    Excelente, consulta en caso de que quiera hacer rangos discontinuos como seria el proceso. Ejemplo la columna A y C.

    • @ExcelCute
      @ExcelCute  2 месяца назад

      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

  • @florenciomalquirodriguez4740
    @florenciomalquirodriguez4740 3 года назад

    Buenos días mi estimado, le acabo de enviar el archivo a su correo. Gracias de antemano por su valiosa ayuda. Bendiciones

    • @ExcelCute
      @ExcelCute  3 года назад

      Hola. Ya te contesté de regreso. Saludos!

  • @Jlarcila24
    @Jlarcila24 Год назад

    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?

    • @ExcelCute
      @ExcelCute  Год назад

      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"

  • @joritofire
    @joritofire 3 года назад +1

    Muy buen video, solo una pregunta si no quiero seleccionar los títulos el único método sería el 5 ?

    • @ExcelCute
      @ExcelCute  3 года назад

      ¡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!

  • @florenciomalquirodriguez4740
    @florenciomalquirodriguez4740 5 месяцев назад

    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

    • @ExcelCute
      @ExcelCute  5 месяцев назад

      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

  • @fernandoosorio8893
    @fernandoosorio8893 3 года назад

    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

    • @ExcelCute
      @ExcelCute  3 года назад

      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

  • @michaelpereira7978
    @michaelpereira7978 3 года назад

    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?

    • @ExcelCute
      @ExcelCute  3 года назад

      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!

    • @michaelpereira7978
      @michaelpereira7978 3 года назад

      @@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 😅😓

    • @michaelpereira7978
      @michaelpereira7978 3 года назад

      @@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

    • @ExcelCute
      @ExcelCute  3 года назад

      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.

    • @michaelpereira7978
      @michaelpereira7978 3 года назад

      @@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.

  • @florenciomalquirodriguez4740
    @florenciomalquirodriguez4740 3 года назад

    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.

    • @ExcelCute
      @ExcelCute  3 года назад

      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.

  • @borisguillermotorres9846
    @borisguillermotorres9846 3 года назад +2

    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

    • @ExcelCute
      @ExcelCute  3 года назад +1

      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.

    • @borisguillermotorres9846
      @borisguillermotorres9846 3 года назад

      Solucionado!
      Gracias Sebastián por la ayuda!
      Saludos estimado

  • @gracielasaca8187
    @gracielasaca8187 3 года назад

    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.

    • @ExcelCute
      @ExcelCute  3 года назад +1

      ¡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.

    • @gracielasaca8187
      @gracielasaca8187 3 года назад +1

      @@ExcelCute Muchísimas gracias! Me fue super útil :)

  • @flp_hal1219
    @flp_hal1219 3 года назад

    No funciono el código de la prueba5, gracias de todas maneras.

    • @ExcelCute
      @ExcelCute  3 года назад

      Hola.
      Como lo estas usando?
      Saludos!

  • @florenciomalquirodriguez4740
    @florenciomalquirodriguez4740 3 года назад

    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

    • @ExcelCute
      @ExcelCute  3 года назад

      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

  • @chige6220
    @chige6220 4 месяца назад

    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 👍🏼

    • @ExcelCute
      @ExcelCute  4 месяца назад +1

      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.