Actualizar fórmulas especificas por vba y no toda la hoja

He tratado de buscar la solución por muchas páginas de consultas y no logro dar con una solución.. Antes que nada quiero decir que mis conocimientos de excel son empíricos y he ido aprendiendo de acuerdo a lo que he avanzado, y mi conocimiento para VBA es nulo.. Pero creo que lo que necesito hacer se debe hacer por medio de este y espero sea algo sencillo, ahora si a lo que vinimos:

Tengo una hoja de excel con una tabla de datos. Donde de un rango de 15 números, una fórmula me extrae 6 números al azar y para que no repitieran combine las fórmulas "aleatorio()" con "indice y jerarquía".

La tabla la tengo en formato de fórmulas manual ya que en automático cada vez que pulso una tecla se actualizan los valores extraídos al azar y así no me sirve, por ello tengo la hoja o el libro en fórmula manual. Hasta aquí todo bien. Pero a medida que se va llenando el rango de los 15 números. Para que extraiga los 6 números que necesito toca pulsar F9 y todos los resultados anteriores se modifican.

Lo que quiero es que por medio de un vba si no es muy complicado, se actualicen de forma "automatica" solo esas 6 fórmulas de esa fila y no me modifique toda la hoja. He encontrado algunas plantillas para vba pero no me funcionan. Así que recurro a los expertos, como es de mi costumbre adjunto pantallazo para ser más especifico y me puedan colaborar con más facilidad.

Mil y mil gracias por todas y cada una de las ayudas que me han prestado en este medio. Bendiciones :)

2 respuestas

Respuesta
1

Bien, como vamos a poner los 6 números aleatorios utilizando una macro, entonces ya no es necesario las fórmulas que tienes en las columnas A a F, tampoco serán necesarias las fórmulas de las columnas AG a AL

Pon la siguiente macro en un botón.

Sub aleatorio()
'Por Dante Amor
    Dim num As New Collection
    On Error Resume Next
    ini = Columns("Q").Column       'columna inicial
    fin = Columns("AE").Column      'columna final
    col = Columns("AG").Column      'columna resultados
    fila = ActiveCell.Row
    '
    Do While num.Count < 6
        columna = WorksheetFunction.RandBetween(ini, fin)
        valor = Cells(fila, columna).Value
        num.Add Item:=valor, Key:=CStr(valor)
    Loop
    For i = 1 To num.Count
        Cells(fila, col).Value = num(i)
        col = col + 1
    Next
    MsgBox "Fin"
End Sub

Sigue las Instrucciones para un botón y ejecutar la macro

  1. Abre tu libro de Excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. En el menú elige Insertar / Módulo
  4. En el panel del lado derecho copia la macro
  5. Ahora para crear un botón, puedes hacer lo siguiente:
  6. Inserta una imagen en tu libro, elige del menú Insertar / Imagen / Autoformas
  7. Elige una imagen y con el Mouse, dentro de tu hoja, presiona click y arrastra el Mouse para hacer grande la imagen.
  8. Una vez que insertaste la imagen en tu hoja, dale click derecho dentro de la imagen y selecciona: Tamaño y Propiedades. En la ventana que se abre selecciona la pestaña: Propiedades. Desmarca la opción “Imprimir Objeto”. Presiona “Cerrar”
  9. Vuelve a presionar click derecho dentro de la imagen y ahora selecciona: Asignar macro. Selecciona: aleatorio
  10. Aceptar.
  11. Para ejecutarla dale click a la imagen.

Funciona de la siguiente manera, coloca el cursor en la línea de donde quieres obtener los números aleatorios. Por ejemplo, pon el cursor en la celda Q5, presiona el botón de la macro; en automático la macro te pondrá los 6 números aleatorios en las celdas AG6 a AL6.

Si quieres cambiar de números aleatorios, puedes volver a presionar el botón y únicamente cambiará los números de la fila donde tengas el cursos.


'.[Sal u dos. Dante Amor. No olvides valorar la respuesta. 
'.[Avísame cualquier duda

Dante buen día.

Te cuento que por encima por que carecía de tiempo vi tu macro y me funciono a la perfección. Te agradezco mucho por tomarte tiempo y ayudarme.. Quiero agregar otra cosita a la macro. En el ejemplo que subí en el pantallazo siempre están llenos el rango de Q:AE, pero realmente cambian y aveces esta lleno y aveces solo hay 2,10,6, etc.. ya que esta tabla se llena de acuerdo a otra tabla anterior, y también los números a extraer al azar no siempre son 6, son de acuerdo a los números que hay en el rango de Q:AE. Osea si en ese rango hay 15 números, serian 6 pero si en el rango solo hay 10 pues serian menos,, no lo mencione porque como lo tenia con fórmulas ya lo tenia aregaldo, pero la macro como elimino las fórmulas cambio todo, y ahora me va a tocar pedirte el favor completo porque como te dije anteriormente de VBA no tengo idea.. de fórmulas más o menos, pero de macros si nulo.

Voy a subir un pantallazo con el ejemplo tal cual como lo necesito, pero propongo que a la macro se le puede indicar cuantos números al azar extraer indicándole en una celda ese valor.

En el pantallazo tratare de ser más explicito y mil gracias por tomarte tiempo para ayudarme. Como te dije lo tenia solucionado pero así con macros veo que es mucho más efectivo y solicito de tu ayuda para terminarlo..

Con gusto te ayudo con todas tus peticiones valora esta respuesta y crea una nueva pregunta ahí explicas con detalle lo que necesitas

Respuesta
1

Fíjate si esto sirve

https://www.programarexcel.com/2013/04/formulario-inserta-numeros-aleatorios.html 

https://youtu.be/63Fmcyf61LY

https://youtu.be/GhpxZWwLhyc

https://youtu.be/d4VgP82naPI

https://youtu.be/hZkf3KRfxqg

https://youtu.be/Cdzevs7lYrk

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas