¿Cómo comparar una celda contra un rango de celdas en el edito de VB en excel?

Estoy armando una hoja de calculo en excel que lo que hace es generar una lista de 10 nombres tomando dichos nombres de manera aleatoria de una lista más grande que tiene 20 nombres. La idea es que los nombres no se repitan en la lista, por lo tanto estoy intentando armar una macro que se mantenga actualizando la lista hasta que todos los nombre sean diferentes. Para esto estoy utilizando "Loop until". Estoy armando mi sintaxis de la siguiente manera: (ejemplo con 5 nombres)

Loop Until Range("d22") <> Range("d23") And Range("d22") <> Range("d24") And Range("d22") <> Range("d25") And Range("d22") <> Range("d26") And Range("d23") <> Range("d24") And Range("d23") <> Range("d25") And Range("d23") <> Range("d26") And Range("d24") <> Range("d25") And Range("d24") <> Range("d26") And Range("d25") <> Range("d26")

Esto compara la primera celda de la lista contra las siguientes 4 celdas y así sucesivamente, pero es demasiado tardado. Me gustaría saber si hay manera de en vez de comparar la celda individualmente contra todas las demás compararla directamente contra todo el rango de celdas, así si d22<>d22:d6 entonces dejar de actualizar la hoja de cálculo. De ser posible ¿Cuál es la sintaxis?

1 Respuesta

Respuesta
1

:)

Hola! Joaquín. El método que te muestro:

Sub Seleccionar_10()
Dim mColl As New Collection, C As Range, i%, j%
For Each C In Range("a1:a20"): mColl.Add C.Value, C.Address: Next
Do
  i = 1 + i: j = Application.RandBetween(1, mColl.Count)
  Cells(i, "d").Value = mColl(j): mColl.Remove j
Loop Until i = 10
End Sub

toma los 20 datos iniciales del rango A1:A20 y genera los 10 nombres aleatorios en el rango D1:D10...
¿Te sirve la idea?...

Hola Mario!

Gracias por la amable respuesta. Creo que hice mal mi pregunta. En generar los 10 datos aleatorios no tengo ningún problema. Eso lo estoy haciendo con la función aleatorio y buscarv de excel. Donde radica mi dificultad es en la elaboración de una macro que evalúe la lista de datos y se asegure de que los 10 valores son diferentes. Esto es, comparar el valor de cada una de las celdas que contiene un nombre contra el resto de las celdas. Lo que estoy haciendo es que la macro continúa actualizando el valor de mi función Aleatorio hasta que todos los datos sean diferentes. Esto lo logro facil si la lista es pequeña, 2 o 3 nombres diferentes, pero con una lista más grande mi instrucción condicional se vuelve enorme

Por ejemplo, en vez de generar una función que compara:

Valor de mi celda A1 <> A2 y A1 <> A3 y A1<> A4 y A1<>A5......y A1 <>A10

una función que me permita hacer A1<>A1:10

Me explico?

.

Eso es lo que hace la macro que te mostré...

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas