Busqueda con más de una coincidencia

rguez

Board Regular
Joined
Jul 24, 2002
Messages
78
Saludos

Necesito hacer un búsqueda que tiene más de un resultado, me explico con un ejemplo:

2 AAA1
3 AAA5
1 AB45
10 AJP1
3 POK5
4 ABC2

deseo realizar un busqueda a través de la
primera columna que me entregue:

busca(=3) .... y resulte...

AAA5
POK5

Necesita hacerlo SIN MACROS.

He leido un post anterior, que de hecho
tenía unos ejemplos con formulas matriciales
y un link... pero no me resulta :sad:

Espero vuestras luces :wink:

FELICES FIESTAS :eek:
 

Excel Facts

Easy bullets in Excel
If you have a numeric keypad, press Alt+7 on numeric keypad to type a bullet in Excel.
Otra opción, que me parece más "sostenible" en el tiempo, es utilizar un Filtro avanzado, y copiando el resultado a otro lado de la hoja (O del libro)
 
Upvote 0
Efectivamente, es necesaria una
solición "sostenible". Pues lo que
te indiqué es un ejemplo y la tabla
original tiene -bastantes- más registos.

El tema del filtro avanzado ya lo tenia
considerado. El problema es que si cambia
el criterio hay que volver a aplicar el
filtro avanzado, cosa que en mi caso
debería ser automático y transparente al
usuario.

¿No existe una función de busqueda que
de como resultado una matriz de coincidencias
y no un solo valor?
 
Upvote 0
Básicamente, no.

You creé una MVLOOKUP (Multiple VLOOKUP o BUSCARV) en VBA, pero, como funciona con VBA, utiliza macros.

Adicionalmente, las fórmulas no se pueden "expandir" automáticamente, para que llenen más celdas, eso toca hacerlo con anticipación, por eso en el ejemplo la fórmula se arrastra hasta la 5 fila.
 
Upvote 0
Juan Pablo: ¿podrías decirme el codigo con el que creaste esta funcion MVLOOKUP ?
Mil Gracias nuevamente por que la verdad como molestamos.
Saludos
 
Upvote 0
Este es el código... hace rato que no lo utilizo... utiliza únicamente coincidencias EXACTAS (El FALSO en el BUSCARV normalito), pero tiene un parámetro adicional, ValueIfError, que es opcional, el "famoso" #N/A cuando BUSCARV no encuentra una coincidencia.

<font face=Courier New>
<SPAN style="color:#00007F">Function</SPAN> MVLOOKUP(lookup_value <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Variant</SPAN>, table_array <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Variant</SPAN>, col_index_num <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Integer</SPAN>, <SPAN style="color:#00007F">Optional</SPAN> ValueIfError <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Variant</SPAN> = CVErr(2042)) <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Variant</SPAN>
<SPAN style="color:#007F00">'****************************************</SPAN>
<SPAN style="color:#007F00">'*  Procedure : MVLOOKUP</SPAN>
<SPAN style="color:#007F00">'*  DateTime  : Sep, 09 2002 16:54</SPAN>
<SPAN style="color:#007F00">'*  Author    : Juan Pablo González</SPAN>
<SPAN style="color:#007F00">'*  Purpose   : Multiple VLOOKUP.  Return an array of all exact matches.</SPAN>
<SPAN style="color:#007F00">'*  Parameters: Same as ELOOKUP, without range_lookup.  Only works with exact matches</SPAN>
<SPAN style="color:#007F00">'****************************************</SPAN>

    <SPAN style="color:#00007F">Dim</SPAN> Result() <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Variant</SPAN>
    <SPAN style="color:#00007F">Dim</SPAN> i <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Integer</SPAN>
    <SPAN style="color:#00007F">Dim</SPAN> Counter <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Long</SPAN>

    <SPAN style="color:#007F00">'If IsMissing(ValueIfError) Then ValueIfError = CVErr(2042)</SPAN>
    <SPAN style="color:#00007F">If</SPAN> IsObject(table_array) <SPAN style="color:#00007F">Then</SPAN>
        <SPAN style="color:#00007F">Set</SPAN> table_array = Intersect(table_array, table_array.Parent.UsedRange)
        table_array = table_array
    <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN>
    
    <SPAN style="color:#00007F">On</SPAN> <SPAN style="color:#00007F">Error</SPAN> <SPAN style="color:#00007F">Resume</SPAN> <SPAN style="color:#00007F">Next</SPAN>
    <SPAN style="color:#00007F">Do</SPAN>
        i = i + 1
        Counter = <SPAN style="color:#00007F">UBound</SPAN>(table_array, i)
    <SPAN style="color:#00007F">Loop</SPAN> <SPAN style="color:#00007F">Until</SPAN> Err.Number <> 0

    <SPAN style="color:#00007F">If</SPAN> i < col_index_num <SPAN style="color:#00007F">Then</SPAN> MVLOOKUP = CVErr(2036): <SPAN style="color:#00007F">Exit</SPAN> <SPAN style="color:#00007F">Function</SPAN>
    Counter = 0

    <SPAN style="color:#00007F">For</SPAN> i = <SPAN style="color:#00007F">LBound</SPAN>(table_array, 1) <SPAN style="color:#00007F">To</SPAN> <SPAN style="color:#00007F">UBound</SPAN>(table_array, 1)
        <SPAN style="color:#00007F">If</SPAN> table_array(i, 1) = lookup_value <SPAN style="color:#00007F">Then</SPAN>
            Counter = Counter + 1
            <SPAN style="color:#00007F">ReDim</SPAN> <SPAN style="color:#00007F">Preserve</SPAN> Result(1 <SPAN style="color:#00007F">To</SPAN> Counter)
            Result(Counter) = table_array(i, col_index_num)
        <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN>
    <SPAN style="color:#00007F">Next</SPAN> i
    <SPAN style="color:#00007F">On</SPAN> <SPAN style="color:#00007F">Error</SPAN> <SPAN style="color:#00007F">GoTo</SPAN> 0
    <SPAN style="color:#00007F">If</SPAN> Counter = 0 <SPAN style="color:#00007F">Then</SPAN>
        MVLOOKUP = CVErr(2042)  <SPAN style="color:#007F00">'xlErrNA</SPAN>
    <SPAN style="color:#00007F">Else</SPAN>
        MVLOOKUP = Application.Transpose(Result)
    <SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">If</SPAN>
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Function</SPAN>
</FONT>
 
Upvote 0
FUNCIONA A LAS MIL MARAVILLAS.
¿COMO LE PODRIA HACER PARA VER ESTA MATRIZ SIN TENER QUE OPRIMIR F2?
MIL GRACIAS Y SALUDOS
 
Upvote 0
Para ver todos los resultados de una vez ? ingresar la fórmula en varias celdas y presionar Control Shift Enter, para que sea una fórmula matricial... ese es el único "detallito", que toca manualmente expandir las fórmlas porque ellas no puede 'solitas' !
 
Upvote 0

Forum statistics

Threads
1,223,936
Messages
6,175,507
Members
452,650
Latest member
Tinfish

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top