Note: The other languages of the website are Google-translated. Back to English

Excel의 특정 셀 값을 기반으로 피벗 테이블을 필터링하는 방법은 무엇입니까?

일반적으로 아래 스크린샷과 같이 드롭다운 목록에서 항목을 선택하여 피벗 테이블의 데이터를 필터링합니다. 실제로 특정 셀의 값을 기준으로 피벗 테이블을 필터링할 수 있습니다. 이 기사의 VBA 방법은 문제를 해결하는 데 도움이 될 것입니다.

VBA 코드로 특정 셀 값을 기준으로 피벗 테이블 필터링


VBA 코드로 특정 셀 값을 기준으로 피벗 테이블 필터링

다음 VBA 코드는 Excel의 특정 셀 값을 기반으로 피벗 테이블을 필터링하는 데 도움이 될 수 있습니다. 다음과 같이하십시오.

1. 미리 셀에 기준으로 피벗 테이블을 필터링 할 값을 입력하십시오 (여기서는 셀 H6 선택).

2. 셀 값으로 필터링 할 피벗 테이블이 포함 된 워크 시트를 엽니 다. 그런 다음 시트 탭을 마우스 오른쪽 버튼으로 클릭하고 상황에 맞는 메뉴에서 코드보기를 선택합니다. 스크린 샷보기 :

3. 오프닝에서 응용 프로그램 용 Microsoft Visual Basic 창에서 VBA 코드 아래를 코드 창에 복사하십시오.

VBA 코드 : 셀 값을 기준으로 피벗 테이블 필터링

Private Sub Worksheet_Change(ByVal Target As Range)
'Update by Extendoffice 20180702
    Dim xPTable As PivotTable
    Dim xPFile As PivotField
    Dim xStr As String
    On Error Resume Next
    If Intersect(Target, Range("H6:H7")) Is Nothing Then Exit Sub
    Application.ScreenUpdating = False
    Set xPTable = Worksheets("Sheet1").PivotTables("PivotTable2")
    Set xPFile = xPTable.PivotFields("Category")
    xStr = Target.Text
    xPFile.ClearAllFilters
    xPFile.CurrentPage = xStr
    Application.ScreenUpdating = True
End Sub

노트: 코드에서

1) "Sheet1”는 워크 시트의 이름입니다.
2) "피벗 테이블 2”은 피벗 테이블의 이름입니다.
3) 피벗 테이블의 필터링 필드는 "범주".
4) 피벗 테이블을 필터링하려는 값이 셀에 배치됩니다. H6.
필요에 따라 위의 변수 값을 변경할 수 있습니다.

4. 누르세요 다른 + Q 닫는 키 응용 프로그램 용 Microsoft Visual Basic 창.

그런 다음 피벗 테이블은 아래 스크린 샷과 같이 H6 셀의 값을 기반으로 필터링됩니다.

필요에 따라 셀 값을 다른 값으로 변경할 수 있습니다.

주의 사항: H6 셀에 입력 한 값은 피벗 테이블의 범주 드롭 다운 목록에있는 값과 정확히 일치해야합니다.


관련 기사 :


최고의 사무 생산성 도구

Excel용 Kutools는 대부분의 문제를 해결하고 생산성을 80% 증가시킵니다.

  • 재사용: 빠르게 삽입 복잡한 공식, 차트 그리고 이전에 사용한 모든 것; 셀 암호화 암호로; 메일 링리스트 생성 이메일 보내기 ...
  • 슈퍼 포뮬러 바 (여러 줄의 텍스트와 수식을 쉽게 편집 할 수 있습니다.) 레이아웃 읽기 (많은 수의 셀을 쉽게 읽고 편집합니다.) 필터링 된 범위에 붙여 넣기...
  • 셀 / 행 / 열 병합 데이터 손실없이; 셀 내용 분할; 중복 행 / 열 결합... 중복 셀 방지; 범위 비교...
  • 중복 또는 고유 선택 행; 빈 행 선택 (모든 셀이 비어 있음); 슈퍼 찾기 및 퍼지 찾기 많은 통합 문서에서; 무작위 선택 ...
  • 정확한 사본 수식 참조를 변경하지 않고 여러 셀; 참조 자동 생성 여러 시트에; 글 머리 기호 삽입, 확인란 등 ...
  • 텍스트 추출, 텍스트 추가, 위치 별 제거, 공간 제거; 페이징 부분합을 만들고 인쇄합니다. 셀 내용과 주석 간 변환...
  • 슈퍼 필터 (다른 시트에 필터 구성표 저장 및 적용) 고급 정렬 월 / 주 / 일, 빈도 등 특수 필터 굵은 기울임 꼴로 ...
  • 통합 문서와 워크 시트 결합; 키 열을 기반으로 테이블 병합; 데이터를 여러 시트로 분할; xls, xlsx 및 PDF 일괄 변환...
  • 300개 이상의 강력한 기능. Office / Excel 2007-2021 및 365를 지원합니다. 모든 언어를 지원합니다. 기업 또는 조직에서 쉽게 배포할 수 있습니다. 전체 기능은 30일 무료 평가판입니다. 60일 환불 보장.
kte 탭 201905

Office Tab은 Office에 탭 인터페이스를 제공하여 작업을 훨씬 쉽게 만듭니다.

  • Word, Excel, PowerPoint에서 탭 편집 및 읽기 사용, Publisher, Access, Visio 및 Project.
  • 새 창이 아닌 동일한 창의 새 탭에서 여러 문서를 열고 만듭니다.
  • 생산성을 50% 높이고 매일 수백 번의 마우스 클릭을 줄입니다!
officetab 하단
코멘트 (23)
아직 평가가 없습니다. 가장 먼저 평가하세요!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이 코드(내 변수에 대해 업데이트됨)를 사용하면 필드를 변경할 때 필터가 일시적으로 올바른 것으로 변경되고 거의 즉시 자체적으로 지워집니다. 왜 이러는지 알아내려고 노력 중(서브 끝에 있는 ClearAllFilters와 관련이 있는지 궁금하신가요?)
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
계층 구조가 있는 보고서 필터로 이 작업을 수행하려면 어떻게 해야 합니까?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
여기요! 매크로 감사합니다.

같은 페이지에서 둘 이상의 피벗 테이블에 사용하려고 했지만 작동하지 않습니다. 나는 다음과 같이 썼다.

개인 하위 Worksheet_Change (범위로 ByVal 대상)
Dim xPTable1을 피벗 테이블로 사용
xPFile1을 피벗 필드로 Dim
문자열로 Dim xStr1
오류에 대한 다음 재개
Intersect(Target, Range("D7"))가 아무것도 아닌 경우 Sub를 종료합니다.
Application.ScreenUpdating = False
xPTable1 = Worksheets("BUSCADOR").PivotTables("PV_ETAPA1") 설정
xPFile1 = xPTable1.PivotFields("ETAPA1") 설정
xStr1 = 대상.텍스트
xPFile1.ClearAllFilters
xPFile1.CurrentPage = xStr1
Application.ScreenUpdating = True

Dim xPTable2을 피벗 테이블로 사용
xPFile2을 피벗 필드로 Dim
문자열로 Dim xStr2
오류에 대한 다음 재개
Intersect(Target, Range("G7"))가 아무것도 아닌 경우 Sub 종료
Application.ScreenUpdating = False
xPTable2 = Worksheets("BUSCADOR").PivotTables("PV_ETAPA2") 설정
xPFile2 = xPTable2.PivotFields("ETAPA2") 설정
xStr2 = 대상.텍스트
xPFile2.ClearAllFilters
xPFile2.CurrentPage = xStr2
Application.ScreenUpdating = True

최종 하위

어쩌면 당신이 나를 도울 수 있습니다!

미리 감사드립니다!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
Hi


매크로 감사합니다


나는 같은 것을 시도하고 있지만 2 개의 테이블에서 작동하도록 할 수 없습니다. 그들은 둘 다 2개의 다른 피벗 테이블만 동일한 셀을 보고 있습니다.


감사
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
피벗 테이블 이름을 변경해야 합니다. 각 피벗 테이블에는 다른 이름이 있습니다. 그것을 얻으려면 피벗을 마우스 오른쪽 버튼으로 클릭하고 피벗 테이블 설정을 선택하면 이름이 맨 위에 표시됩니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요

Je ne comprends pas comment ajouter le nom du second TCD dans la macro pour que cela fonctionne sur les deux.
Pourriez-vous m'aider?

메르
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요. 어째서인지 비주얼 베이직 페이지에 진입한 후 이 매크로가 전혀 표시되지 않습니다. 이 매크로를 활성화/실행할 수 없습니다. 모든 신뢰 센터 설정을 확인했지만 아무 일도 일어나지 않습니다. 도와주세요.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요, 작동하지 않는 것 같습니다. 참조하려는 셀은 수식에서 가져온 것입니다. 수식이 반환되는 값이 아닌 수식을 보고 있으므로 필터가 셀을 찾지 못하는 이유가 무엇입니까?미리 감사합니다.Heather McDonagh
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
Heather님, 해결책을 찾으셨습니까? 같은 문제가 있습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
동일한 탭에 있는 3개의 다른 피벗을 수정/필터링할 수 있었습니다. 또한 데이터 세트 "No Data Found"에 행을 추가했습니다. 그렇지 않으면 필터가 내가 원하지 않는 "ALL"로 남게 되었습니다. 위의 내용이 경영진과의 칭찬을 받는 데 큰 도움이 되었기 때문에 공유하고 싶습니다. (All)은 대소문자를 구분하므로 알아내는 데 시간이 조금 걸립니다.
개인 하위 Worksheet_Change (범위로 ByVal 대상)
'테스트
Dim xPTable을 피벗 테이블로 사용
xPFile을 피벗 필드로 흐리게 처리
Dim xStr을 문자열로

Dim x2PTable을 피벗 테이블로 사용
Dim x2PFile을 피벗 필드로 사용
문자열로 Dim x2Str

Dim x3PTable을 피벗 테이블로 사용
Dim x3PFile을 피벗 필드로 사용
문자열로 Dim x3Str

오류에 대한 다음 재개
Intersect(Target, Range("a2:e2"))가 아무것도 아닌 경우 Sub 종료

Application.ScreenUpdating = False

'tbl-1
xPTable = Worksheets("그래픽").PivotTables("PivotTable1") 설정
xPFile = xPTable.PivotFields("MR 부서 - 부서") 설정
xStr = 대상.텍스트
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
xPFile.CurrentPage = "(모두)"인 경우 xPFile.CurrentPage = "데이터를 찾을 수 없음"

'tbl-2
x2PTable = Worksheets("그래픽").PivotTables("PivotTable2") 설정
x2PFile = x2PTable.PivotFields("MR 부서 - 부서") 설정
x2Str = 대상.텍스트
x2PFile.ClearAllFilters
x2PFile.CurrentPage = x2Str
x2PFile.CurrentPage = "(모두)"인 경우 x2PFile.CurrentPage = "데이터를 찾을 수 없음"

'tbl-3
x3PTable = Worksheets("그래픽").PivotTables("PivotTable3") 설정
x3PFile = x3PTable.PivotFields("MR 부서 - 부서") 설정
x3Str = 대상.텍스트
x3PFile.ClearAllFilters
x3PFile.CurrentPage = x3Str
x3PFile.CurrentPage = "(모두)"인 경우 x3PFile.CurrentPage = "데이터를 찾을 수 없음"

Application.ScreenUpdating = True

최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
구글 시트로 가능한가요? 그렇다면 어떻게?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
Google 스프레드시트에는 피벗 테이블이 필요하지 않습니다. Filter 기능을 통해 직접 수행할 수 있습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
동일한 워크시트에서 여러 워크시트 변경 코드를 사용하고 싶습니다. 그렇게하는 방법? 내 코드는 다음과 같습니다.
개인 하위 Worksheet_Change (범위로 ByVal 대상)
'셀 값에 따른 피벗 테이블 필터
Dim xPTable을 피벗 테이블로 사용
xPFile을 피벗 필드로 흐리게 처리
Dim xStr을 문자열로
오류에 대한 다음 재개
Intersect(Target, Range("D20:D21"))가 아무것도 아닌 경우 Sub 종료
Application.ScreenUpdating = False
xPTable = Worksheets("Sheet1").PivotTables("PivotTable2") 설정
xPFile = xPTable.PivotFields("지정") 설정
xStr = 대상.텍스트
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
최종 하위

Private Sub Worksheet_Change2(ByVal Target As Range)
'셀 값 2를 기반으로 한 피벗 테이블 필터
Dim xPTable을 피벗 테이블로 사용
xPFile을 피벗 필드로 흐리게 처리
Dim xStr을 문자열로
오류에 대한 다음 재개
Intersect(Target, Range("H20:H21"))가 아무것도 아닌 경우 Sub 종료
Application.ScreenUpdating = False
xPTable = Worksheets("Sheet1").PivotTables("PivotTable2") 설정
xPFile = xPTable.PivotFields("제공") 설정
xStr = 대상.텍스트
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
Olá, gostaria de saber se quisesse filtrar mais de uma categoria como poderia ser?
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
선택 셀을 다른 탭에 연결하려면 어떻게 합니까? 이것은 지금까지 내 코드입니다.
개인 하위 Worksheet_Change (범위로 ByVal 대상)
Dim xPTable1을 피벗 테이블로 사용
xPFile1을 피벗 필드로 Dim
문자열로 Dim xStr1
오류에 대한 다음 재개
Intersect(Target, Range("B1"))가 아무것도 아닌 경우 Sub 종료
Application.ScreenUpdating = False
xPTable1 = Worksheets("SM_SKU PIVOTS").PivotTables("PivotTable1") 설정
xPFile1 = xPTable1.PivotFields("지역") 설정
xStr1 = 대상.텍스트
xPFile1.ClearAllFilters
xPFile1.CurrentPage = xStr1
Application.ScreenUpdating = True

Dim xPTable2을 피벗 테이블로 사용
xPFile2을 피벗 필드로 Dim
문자열로 Dim xStr2
오류에 대한 다음 재개
Intersect(Target, Range("B1"))가 아무것도 아닌 경우 Sub 종료
Application.ScreenUpdating = False
xPTable2 = Worksheets("SM_SKU PIVOTS").PivotTables("PivotTable4") 설정
xPFile2 = xPTable2.PivotFields("지역") 설정
xStr2 = 대상.텍스트
xPFile2.ClearAllFilters
xPFile2.CurrentPage = xStr2
Application.ScreenUpdating = True

Dim xPTable3을 피벗 테이블로 사용
xPFile3을 피벗 필드로 Dim
문자열로 Dim xStr3
오류에 대한 다음 재개
Intersect(Target, Range("B1"))가 아무것도 아닌 경우 Sub 종료
Application.ScreenUpdating = False
xPTable3 = Worksheets("SM_SKU PIVOTS").PivotTables("PivotTable8") 설정
xPFile3 = xPTable3.PivotFields("지역") 설정
xStr3 = 대상.텍스트
xPFile3.ClearAllFilters
xPFile3.CurrentPage = xStr3
Application.ScreenUpdating = True

최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요!

저는 VBA를 처음 사용하고 셀 범위를 기반으로 피벗 필터를 선택하는 코드를 갖고 싶습니다.
"CurrentPage"를 범위 값으로 변경하려면 어떻게 해야 합니까?
고맙습니다!!
-------------------------------------------------- -----------------------------------------
서브 프린트투어()

ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[베라이히 1].[투어].[투어]"). _
모든 필터 지우기
ActiveSheet.PivotTables("PivotTable1").PivotFields( _
"[베라이히 1].[투어].[투어]"). _
CurrentPage = "[Bereich 1].[Tour lt. Anlieferungstag].&[4001-01]"
최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
이 코드에 대해 정말 감사합니다! 내 필드를 충족하도록 조정한 후 작동했지만 시트에서 일부 변경 사항의 서식을 지정한 후에는 작동하지 않습니다! 나는 그것을 A1에서 B1으로 옮겼고, 눈에 띄도록 일부 셀 서식을 변경했습니다. 너무 미친 것은 아니지만 이제는 B1에서 텍스트를 변경할 때 업데이트되지 않습니다. 누구나 아이디어가 있습니까?

개인 하위 Worksheet_Change (범위로 ByVal 대상)
'테스트
Dim xPTable을 피벗 테이블로 사용
xPFile을 피벗 필드로 흐리게 처리
Dim xStr을 문자열로

Dim x2PTable을 피벗 테이블로 사용
Dim x2PFile을 피벗 필드로 사용
문자열로 Dim x2Str

Dim x3PTable을 피벗 테이블로 사용
Dim x3PFile을 피벗 필드로 사용
문자열로 Dim x3Str

오류에 대한 다음 재개
Intersect(Target, Range("b1"))가 아무것도 아닌 경우 Sub를 종료합니다.

Application.ScreenUpdating = False

'tbl-1
xPTable = Worksheets("라인 보고서").PivotTables("PivotTable7") 설정
xPFile = xPTable.PivotFields("유토피아 소스") 설정
xStr = 대상.텍스트
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr

'tbl-2
x2PTable = Worksheets("라인 보고서").PivotTables("PivotTable2") 설정
x2PFile = x2PTable.PivotFields("유토피아 소스") 설정
x2Str = 대상.텍스트
x2PFile.ClearAllFilters
x2PFile.CurrentPage = x2Str

'tbl-3
x3PTable = Worksheets("라인 보고서").PivotTables("PivotTable3") 설정
x3PFile = x3PTable.PivotFields("유토피아 소스") 설정
x3Str = 대상.텍스트
x3PFile.ClearAllFilters
x3PFile.CurrentPage = x3Str

Application.ScreenUpdating = True

최종 하위
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요, 랜스입니다.
귀하의 코드를 테스트했으며 제 경우에는 잘 작동합니다. 셀 형식을 변경해도 코드 작업에는 영향을 주지 않습니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
여러 테이블을 사용할 때 Power Pivot에서 어떻게 작동합니까? 필터의 값을 변경하는 매크로를 기록했습니다. 위의 코드가 작동하도록 몇 가지 변경했습니다. 그러나 유형 불일치 오류가 발생합니다. 내가 뭘하든.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 DK님
이 방법은 Power Pivot에서 작동하지 않습니다. 불편을 드려 죄송합니다.
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요
그 설명에 대단히 감사합니다.

J'aimerai utiliser un filter (1 cell) en F4 par exemple qui filtrerait deux TCD qui sont sur la même feuille.

Cela fonctionne très bien avec un TCD mais dès que j'essaye de combiner le second, ça ne marche pas.
당신이 나를 도울 수 ?

정말 감사합니다
암브로스
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요

Merci beaucoup pour cette 설명 qui marche parfaitement.
En revanche, j'aimerais pouvoir utiliser ce code pour pouvoir filterr deux tableaux croisés dynamiques en même temps qui sont sur la même feuille. La seule petite différence entre les deux, c'est qu'ils n'utilisent pas les mêmes 소스. En revanche, le filtre sur lequel se base ces TDC est le même.

Pourriez-vous m'aider à faire évoluer ce code afin que cela fonctionne ?

TCD에서 사용하는 음성 코드:

개인 하위 Worksheet_Change (범위로 ByVal 대상)
' 업데이트 Extendoffice 20180702
Dim xPTable을 피벗 테이블로 사용
xPFile을 피벗 필드로 흐리게 처리
Dim xStr을 문자열로
오류에 대한 다음 재개
Intersect(Target, Range("G4"))가 아무것도 아닌 경우 Sub 종료
Application.ScreenUpdating = False
Set xPTable = Worksheets("Cadrage").PivotTables("Tableau croisé dynamique7")
xPFile = xPTable.PivotFields("N°PROJET") 설정
xStr = 대상.텍스트
xPFile.ClearAllFilters
xPFile.CurrentPage = xStr
Application.ScreenUpdating = True
최종 하위

정말 감사합니다
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하십니까?

귀하의 필요에 맞게 이 코드를 수정하기가 어렵습니다. 단일 필터로 여러 피벗 테이블을 필터링하려는 경우 아래 이 문서의 방법이 도움이 될 수 있습니다.
Excel에서 단일 슬라이서를 여러 피벗 테이블에 연결하는 방법은 무엇입니까?
아직 코멘트가 없습니다
여러분의 의견을 남겨
게스트로 게시
×
이 게시물 평가 :
0   등장 인물
추천 위치

Follow Us

저작권 © 2009 - WWW.extendoffice.com. | 판권 소유. 에 의해 구동 ExtendOffice. | | 사이트 맵
Microsoft 및 Office 로고는 미국 및 / 또는 기타 국가에서 Microsoft Corporation의 상표 또는 등록 상표입니다.
Sectigo SSL로 보호