2017-02-08 2 views
2

Similarquestions이 질문을 받았지만 정확하지는 않습니다. 매우 가까운 one이 있지만 그 해결책은 나를 위해 작동하지 않습니다.Excel SUMIFS 여러 기준 셀 값

쉼표로 구분 된 값을 셀로 반환하는 함수가 있습니다. 해당 셀의 요소를 SUMIFS 함수에 조건으로 전달하려면 one과 같은 접근 방식을 사용하십시오.

내 시도는 아래 그림입니다 :이 어떻게 든 기능은 세포 G8에 ​​무엇인지 이해하는 방식과 연결되어 있다고 생각

enter image description here

. 그것은 몇 가지 추가 따옴표를 추가하는 것 같습니다. 나는 수식 입력 줄 F9 키를 눌러에서 G8을 강조, 내가 얻을 : 각 기준의 각 측면에 여분의 따옴표가있다

enter image description here

.

사용자 지정 VBA 함수 솔루션을 사용할 수 있지만 워크 시트 함수로 빌드 할 수있는 무언가를 선호합니다. 목록 상자에서 요소를 꺼내고 여분의 쉼표를 제거하는 정규식 작업을 수행하는 사용자 지정 VBA 함수에서 조건이 반환됩니다. 선택할 수있는 요소의 수는 가변적이므로 두 개 이상의 셀로 조건을 분할하지 않아도됩니다. 감사.

+1

'{ "Dog", "Cat"}'문자열은 _string_가 아니고 배열입니다. 배열을 닮았더라도 문자열을 전달하는 것은 여전히 ​​배열이 아닌 문자열이므로 작동하지 않습니다. 쉼표로 구분 된 목록을 셀로 반환하는 VBA 함수가 있다고 가정 해 보겠습니다. 배열을 반환하도록 변경하고 SUMIFS 수식으로 호출하십시오 (목록을 셀로 반환하지 않음) –

+0

Thanks @chrisneilsen. 내가 사용하고있는 함수는 Listing 2의 답변과 [[여기]] 비슷합니다 (http://stackoverflow.com/questions/22542834/how-to-use-regular-expressions-regex-in-microsoft -excel-both-in-cell-and-loops)을 사용합니다. 나는 콜렉션을 반환하기 위해 [here] (http://stackoverflow.com/questions/1815980/excel-vba-function-returning-an-array) 예제를 따르려고했지만 'argument not optional'에 대한 에러가 발생한다. 내 출력에. 내 함수가 배열을 원하는대로 반환하는지 확인하는 방법에 대한 의견이 있으십니까? –

+0

코드와 내가 원하는 기능에 대한 설명을 게시 할 수 있습니다. –

답변

1

원시 쉼표로 구분 된 기준이 G6 인 것으로 보입니다.이 기준을 배열로 나눠서 SUMIFS으로 보내면됩니다. VBA에서는 분할이 가능하지만 Excel에는 노출되지 않습니다.

Function splitCSV(str As String) 
    splitCSV = Split(str, ",") 
End Function 

지금 F10의 수식은 다음과 같습니다 : 우리가 필요로하는 모두는 CSV의 분할을하는 작은 UDF를 작성하고 우리의 공식에서 사용하는 것입니다

=SUM(SUMIFS(C3:C10, B3:B10, "blue", A3:A10, splitCSV(G6))) 

편집

위의 것은 배열 수식입니다 (Ctrl + Shift + Enter). 일반 수식을 사용하려면 SUM 대신 SUMPRODUCT을 사용할 수 있습니다. 이것은 좀 더 융통성있게 (정상적인 수식 대 배열 수식)뿐만 아니라 "예상 된"성능 향상을 가져옵니다.

=SUMPRODUCT(SUMIFS(C3:C10, B3:B10, "blue", A3:A10, splitCSV(G6))) 
+1

@chris neilson에 대한 제 의견을 생각한 것입니다. "안녕하세요, 저는 방금 셀을 분할하는 VBA 함수를 작성하지 않으시겠습니까? 문자열을 배열에 넣으십시오!? " 당신은 제 마음을 읽었습니다. 고맙습니다! 이것은 훌륭하게 작동합니다. –

+0

@NickCriswell 좋습니다.그것이 도움이 된 것을 알았 기 때문에 다행스럽게 생각합니다 :) –

+1

그건 그렇고,이 대답은 저에게 사회자 도구를주었습니다, 감사합니다 !! –