¿Cómo puedo encontrar valores duplicados en una columna delimitando los resultados por rangos en una columna diferente?

¿Cómo puedo encontrar valores duplicados en una columna delimitando los resultados por rangos en una columna diferente?
     A          B            C
1  RANGES     VALUES   FORMULA NEEDED  
2    1          x           yes
3    1          x           yes
4    2          x           no
5    3                      no
6    3          y           yes
7    3          y           yes
8    4          x           no
9    5          z           no
10   5          y           no

Entonces, quiero identificar duplicados en VALORES, delimitando resultados por valores en RANGOS. Me gustaría que el resultado fuera como el de la columna FÓRMULA NECESARIA.

Lo que necesito son los valores duplicados de la columna VALORES. Más específicamente, necesito ver si lo que encuentro en la columna VALORES es un duplicado, usando (esto es importante) el rango de duplicados de la columna RANGOS como delimitador. Espero que tenga sentido.

Entonces, si: - x está duplicado dentro de las filas numeradas 1, esto es un sí. - y está duplicado dentro de las filas numeradas 3, incluso con valores en blanco o valores adicionales como x, esto sigue siendo un sí.

Este es mi intento fallido:

=IF(AND(A2=A1,B2=B1),"yes","no")

Respuesta1

Necesitas usar VBA.

Entonces, lo que debes hacer es leer los valores de la columna A + B en una matriz.
Digamos que tenemos unformaciónnombrado C, entonces C(1) será A2 + B2 = "1x"; C(2) será A3 + B3 = "1x"; C(3): A4 + B4 = "2x"; etc.
Haces un bucle for para que esto lea todos los valores que tienes que C(i).

Después de tener esto, simplemente busque en Google. excel vba how to find duplicate values in an array
Estoy seguro de que habrá muchas soluciones para esto.

Después de obtener esto, probablemente obtendrá una matriz que almacena valores en otra matriz o en la misma, por ejemplo, en booleanos (verdadero/falso).

Así que simplemente ejecuta otro bucle for en él, que se verá así:
for i = 1 to NumberOfRows if C(i) = true then Cells(i, "C").Value = "true" next i

Por supuesto que hay más soluciones posibles, pero así es como yo lo haría.
Si tienes preguntas, ¡no dudes en preguntar!

información relacionada