2013-03-27 2 views
1

기능을 향상시키기 위해 Excel 파일을 수정하려고하지만 불행히도 Excel에서 많은 경험이 없습니다.워크 시트의 동적보기 (필터)를 만들려면 어떻게해야합니까?

내 문제를 설명하기 위해 두 개의 워크 시트 WS1과 WS2가 있다고 가정 해 봅시다. WS1은 사용자가 입력 한 모든 데이터를 포함합니다. 첫 번째 열은 정수를 포함합니다. WS2에 WS1의 동적보기가 포함되기를 바랍니다. 특히 WS2는 첫 번째 열에 "1"이 포함 된 WS1의 모든 행을 으로 포함해야합니다. WS2의 내용은 WS1이 업데이트 될 때마다 자동으로 변경되어야합니다.

이 기능을 표준 Excel 기능/기술로 구현할 수 있습니까? 감사합니다.

답변

4

배열 수식을 사용하여이를 수행 할 수 있습니다. 데이터가 워크 시트 WS1A, BC 열에 있다고 가정합니다. 워크 시트 WS2에 세포 A1에 다음 수식을 입력 :

=INDEX('WS1'!$A:$A,SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1))) 

확인 Ctrl 키 사용이 공식 - Shift 키를 - 이 배열 수식임을 나타냅니다를 입력합니다. 결과적으로 중괄호 {}이 표시됩니다.

마찬가지로, 워크 시트 WS2에 세포 B1C1에서 다음 배열 수식을 입력 :

=INDEX('WS1'!$B:$B,SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1)))  
=INDEX('WS1'!$C:$C,SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1))) 

그런 다음 세포를 워크 시트 WS2A1, B1C1을 선택하고 멀리 아래로 오른쪽 하단 모서리를 끝까지 드래그 모든 행을 포함하는 데 필요한만큼. 너무 아래로 드래그하면 #NUM이 표시됩니다. WS1에 열 A의 값을 조정하는 경우 워크 시트의 컬럼의 내용이 자동으로 업데이트됩니다 WS2

=IFERROR(INDEX('WS1'!$A:$A,SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1))),"") 

에로,이를 방지 (나중에 엑셀 2007의 경우) IFERROR() 수식에 수식을 포장합니다.

좀 더 효율적인 솔루션은 도우미 열을 사용하여 워크 시트 WS3에 말합니다.

=IFERROR(SMALL(IF('WS1'!$A:$A=1,ROW(INDIRECT("1:"&COUNTA('WS1'!A:A)))),ROWS('WS1'!$A$1:$A1)),"") 

그럼 B1, C1D1 (정상이 아닌 배열 식)에서 다음 수식을 입력 : 먼저 (A1에 배열 수식으로)하기 화학식으로 해당 행의 인덱스를 계산

=IF(ISBLANK($A1),"",INDEX('WS1'!$A:$A,$A1)) 
=IF(ISBLANK($A1),"",INDEX('WS1'!$B:$B,$A1)) 
=IF(ISBLANK($A1),"",INDEX('WS1'!$C:$C,$A1)) 

을 선택하고 아래로 드래그하십시오.

당신은이 일을 업로드 example workbook here

+0

감사합니다. – carlo

1

또 다른 방법을 찾을 수 있습니다 만 그 행을 검색 WS2에서 VLOOKUP 사용, 시트 WS1의 주요 테이블의 왼쪽에 순차적 키 열을 만들고 행을 사용하여 조회 키로 WS2의 번호.

예. 데이터가 WS1! C2 : D8에 있고 D 열의 값이 "a"인 행만 원한다고 가정하십시오. 이어서 B2에서 다음 입력 B2 아래로 붙여 B8 :

=IF(D2="a",ROW(),"") 

그 다음 A2에서 다음 입력 A2 아래로 붙여 : A8 :

=IF(B2="","",RANK(B2,$B$2:$B$8,-1)) 

마지막으로,이 수식을 입력 WS2! A1을 만들고 필요한만큼 상하로 붙여 넣습니다 (원래 테이블이 WS1에있는 한 안전한면에 있도록).

=IF(ROW() > MAX(Sheet1!$A$2:$A$8),"",VLOOKUP(ROW(),Sheet1!$A$2:$D$8,COLUMN())) 
관련 문제