2016-07-12 2 views
1

동일한 값의 열에서 파생 된 두 개의 배열 사이에 부산물을 만드는 방법을 찾고 있습니다. 예를 들어엑셀 - 동일한 컬럼에서 2 개의 어레이 Sumproduct

A  B  C 
1  FC 100 
1  ST 5 
2  FC 120 
2  ST 3 
3  FC 26 
3  ST 7 

이 시나리오에서, I가 계산 공식 (100 * 5) + (120 * 3) + (* 7 26)가 필요하거나, 달리 말하면 열 C의 값 SUMPRODUCT 수행 열 B가 "FC"이고 열 B가 "ST"일 때 열 C의 값입니다.

저는 꽤 오래 동안 검색을 해본 결과 적절한 대답을 찾을 수 없었습니다. 어떤 도움을 주시면 감사하겠습니다. 감사합니다

+2

'SUMPRODUCT ((B1 : B5 = "FC") * (C1 : C5 * C2 : C6)) " –

+0

@ScottCraner - tbh 필자는 서술을 따라 B 열의 패턴을 완전히 무시했습니다. – Jeeped

+0

@Jeeped not 내 머리를 자르려고 기다리는 동안 전화로 나쁘다. 따라서 코멘트가 아니라 대답. –

답변

3

스콧 Craner (그는 하나를 쓴다면, 그의 대답을 받아주세요) 주석으로 :

SUMPRODUCT((B1:B5="FC")*(C1:C5*C2:C6)) 

이 방법은, 배열 참조를 사용하여 둘을 곱한 다음의 SUMPRODUCT 소요 결과. 중첩 조건의 제 2 세트로부터 작업 :

:

  • C1:C5하는 (하나의 행 오프셋)
  • C2:C6 이러한 배열 곱 [5,120,3,26,7]

은 중간 어레이를 제공 반환 [100,5,120,3,26] 배열을 반환

  • [500,600,360,78,182]

다음은 C 열의 각 숫자 다음에 오는 숫자입니다. 그러나 모든 다른 결과 (B 열에 "FC" 값으로 표시됨) 만 최종 합계에 포함됩니다. 비록 (

  • B1:B5="FC" 증식 때 [TRUE,FALSE,TRUE,FALSE,TRUE]

엑셀 1/0TRUE/FALSE 값을 처리하는 배열을 반환이를 위해 지정된 범위에있는 각 셀의 값을 테스트하는 다른 중첩 된 용어를 사용하여 달성된다 되지 부가/뺄셈)은 SUMPRODUCT 함수 본다 : 그래서

  • [1,0,1,0,1]*[500,600,360,78,182] =>[500,0,360,0,182]

한 다음 생성 된 제품의 값을 추가

  • 500 + 0 + 360 + 0 + 182 = 1042
+0

좋은 설명. 나는 오늘 게으르고있다. 너에게 좋다. –

+0

정말 영리한 해결책을 주셔서 감사합니다. 나는 나의 모범을 지나치게 간소화했을 것이다. 실제로 FC와 ST의 각 인스턴스 사이에는 다른 많은 값이 있으므로 결과적으로'(C1 : C5 * C2 : C6)'표현식의 결과 중 많은 부분이 #VALUE! 결과를 반환하고 수식을 깨뜨릴 것입니다. 'iferror()'컴포넌트를 추가하고 Ctrl + Shift + Enter로 확인하면 모든것이 수정되었습니다. 다시 한번 감사드립니다. – tfunk10258

+0

질문을 설명하는 가장 간단한 경우를 간소화하는 것은 tfunk10258이라는 훌륭한 연습 일뿐만 아니라 질문을 올릴 때 매우 권장됩니다. 또한 실제 (복잡한) 사용법을 빌드하기 전에 직접 문제를 해결하고 해결할 수있는 좋은 방법입니다. 다행이 접근 방식을 적용하는 방법을 볼 수 있고 Stack Overflow에 오신 것을 환영합니다! – brichins

1

을 이러한 특정 예.

{=SUM((IF(B1:B6="FC",C1:C6,0)*IF(B2:B7="ST",C2:C7,0)))} 

FC와 ST가 예제와 같이 바뀌는 경우에만 작동합니다. 그렇지 않으면 열 A를 주로 정렬하고 열 B를 부순으로 정렬하여이 형식에 맞게 빠르게 변경할 수 있습니다.

두 번째 if 문의 배열이 하나의 셀만큼 오프셋되어 있습니다. 이렇게하면 어레이가 원하는 방식으로 증식 할 수 있습니다. 또한 배열 수식이기 때문에 셀에 넣을 때 CTRL + SHIFT + Enter를 사용해야합니다.

관련 문제