programing

조건이 있는 카운트 고유 값

newsource 2023. 5. 15. 21:55

조건이 있는 카운트 고유 값

A열에는 다른 이름의 목록이 있습니다.B열에는 0 또는 1의 값이 있습니다.

저는 A열에서 B열에 1이 있는 모든 고유 이름의 개수를 알고 싶습니다.

아래 배열 공식을 사용하여 고유 이름을 셀 수 있지만 열 B에 조건을 적용할 수 없습니다.

=SUM(1/COUNTIF(A:A,A:A))

100개 이하의 행을 사용하여 A2의 다른 이름을 계산해 보십시오.B2에서 같은 행에 1이 있는 경우 A100:B100:

=SUM(IF(FREQUENCY(IF(B2:B100=1,IF(A2:A100<>"",MATCH(A2:A100,A2:A100,0))),ROW(A2:A100)-ROW(A2)+1),1))

으로 확인된.CTRL+SHIFT+ENTER

두 가지가 동일하지 않기 때문에 제가 말하는 것은(는) 동일하지 않습니다.

이렇게요?

=SUM(--(FREQUENCY(IF(($B$1:$B$8=1), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8), ""), COUNTIF($A$1:$A$8, "<"&$A$1:$A$8))>0)))

이것은 배열 공식입니다.+ +를 눌러야 합니다.

스크린샷

여기에 이미지 설명 입력

꼭 공식이어야 하나요?이를 위한 정말 쉬운 방법은 열 A와 B에서 피벗 테이블을 만드는 것입니다.그런 다음 열 B를 필터 필드로, 카운트 A를 값으로 설정합니다(열 A와 B에 레이블을 지정해야 함).그런 다음 피벗 시트의 A4(최소한 기본값)에 답변이 포함되어 있어야 합니다.이것은 모든 크기 목록에서 사용할 수 있으며 여러 조건이 있을 때 실제로 사용할 수 있습니다.

그것이 공식이어야 한다면, 완전히 그렇게 되어야 합니까?공식이 작동하기 전에 A로 정렬할 수 있다면 이 워크플로는 어떻습니까?저는 이것에 열광하지 않고 그것이 개선될 수 있을 것이라고 의심합니다.

A(상승 또는 하강)를 기준으로 정렬한 다음 B(하강)를 기준으로 정렬합니다.

C에서 C의 각 행은 다음과 같은 공식을 사용합니다.

=if (and(A2<>A1,B2=1),1,0) 

C1은 다음과 같습니다.

=b1 

C2에서 데이터의 마지막 행(예: c500)까지 끕니다.

그런 다음 C, =sum(c1:c500)을 합하여 카운트합니다.

공식을 데이터 행 아래로 끌 수 있습니다(필요한 최대 수를 알고 있는 한). 모든 빈 행에 대해 0을 반환해야 합니다.그러면 A와 B에 데이터를 추가하면 나머지는 자동으로 업데이트됩니다.데이터도 다시 사용해야 할 것입니다.

피벗 테이블 솔루션의 한 가지 좋은 점은 기존 데이터 행 내에 새 데이터를 삽입하는 한 데이터 세트와 함께 자동으로 증가할 수 있다는 것입니다.물론 정렬이 필요하지 않습니다.

이 일반적인 문제에 대한 비교적 간단한 해결책은 다음과 같습니다.

=SUM((B:B=1)/CONTIFS(A:A,A:A,B:B,B:B))

배열 수식으로 입력했습니다.

어레이의 크기를 실제 데이터가 있는 곳으로 제한해야 합니다.

피벗 테이블로 간편 ......:

SO15944249 예

2022년 9월 28일 새로운 답변

이제 FILTER 기능을 사용하여 다음을 수행할 수 있습니다.

=COUNTA(UNIQUE(FILTER(A2:A10,B2:B10=1)))

샘플 엑셀 파일

언급URL : https://stackoverflow.com/questions/15944249/count-unique-values-with-a-condition