
c7:c30에 지정된 날짜와 L7:L30의 활성-"A" 및 완료-"C" 범주가 있는 데이터 범위를 살펴보는 수식을 Excel에서 설정하려고 합니다. Excel에서 각 행을 개별적으로 살펴보고 날짜가 1/1/12(B38)과 3/31/12(C38)(연도의 1분기)로 지정된 분기 날짜 사이에 있는지 비교하려고 합니다. 이 조건이 충족되면 "A"로 표시된 항목을 활성 상태로 계산합니다.
지정된 첫 번째 날짜만 보고 첫 번째 날짜가 1분기 사양과 일치하는 경우 "A"로 표시된 모든 날짜를 계산하므로 작동하지 않는 다음을 생각해냈습니다.
{=(IF(($C$7:$C30>=$B$39)*($C$7:C$30<=$C$39),COUNTIF($L$7:$L30,"a"),0)) }
각 행을 개별적으로 확인하지 않고 제시된 if 문에 대해 첫 번째 날짜가 참인 경우 A로 표시된 모든 항목을 계산하는 이 수식의 문제점을 파악하도록 도와주세요.
죄송합니다. Excel을 잘 사용하지 못합니다. 도움을 주시면 감사하겠습니다.
감사해요!
답변1
배열 수식을 구성한 방식에 문제가 있을 수 있다고 생각합니다. 명령문의 압축을 풀면 날짜 조건이 충족되는 경우 COUNTIF($L$7:$L30,"a")의 결과가 각 행에 포함되어 있는 만큼의 행을 포함하는 배열을 구축하게 됩니다. , 또는 0.
전체를 감싸는 계산 함수를 적용하지 않기 때문에 함수는 전체 배열을 반환하지만 셀의 첫 번째 결과만 볼 수 있으므로 순전히 하나의 셀에 의해 제어되는 것처럼 보입니다.
이에 접근하는 다른 방법은 다음과 같습니다.
각 행에 대한 세 가지 테스트는 다음과 같습니다.
- 날짜 >= B38
- 날짜 <= C38
- 조건 = "a"
세 가지가 모두 참인 경우에만 계산하려고 합니다.
편리하게도 참값은 1로 평가되고 거짓은 0으로 평가되므로 곱셈 연산을 사용하여 원하는 것을 얻을 수 있습니다.
따라서 단일 행에 대해 다음을 수행하고 싶을 것입니다.
(C7 >= B38) * (C7 <= C38) * (L7="a")
(물론 관심 있는 행을 포함하기 위해 C7:C30 등으로 확장합니다)
그런 다음 이를 단일 값으로 축소하려면 목록을 살펴보고 모든 값을 함께 추가하는 SUM() 문으로 전체를 래핑하려고 합니다.
SUM( (C7:C30>B39) * (C7:C30<=C39) * (L7:L30="a") )
또한 궁금하신 경우 원래 수식으로 돌아가서 sum() 문으로 마무리하시면 상태가 "a"로 설정된 횟수로 결과가 표시됩니다. 날짜 조건을 만족하는 행 수를 곱합니다.
(참고: 배열 수식은 처음에는 약간 머리를 긁적이지만 일단 머리를 숙이고 나면 꽤 잘 작동합니다. 원래는 다음에서 읽었습니다.http://www.cpearson.com/excel/ArrayFormulas.aspx여전히 혼란스럽다면 꽤 좋은 설명입니다..)