2014-12-05 2 views
1

고유 한 이름을 가진 열이 포함 된 월별 보고서를 작성했습니다. 매월 나열된 고유 이름 수를 계산하는 수식을 사용합니다 (예 : Smith, Sarah 및 Jones, Martha에 대해 세 개의 항목이있는 경우 수식은 2을 결과로 제공합니다). 내가 사용하는 공식은 =SUMPRODUCT((B5:B46<>"")/COUNTIF(B5:B46,B5:B46&""))이며 아름답게 작동합니다. 목록은 날짜가 아니라 이름순으로 정렬되어 있어야합니다.Excel 2007 - 여러 워크 시트에서 고유 한 값 계산

올해가 다가 오면 연중 내내 얼마나 많은 고유 한 이름이 등장했는지를 포함하여 연례 요약을 작성하고 싶습니다. 나는 이것을 매월 별도의 시트와 함께 워크 북으로 세웠다. 내가 찾고있는 것은이 12 개의 시트에 걸쳐 나타나는 고유 한 이름을 세는 방법입니다 (1 월에 스미스, 사라와 존스, 마르타, 스미스, 사라, 존스 각각에 대해 각각 하나씩 항목이 있다면, 2 월의 Martha, 나는 여전히 나의 결과로 2를 얻을 것이다.

내가 조사한 바에 따르면 얼마나 많은 고유 이름이 있는지가 아니라 특정 이름이 몇 번이나 나왔는지 계산하는 방법이 있습니다. 나는 그것을 시험해 볼 수 있는지보기 위해 약간의 실험을했지만, 나는 분명히 내 리그에서 나왔다. 기꺼이 사용하고 시도해 볼 수는 있지만 승인을 받기까지 어리석은 절차없이 프로그램이나 부가 기능을 설치할 수는 없습니다. 일반적으로 몇 달이 걸리므로이를 피하고 싶습니다.

답변

0

한 시트에 모든 이름을 붙여 넣을 수 있습니까? 그렇다면 12 개의 시트에있는 모든 이름을 별도의 시트에있는 같은 열에 붙여 넣으십시오. 이름을 열 레이블로 추가하여 피벗 테이블을 만들면 12 개월 동안 모든 고유 한 이름의 목록을 얻을 수 있습니다. 이 목록에서 counta 수식을 사용하여 헤더와 총 행을 빼면 답이 있습니다.

여기에 신속하게 목록을 컴파일 약속 코드의 편집 :

Sub compile() 

ws = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec") 

Sheets("Summary").Range("A1", Range("A1000000").End(xlUp)).ClearContents 

For Each sh In ws 
    Sheets(sh).Select 
    Sheets(sh).Range("A2", Range("A1000000").End(xlUp)).Copy 
    Sheets("Summary").Range("A1000000").End(xlUp).Offset(1, 0).PasteSpecial 
Next 

Sheets("Summary").Select 

' 최종 하위

는 합병 탭만큼 작동

는 "요약"모든라고 배열 문자열 당 매월 탭, 실제 탭 이름을 수정할 수 있습니다. 셀 "A2"에서 시작하여 열 "A"의 12 개 시트 각각의 모든 데이터를 복사하고 "요약"탭에 서로 붙여 넣습니다. Excel 2003을 사용하는 경우 Excel 2003에서는 "A1000000"을 "A65500"으로 변경하십시오.

+0

피벗 테이블은 물론 필수가 아니며, 한 시트에 사용했던 동일한 수식을 사용하십시오. – Raugmor

+0

그래도 같은 제안을했습니다. 그것은 작동해야합니다. 계산을위한 임시 시트. 가장 논리적이고 실용적인 방법은 아니지만 다른 접근 방식은 시각적 기본에 대한 더 많은 작업과 지식이 필요합니다. –

+0

이것은 최상의 옵션처럼 보입니다. 나는 자동적으로 갱신 될 것이지만, 대량의 테이블을 생성하고 각 달의 데이터를 세그먼트에 연결하면, 12 월을 통해 항목을 추가 할 때 업데이트되므로, 처리해야합니다. 이 마지막 페이지는 월별 시트만큼 예쁘고 훌륭 할 필요는 없습니다. –

0

모든 이름이 하나의 열에 있고 정렬되어 있다고 가정합니다.

첫 번째 셀부터 시작하여이 셀이 이전 셀과 같은지 비교할 수 있습니다. 이전 셀이 없기 때문에 없음입니다.

다음 셀에 나타나는 이름이 이전과 같으면 앞으로 합계에 1을 더하지 마십시오. 다른 경우에는 합계에 1을 더하고 더 진행하십시오.

결국 합계에는 고유 한 이름 수가 포함됩니다.

모든 스프레드 시트에서 수행하십시오. 여러 스프레드 시트에 걸쳐 자동화가 필요한 경우 Visual Basic으로 이동하거나 모든 스프레드 시트에 대해이 작업을 수행하고 매크로를 기록해야합니다.

+0

모든 시트에서 고유 한 확인하지 않기 때문에 작동하지 않습니다. – Raugmor

+1

하나의 시트에서 고유 한 것을 확인 하시겠습니까? 그것이 시트를 가로 질러 있다면 나는 그것을 쉽게 할 수있는 방법을 생각할 수 없다. 유일한 방법은 모든 레코드를 하나의 시트로 복사하고, 정렬하고, 동일한 논리를 적용하는 것입니다. –

+0

불행히도 목록은 이름이 아니라 날짜순으로 정렬되어야합니다. 그리고 Raugmor가 말했듯이, 그것은 시트 당 단지 계산하는데, 이것은 제가 이미 공식을 가지고 있습니다. –

관련 문제