programing

수식을 사용하여 배열 필터링(VBA 없음)

goodsources 2023. 6. 20. 21:34
반응형

수식을 사용하여 배열 필터링(VBA 없음)

단일 공식(자동 필터, VBA 또는 추가 열 없이)을 사용하여 어레이를 필터링할 수 있습니까?

예를 들어 다음과 같은 스프레드시트가 있습니다.

   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

VLOOKUP에서 이 배열의 하위 집합을 사용합니다.즉, 클래스가 "B"인 행에 대해서만 일치시키고 싶습니다.그래서 저는 다음과 같은 것을 사용할 수 있기를 희망했습니다.

=VLOOKUP(A3, FILTER_FUNC(A:C, B="B"), 3, false)

여기서 FILTER_FUNC는 조건을 충족하는 행만 포함하는 배열을 반환하는 함수 또는 식의 유형입니다.

=VLOOKUP(A2,IF(B1:B3="B",A1:C3,""),1,FALSE)

Ctrl+Shift+Enter 입장합니다.

첫 번째 "B" 값만 원하는 경우에는 이렇게 하면 되고, 더 일반적으로 만들려면 "B"의 셀 주소를 하위 주소로 지정할 수 있습니다.

=INDEX(A2:A6,SUMPRODUCT(MATCH(TRUE,(B2:B6)="B",0)),1)

두 개의 열을 기준으로 이 값을 사용하려면 일치 항목 내부에 연결하면 됩니다.

=INDEX(A2:A6,SUMPRODUCT(MATCH(TRUE,(A2:A6&B2:B6)=("3"&"B"),0)),1)

전형적인 2열 검색을 하려는 것처럼 들리네요.http://www.dailydoseofexcel.com/archives/2009/04/21/vlookup-on-two-columns/

이를 위한 수많은 솔루션 중 가장 간단한 것은 다음과 같습니다(어레이 공식이 필요하지 않음).

=SUMPRODUCT((Lookup!A:A=Param!A1)*(Lookup!B:B=Param!B1)*(Lookup!C:C))

구체적인 예를 번역하려면 다음을 사용합니다.

=SUMPRODUCT((A1:A3=A2)*(B1:B3="B")*(C1:C3))

오늘날, 오피스 365에서 엑셀은 소위 '어레이 기능'을 가지고 있습니다.filter기능은 정확히 당신이 원하는 것을 합니다.사용할 필요 없음CTRL+SHIFT+ENTER더 이상, 단순한enter충분할 것입니다.

Office 365에서는 다음을 사용하여 문제를 간단히 해결할 수 있습니다.

=VLOOKUP(A3, FILTER(A2:C6, B2:B6="B"), 3, FALSE)

언급URL : https://stackoverflow.com/questions/6497062/filter-an-array-using-a-formula-without-vba

반응형