excel - valor - seleccionar la primera celda de un rango vba
Filtrar una matriz utilizando una fórmula(sin VBA) (3)
¿Es posible filtrar una matriz utilizando una única fórmula (sin filtro automático, VBA o columnas adicionales)?
Por ejemplo, tengo la siguiente hoja de cálculo:
A | B | C
--------------------
1| ID | Class | Value
2| 1 | A | V1
3| 1 | B | V2
4| 2 | A | V3
5| 3 | B | V4
6| 3 | B | V5
Quiero usar un subconjunto de esta matriz en VLOOKUP. Es decir, solo quiero hacer coincidir esas filas donde la clase es "B". Así que esperaba poder usar algo como lo siguiente
=VLOOKUP(A3, FILTER_FUNC(A:C, B="B"), 3, false)
donde FILTER_FUNC es algún tipo de función o expresión que devuelve una matriz que solo contiene aquellas filas que cumplen con la condición.
Esto lo hará si solo desea el primer valor "B", puede sustituir una dirección de celda por "B" si desea que sea más genérico.
=INDEX(A2:A6,SUMPRODUCT(MATCH(TRUE,(B2:B6)="B",0)),1)
Para usar esto basado en dos columnas, simplemente concatene dentro de la coincidencia:
=INDEX(A2:A6,SUMPRODUCT(MATCH(TRUE,(A2:A6&B2:B6)=("3"&"B"),0)),1)
Parece que solo estás tratando de hacer una búsqueda clásica en dos columnas. http://www.dailydoseofexcel.com/archives/2009/04/21/vlookup-on-two-columns/
Toneladas de soluciones para esto, la más simple es probablemente la siguiente (que no requiere una fórmula de matriz):
=SUMPRODUCT((Lookup!A:A=Param!A1)*(Lookup!B:B=Param!B1)*(Lookup!C:C))
Para traducir su ejemplo específico, usaría:
=SUMPRODUCT((A1:A3=A2)*(B1:B3="B")*(C1:C3))
=VLOOKUP(A2,IF(B1:B3="B",A1:C3,""),1,FALSE)
Ctrl+Shift+Enter
para entrar.