Unir dos columnas para crear una lista de datos

Unir dos columnas para crear una lista de datos

Actualmente tengo dos columnas que deben compararse. Col A, Hoja 1 y Col A, Hoja 2.

La hoja 1 contiene:

A      B       C
5000   Apples  WI
6182   Oranges NY
7271   Grapes  MN
2293   Peanuts FL

La hoja 2 contiene:

A
4032
5233
7271
2293

Debería recibir resultados como...

7271   Grapes  MN
2293   Peanuts FL

Necesito mostrar solo los resultados que contienen el mismo número que la Hoja 2. ¿Existe una manera mejor que cargar la Hoja 2 en una matriz y compararla con cada celda de la Hoja 1?

    'For i = 1 to Sheet1LastRow

    Sheet2Row = Range("A" & Rows.Count).End(xlUp).Row
    Sheet2Array = Range("A2:A" & Sheet2LastRow).Value
            For i = LBound(Sheet2Array, 1) To UBound(Sheet2Array, 1)

    'if cell = Sheet2Array(i, 1)
     '....
    'End if

    Next i

   'Next Cell sheet 1

Respuesta1

Esta es la función principal de =VLOOKUP().

La sintaxis es:

=VLOOKUP(
         compare this cell, 
         to the cells in the leftmost column of this range,
         returning the corresponding value from this column index,
         true/false for range lookup (just leave this false if you aren't sure)
 )

En la hoja 2, en la celda B1 colocarías =VLOOKUP(A1,Sheet1!A:B,2,False)y en C1 colocarías=VLOOKUP(A1,Sheet1!A:C,3,False)

Esta función funciona tanto entre hojas de trabajo como entre libros (pero deberá habilitar enlaces y estar atento a los cambios en ambos libros). No se requiere VBA, esta es una función en línea simple.

Ampliando esto, probablemente obtendrá #N/Aerrores para valores que no existen en su tabla fuente. Envuelva la fórmula =IFERROR( your vlookup() function , "" )para reemplazar cualquier error con una celda en blanco.

Respuesta2

A partir de su pregunta y los datos de muestra, es evidente que lo que está buscando como resultado es una columna con datos coincidentes en un bloque contiguo de celdas sin espacios en blanco ni errores en el medio.

Si desea utilizar un enfoque de fórmula, puede lograrlo utilizando funciones ÍNDICE y COINCIDENCIA ligeramente complejas en una fórmula de matriz. Una vez que tenga los datos coincidentes en celdas contiguas de una columna, simplemente aplique BUSCARV para recuperar el resto de las dos columnas de su tabla maestra en la Hoja1.

Así es cómo. A continuación se muestran dos capturas de pantalla de Sheet1 y Sheet2.

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

La Hoja1 tiene su tabla maestra en las Columnas A, B y C, la Hoja2 tiene su lista para que coincida con la Columna A de la Hoja1

Ahora en la Hoja2, digamos en la Celda C1, coloque la siguiente fórmula de matriz

{=INDEX(Sheet1!$A$1:$A$4,SMALL(IF(ISERROR(MATCH(Sheet2!$A$1:$A$4,Sheet1!$A$1:$A$4,0)),"",MATCH(Sheet2!$A$1:$A$4,Sheet1!$A$1:$A$4,0)),ROW(1:1)))}

Coloque esta fórmula sin las llaves y desde la barra de fórmulas presione CTRL+MAYÚS+ENTRAR para crear una fórmula matricial y arrástrela hacia abajo hasta que obtenga un error en las celdas o la longitud de la lista que debe coincidir. Ahora todas las filas encima de las celdas de error tienen las celdas coincidentes de la columna A de la Hoja1.

Simplemente borre las celdas de error y tendrá la lista en un bloque de celdas contiguo.

Ahora en D1 ingrese una fórmula BUSCARV relativamente simple para buscar la siguiente columna coincidente de la Hoja1

=VLOOKUP(C1,Sheet1!$A$1:$C$4,2,FALSE)

Y en E1 pon la formula

=VLOOKUP(C1,Sheet1!$A$1:$C$4,3,FALSE)

y arrastre ambos hacia abajo. Tienes tu lista como deseas.

Puede utilizar la opción Evaluar fórmula integrada de Excel para evaluar la combinación INDEX MATCH y tener una idea de cómo funciona. Crea una matriz de números de fila coincidentes y selecciona el primero, luego el segundo y luego el tercer número más pequeño a medida que arrastra la fórmula hacia abajo.

Dos limitaciones aquí son que los datos se devolverán en el orden en que existen en la tabla maestra y no como están en la tabla "para coincidir" y, en caso de que tenga más de una celda coincidente, se devolverá la primera.

información relacionada