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

Excel에서 여러 워크시트의 드롭다운 목록을 동기화하는 방법은 무엇입니까?

정확히 동일한 드롭다운 항목이 포함된 통합 문서의 여러 워크시트에 드롭다운 목록이 있다고 가정합니다. 이제 한 워크시트의 드롭다운 목록에서 항목을 선택하면 다른 워크시트의 드롭다운 목록이 동일한 선택 항목과 자동으로 동기화되도록 여러 워크시트에서 드롭다운 목록을 동기화하려고 합니다. 이 문서에서는 이 문제를 해결하는 데 도움이 되는 VBA 코드를 제공합니다.

VBA 코드를 사용하여 여러 워크시트의 드롭다운 목록 동기화


VBA 코드를 사용하여 여러 워크시트의 드롭다운 목록 동기화

예를 들어, 드롭다운 목록은 시트1, 시트2, ..., 시트5, Sheet1의 드롭다운 선택에 따라 다른 워크시트의 드롭다운 목록을 동기화하려면 다음 VBA 코드를 적용하여 완료하십시오.

1. Sheet1을 열고 시트 탭을 마우스 오른쪽 버튼으로 클릭하고 코드보기 오른쪽 클릭 메뉴에서.

2. 에서 응용 프로그램 용 Microsoft Visual Basic 창에서 다음 VBA 코드를 붙여 넣습니다. Sheet1(코드) 창.

VBA 코드: 여러 워크시트에서 드롭다운 목록 동기화

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20220815
    Dim tSheet1 As Worksheet
    Dim tRange As Range
    Dim xRangeStr As String
    On Error Resume Next
    If Target.Count > 1 Then Exit Sub
    
    xRangeStr = "A2:A11"

    Set tRange = Intersect(Target, Range(xRangeStr))
    If Not tRange Is Nothing Then
        xRangeStr = tRange.Address
        Application.EnableEvents = False
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet2")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet3")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet4")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet5")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Application.EnableEvents = True
    End If
    
End Sub

배송 시 요청 사항:

1) 코드에서, A2 : A11 드롭다운 목록이 포함된 범위입니다. 모든 드롭다운 목록이 서로 다른 워크시트에서 동일한 범위에 있는지 확인합니다.
2) 시트2, 시트3, 시트4Sheet5 Sheet1의 드롭다운 목록을 기반으로 동기화하려는 드롭다운 목록이 포함된 워크시트입니다.
3) 코드에 워크시트를 더 추가하려면 "Application.EnableEvents = True", 시트 이름 변경 "Sheet5" 당신이 필요로하는 이름.
tSheet1 = ActiveWorkbook.Worksheets("Sheet5") 설정
tSheet1.Range(xRangeStr).값 = 대상.값

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

이제부터 드롭다운 목록에서 항목을 선택하면 시트1, 지정된 워크시트의 드롭다운 목록은 동일한 선택 항목을 갖도록 자동으로 동기화됩니다. 아래 데모를 참조하십시오.


데모: Excel에서 여러 워크시트의 드롭다운 목록 동기화


최고의 사무 생산성 도구

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 하단
코멘트 (5)
아직 평가가 없습니다. 가장 먼저 평가하세요!
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕,

내 드롭다운이 다른 범위에 있는 경우 어떻게 해야 합니까? 자세히 설명하기 위해 B7 셀에 있는 시트 7에 드롭다운이 하나 있고 B6 셀에 있는 시트 2에도 동일한 드롭다운이 있습니다.

감사합니다,
일레인
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 E,
다음 VBA 코드가 도움이 될 수 있습니다.
여기에서는 Sheet6을 기본 워크시트로 사용하고 시트 탭을 마우스 오른쪽 버튼으로 클릭하고 마우스 오른쪽 버튼 클릭 메뉴에서 코드 보기를 선택한 다음 Sheet6(코드) 창에서 다음 코드를 복사합니다. Sheet2의 B6에 있는 드롭다운 목록에서 항목을 선택하면 Sheet7의 B7에 있는 드롭다운 목록이 동일한 선택 항목을 갖도록 동기화됩니다.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221025
    Dim tSheet1 As Worksheet
    Dim tRange As Range
    Dim xRangeStr As String
    On Error Resume Next
    If Target.Count > 1 Then Exit Sub
    
    xRangeStr = "B2"
    
    Set tRange = Range("B7")
    If Not tRange Is Nothing Then
        xRangeStr = tRange.Address
        Application.EnableEvents = False
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
        tSheet1.Range(xRangeStr).Value = Target.Value
        Application.EnableEvents = True
    End If
    
End Sub
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 크리스탈님,

귀하의 응답에 감사드립니다. 귀하의 코드가 작동했습니다! 동일한 기능이 필요한 b2 및 b7, b3 및 b8 바로 아래에 셀이 있습니다. 아래와 같이 코드를 다시 작성하려고 시도했지만 작동하지 않았습니다. b7을 변경할 때 b8 대신 b3이 변경되었습니다. 내가 무엇을 잘못하고 있는지 식별할 수 있습니까?

정말 감사 해요!

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221025
    Dim tSheet1 As Worksheet
    Dim tRange1 As Range
    Dime tRange2 As Range
    Dim xRangeStr1 As String
    Dim xRangeStr2 As String
    On Error Resume Next
    If Target.Count > 1 Then Exit Sub
    
    xRangeStr1 = "B2"
    xRangeStr2="B3"
    
    Set tRange1 = Range("B7")
    If Not tRange1 Is Nothing Then
        xRangeStr1 = tRange1.Address
        Application.EnableEvents = False
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
        tSheet1.Range(xRangeStr1).Value = Target.Value
        Application.EnableEvents = True
    End If
    
    Set tRange2 = Range("B8")
    If Not tRange2 Is Nothing Then
        xRangeStr2 = tRange2.Address
        Application.EnableEvents = False
        Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
        tSheet1.Range(xRangeStr2).Value = Target.Value
        Application.EnableEvents = True
    End If

End Sub
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
안녕하세요 E,
위에 답변드린 VBA 코드에 문제가 있습니다.
귀하가 언급한 새로운 질문에 대해 다음 코드를 시도하십시오.

Private Sub Worksheet_Change(ByVal Target As Range)
'Updated by Extendoffice 20221031
    
    Dim xBool1 As Boolean
    Dim xBool2 As Boolean
    Dim xRgStr As String
    Dim tRange As Range
    
    xRangeStr1 = "B2"
    xRangeStr2 = "B3"
    xRgStr = ""
    
    On Error Resume Next
    If Target.Count > 1 Then Exit Sub
    xBool1 = Intersect(Target, Range(xRangeStr1)) Is Nothing
    xBool2 = Intersect(Target, Range(xRangeStr2)) Is Nothing
    
    If xBool1 And xBool2 Then Exit Sub
    
    xRgStr = Target.Address(False, False, xlA1, False, False)
    
    If Target.Address(False, False, xlA1, False, False) = xRangeStr1 Then
        xRgStr = "b7"
    ElseIf Target.Address(False, False, xlA1, False, False) = xRangeStr2 Then
        xRgStr = "b8"
    End If
    If xRgStr = "" Then Exit Sub
    
    Application.EnableEvents = False
    Set tSheet1 = ActiveWorkbook.Worksheets("Sheet7")
    tSheet1.Range(xRgStr).Value = Target.Value
    Application.EnableEvents = True

End Sub
이 댓글은 사이트의 중재자에 의해 최소화되었습니다
결정,

귀하의 응답에 감사드립니다. 시트 6의 B3과 동기화해야 하는 동일한 시트 8, B7에 다른 셀을 추가하도록 코드를 수정하려면 어떻게 해야 합니까? 나는 그것을 아래에서 수정하려고 시도했지만 B3 대신 시트 6에 B7의 시트 7에 있는 B8의 내용을 넣는 것으로 끝납니다.


개인 하위 Worksheet_Change (범위로 ByVal 대상)
'에 의해 업데이트됨 Extendoffice 20221025
Dim tSheet1을 워크시트로
범위로 희미한 tRange1
범위로 희미한 tRange2
Dim xRangeStr1을 문자열로
Dim xRangeStr2을 문자열로
오류에 대한 다음 재개
Target.Count > 1이면 Sub 종료

xRangeStr1 = "B2"
xRangeStr2 = "B3"

설정 tRange1 = 범위("B7")
tRange1이 아무것도 아닌 경우
xRangeStr1 = tRange1.주소
Application.EnableEvents = False
tSheet1 = ActiveWorkbook.Worksheets("Sheet7") 설정
tSheet1.Range(xRangeStr1).값 = 대상.값
Application.EnableEvents = True
END IF

설정 tRange2 = 범위("B8")
tRange2이 아무것도 아닌 경우
xRangeStr2 = tRange2.주소
Application.EnableEvents = False
tSheet1 = ActiveWorkbook.Worksheets("Sheet7") 설정
tSheet1.Range(xRangeStr2).값 = 대상.값
Application.EnableEvents = True
END IF

최종 하위
아직 코멘트가 없습니다

Follow Us

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