Hoja1
Disponemos de una lista de ciudades, son en total 735 ciudades, y deseamos elegir aleatoriamente unas cuantas de ellas. La elección se realizará por dos métodos, ambos con la posibilidad de que salgan ciudades repetidas. Si obtenemos ciudades repetidas las detectaremos con Formato condicional.Los métodos empleados son los siguientes.
- Método 1: con la función INDICE
- Método 2: con la función DESREF
Hoja2
Disponemos de una lista de ciudades en la columna A y de ellas deseamos elegir aleatoriamente y sin repetición un cierto número de ellas. Vamos a resolver este caso con la ayuda de una macro de Excel. Sub EligeNombresAleatorios()
Borra
Dim numElegidas As Integer
Dim numNombres As Long
Dim numAlea As Integer
Dim Nombres() As String
Dim i As Byte, j As Byte
Dim Fila As Long
Dim Repe As Boolean 'para ver si está repetida la ciudad seleccionada
numElegidas = Range("C3").Value
Fila = 6
ReDim Nombres(1 To numElegidas)
numNombres = Application.CountA(Range("A:A")) - 1
For i = 1 To numElegidas
Do
Repe = False 'inicialmente supondremos que no está repetida la ciudad
numAlea = Application.RandBetween(1, numNombres)
'veamos si la ciudad seleccionada ya ha sido elegida
For j = LBound(Nombres) To UBound(Nombres)
If Nombres(j) = Cells(numAlea + 1, 1).Value Then Repe = True: Exit For
Next j
Loop While Repe
Nombres(i) = Cells(numAlea + 1, 1).Value ' Assign random name to the array
Next i
'Escribe las ciudades elegidas
For j = LBound(Nombres) To UBound(Nombres)
Cells(Fila, 3) = Nombres(j)
Fila = Fila + 1
Next j
End Sub
Sub Borra()
Range("C6").Select
Range(Selection, Selection.End(xlDown)).ClearContents
Range("C3").Select
End Sub
Y en la Hoja2 tenemos el siguiente código.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$C$3" Then
Call EligeNombresAleatorios
End If
End Sub
Estoy comenzando a interpretar su código, pero no entiendo como podría reflejar en otra columna países que no se repitan en la primer selección.
ResponderEliminarquiero poner otros datos en D6, pero al tratar de colocar dichos datos son los mismos y busco que sean otros aleatorios. me podría apoyar con algún método o código para ello.
Lo que estoy tratando de realizar es generar a partir de una lista de X numero de alumnos, aleatoria mente todos vallan 2 veces por semana (de lunes a jueves)
ResponderEliminarGracias esta muy completo el archivo lo que necesitaba,. excelente
ResponderEliminarEl codigo es funcional, aunque depronto hay que hacerle una mejora, si se le coloca el numero cero deberia borrar, y sale error cuando el numero no es mayor que cero.
ResponderEliminar