답변1
이를 수행하는 최소한 두 가지 쉬운 방법이 있습니다. 둘 다 원하는 값을 "필터링"한 다음 산술을 수행합니다.
하나는 간단하고 SUMPRODUCT()
만족스러워 보이는 것을 사용하지만 작업할 적절한 항목을 선택하기 위해 값 목록에 대한 필터링을 수행합니다. FILTER()
자격을 갖춘 행을 선택한 다음 다시 사용하여 내부 결과 FILTER()
에서 열을 선택합니다 .FILTER()
=SUMPRODUCT( FILTER( FILTER(B1:D12, B1:B12=I1), {0,1,0}), FILTER( FILTER(B1:D12, B1:B12=I1), {0,0,1}))
제시된 공식은 학생이 조회할 I1의 조회 입력 셀을 가정합니다. 물론 열의 범위는 12가 아니라 수천이 됩니다.
그러나 "THOUSANDS"로 작업하려면 주소를 범위로 변경하기만 하면 필요한 만큼 열 I을 사용할 수 있습니다. 또는 (아마도) 하나가 "수천"이라고 말할 때 "모두"를 의미하는 경우 "수천"에 있는 각 학생 이름의 단일 인스턴스 목록을 추출하기 위해 UNIQUE()
세 번째 매개변수 세트와 함께 사용할 수 있습니다. FALSE
그러나 해당 배열을 생성하더라도 I1#
전체 결과를 캡처하는 데만 사용할 수는 없는 것 같습니다. 나는 이것이 조회 범위의 길이가 다르고 UNIQUE()
.
FILTER()
실제로 포함된 행에 대한 TRUE/FALSE 결과 목록을 생성합니다. 여기서 "비결"은 해당 목록을 직접 입력하여 원하는 열을 얻는 것입니다(예: 두 번째 열을 선택하려면 {0,1,0}). 하드코딩이 실제로 유용한 시기이지만 수식을 동적으로 만드는 방식으로 이러한 배열을 확실히 만들 수 있습니다. 여기서는 전혀 필요하지 않습니다.
를 사용하여 의 배열 INDEX()
에 사용할 열을 선택할 수 있다는 점을 명심하세요 . SUMPRODUCT()
개인적으로는 이것이 더 쉽다고 생각하지만 큰 차이는 없습니다.
공상을 위해 너무 많은. 상당히 오래된 버전의 Excel에서 작동하는 좀 더 오래된 방법은 범위 비교를 수행하여 데이터를 "필터링"하고 다음 위치에 표시합니다 SUMPRODUCT()
.
=SUMPRODUCT( IF(B1:B12=I1, C1:C12, 0), IF(B1:B12=I1, D1:D12, 0) )
함수의 각 배열은 IF()
조회 범위를 행의 I 열 셀과 단순히 비교하는 's에 의해 제공됩니다(예, 두 접근 방식 모두 SPILL
공식이 아니므로 I 열이 확장되는 한 아래로 복사해야 합니다 UNIQUE()
). 두 개의 열 데이터를 함수의 매개변수에 넣습니다.
직접적이고 명확하며 단순하며 이해하기 쉽고 수년에 걸쳐 유지 관리됩니다. 함수가 아닌 간단한 TRUE/FALSE 테스트를 사용하므로 속도가 빨라야 합니다. 두 접근 방식 모두 SPILL
해당 SUMPRODUCT()
열의 기능을 사용하지 않으므로 이점도 없습니다.
하지만 이것은 당신에게 확실히 익숙한 기능만을 사용하는데 왜 안 되겠습니까?
그리고 실제로 고유한 학생 목록을 작성하는 불쾌한 부분을 사용하면 SPILL
작업도 잘 작동합니다.