값을 기준으로 반복되는 내용을 삭제하는 Excel 2010 수식


3

이름과 값이라는 두 개의 열이있는 스프레드 시트가 있습니다. 예를 들어 이름은 다른 값으로 여러 번 반복됩니다.

이름-1
이름-2
이름-3

기타

스프레드 시트를 통과하고 이름 열의 모든 중복 인스턴스를 삭제하여 두 번째로 높은 값을 가진 수식을 저장하는 수식을 찾고 있습니다. 따라서 위와 같은 스프레드 시트를 입력하면 "Name-2"행을 저장하고 다른 행을 삭제합니다. 이것이 가능한가?

편집 : 스프레드 시트에는 6000 개 이상의 값이 있으므로 가능한 한 자동화 된 솔루션을 선호합니다. 나는 다음과 같은 것을 생각하고 있었다 :

  1. 이름별로 값을 정렬 한 다음 값으로 정렬하십시오.
  2. 가장 낮은 값을 가진 중복 행을 삭제하는 수식입니다.
  3. 가장 낮은 값을 제외한 모든 행을 삭제하는 수식입니다.

수식을 사용하는 대신 결과를 필터링 / 정렬 한 다음 두 번째로 큰 것을 선택하십시오. 매트릭스 MAX 기능이 작동한다고 가정합니다. 두 경우 모두 손으로 삭제해야합니다.
Doktoro Reichard

값을 기준으로 정렬 한 다음 수동으로 선택하고 삭제했지만 6000 이상으로 축소 해야하는 6000 개 이상의 값이있는 스프레드 시트이므로 시간이 오래 걸립니다.
Elisa

LARGE 는 배열에서 n 번째로 큰 요소를 제공 할 수 있습니다. 이 외에는 셀을 삭제하는 기능이 없습니다. 따라서 귀하의 답변에는 VBA 스크립팅이 필요합니다.
Doktoro Reichard

답변:


4

도우미 열과 필터를 사용하여 원하는 것을 얻을 수 있습니다.

1 단계 : 도우미 열

다음 공식을 사용하여 테이블에 열을 추가하십시오. 여기서 이름은 A2:A18있고 값은입니다 B2:B18.

=OR(COUNTIF($A$2:$A$18,A2)=1,SUMPRODUCT(1*(B2<$B$2:$B$18),1*(A2=$A$2:$A$18))=1)

이 수식은 TRUE유지하려는 행, 즉 중복 이름에 대해 두 번째로 높은 값과 중복되지 않는 이름 ( d아래 예 와 같이) 을 반환 합니다 . 우연히 중복되지 않는 행을 유지하지 않으려면 다음 수식을 대신 사용할 수 있습니다.

=SUMPRODUCT(1*(B2<$B$2:$B$18),1*(A2=$A$2:$A$18))=1

도우미 열 예

2 단계 : 필터링

TRUE헬퍼 컬럼에있는 행에 대해 전체 테이블을 필터링하십시오 .

필터

필터링이 충분하지 않고 실제로 다른 데이터를 삭제해야하는 경우 필터링 된 결과를 다른 테이블에 복사하여 붙여 넣은 다음 원본 테이블을 삭제 한 후 클린 사본에 붙여 넣을 수 있습니다.


매우 영리하지만 이름에 대해 가장 높은 값의 타이가 있으면 실패합니다. 예, OP가 "이름이 다른 값 으로 여러 번 반복 됩니다"(강조 추가)라고 말했지만 확인 없이는 그대로 사용하지 않는 경향이 있습니다. IMHO, 가장 좋은 대답은 아마도 LARGE기능과 관련이 있지만 작동하는 솔루션으로 만드는 방법을 즉시 알 수는 없습니다. 그러나 귀하의 답변을“수정”했습니다.
Scott

우수한! 이것은 완벽하게 작동했습니다!
Elisa

2

나는 당신이 이름과 가치에 따라 정렬해야한다는 것에 동의합니다. Excellll이 좋은 접근 방식에 동의합니다. 그러나 데이터에 이름의 최고 가치가있는 넥타이가 있으면 그의 대답은 실패합니다. 나는 그 대답을 여기에 적응시켰다.

두 개의 헬퍼 컬럼을 정의하십시오 .

  • C2 - =(A2<>A3)
  • D2 - =IF(A1=A2, B1, B2)

Column  C은 이름의 마지막 항목 인 행을 식별하고 Column  D은 두 번째로 높은 값 (또는 하나의 항목 만있는 경우 유일한 값)을 가져옵니다. 그런 다음 Column에 C포함 된 행을 필터링하고 Column  FALSE의 이름과 Column A의 값을 쌍으로 지정  하십시오  D. 다음의 예는 상단이 제외 Excellll의 대답과 같은 데이터를 사용합니다 b의 내가 강조 조건부 서식을 모두 17을 사용하고 있습니다 ' A와  D데이터 C입니다 TRUE.

                               


그리고 3 개의 연속 행이 가장 높은 가치로 묶여 있다면 ...? 대신 순위 결정으로 고유 한 것을 사용하는 것이 좋습니다 ROW().
Excellll

@ Excell : 세 개의 연속 행이 가장 높은 값으로 묶여 있으면 내 대답은 여전히 ​​작동합니다. 너의 요점이 뭐야?
Scott

죄송합니다. 마지막 단계까지 읽지 못했습니다. 다른 조건으로 필터링하고 있다고 생각했습니다. 문제에 +1
Excellll

0

또 다른 대안은 이 옵션 을 사용 하여 고유 한 이름 값으로 목록을 만든 다음 LARGE수식을 배열 수식으로 사용하는 것입니다.

=LARGE(IF($A$2:$A$20=D2;$B$2:$B$20);2)

..IF($A$2:$A$20=D2;$B$2:$B$20)...

If match condition, then give me the values. In my examples it could be 
something like {1,2,...,6,FALSE,...FALSE} and the formula omits FALSE 
values.

=LARGE(..., ??) [??] Rank Value you want in this case 2

배열 수식으로 변환하려면 쓰고 나서 클릭 F2하여 편집 Ctrl+Shift+Enter하면 수식이 다음과 같이 표시됩니다.{=LARGE(...)}

시트는 같은 수 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.