Generar 3 números aleatorios únicos en Microsoft Excel
Si desea generar una lista de números aleatorios únicos, puede usar las funciones RANDBETWEEN & VBA RND. En este artículo, generaremos 3 números únicos de la lista proporcionada .
Puede encontrar la pregunta original http://www.excelforum.com/excel-programming-vba-macros/1093315-vba-for-do- while-loop.html[aquí]
Pregunta: Quiero que una macro genere una lista de 3 números aleatorios a partir de una lista de números guardados en la columna A. Existe una condición por la que se debe cuidar el código VBA. La condición es que existen 3 números en la columna B, por lo tanto, la macro necesita crear una lista de números que no han ocurrido una vez en la columna B. De esta manera, podemos tener una lista de números únicos en las columnas B y C. |||| A continuación se muestra la instantánea del ejemplo que tenemos:
===
Para obtener la lista de números aleatorios únicos; debemos seguir los pasos a continuación para iniciar el editor de VB. Haga clic en la pestaña Desarrollador. Desde el grupo Código, seleccione Visual Basic
-
Copie el siguiente código en el módulo estándar
Para ejecutar la macro, podemos presionar la tecla F5 desde el teclado si está activo en la pantalla del Editor de Visual Basic. Otra forma de ejecutar la macro es usando la tecla «ALT + F8»; seleccione la macro y haga clic en el botón Ejecutar
Sub RandomNumbers() Dim ws As Worksheet Dim ar As Variant Dim RandomNum As Long Dim i As Integer Dim myVal As Long Randomize Set ws = ThisWorkbook.Sheets("Numbers") With ws ar = .Range("A" & Rows.Count).End(xlUp).Row .Range("C1:C3").ClearContents For i = 1 To 3 Do RandomNum = Int((1 - ar + 1) * Rnd + ar) myVal = .Range("A" & RandomNum).Value Loop Until Range("B1:C24").Find(what:=myVal, lookat:=xlWhole) Is Nothing .Range("C" & i).Value = myVal Next i End With End Sub
-
A medida que ejecutamos el código VBA, la lista única de números se generará automáticamente
Explicación del código:
En el código anterior, usaremos la función RND & INT junto con For loop & Do loop para obtener el resultado.
-
Declaramos Dim ws como Hoja de trabajo; el propósito de declarar ws como Hoja de trabajo es que solo queremos que el código se ejecute en una hoja de trabajo específica, es decir,
Números en nuestro ejemplo Dim RandomNum As Long: esto guardará los números únicos Set ws = ThisWorkbook.Sheets («Numbers»): esta línea asegurará que el código se ejecute solo en la hoja Numbers La siguiente línea de código usará la instrucción With ar = .Range («A» & Rows.Count) .End (xlUp) .Row: esta línea guardará la última celda en la columna A (24 en nuestro ejemplo)
Si te gustaron nuestros blogs, compártelo con tus amigos en Facebook. Y también puedes seguirnos en Twitter y Facebook.
Nos encantaría saber de usted, háganos saber cómo podemos mejorar, complementar o innovar nuestro trabajo y hacerlo mejor para usted. Escríbanos a [email protected]