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

Làm cách nào để đồng bộ hóa danh sách thả xuống trong nhiều trang tính trong Excel?

Giả sử bạn có danh sách thả xuống trên một số trang tính trong sổ làm việc chứa chính xác các mục thả xuống giống nhau. Bây giờ bạn muốn đồng bộ hóa danh sách thả xuống trên các trang tính để sau khi bạn chọn một mục từ danh sách thả xuống trong một trang tính, danh sách thả xuống trong các trang tính khác sẽ tự động được đồng bộ hóa cùng một lựa chọn. Bài viết này cung cấp mã VBA để giúp bạn giải quyết vấn đề này.

Đồng bộ hóa danh sách thả xuống trong nhiều trang tính với mã VBA


Đồng bộ hóa danh sách thả xuống trong nhiều trang tính với mã VBA

Ví dụ: danh sách thả xuống nằm trong năm trang tính có tên Trang tính1, Trang tính2, ..., Trang tính 5, để đồng bộ hóa danh sách thả xuống trong các trang tính khác theo lựa chọn thả xuống trong Sheet1, vui lòng áp dụng mã VBA sau để hoàn tất.

1. Mở Sheet1, nhấp chuột phải vào tab trang tính và chọn Mã Chế độ xem từ menu chuột phải.

2. bên trong Microsoft Visual Basic cho các ứng dụng cửa sổ, dán mã VBA sau vào Sheet1 (Mã) cửa sổ.

Mã VBA: Đồng bộ hóa danh sách thả xuống trong nhiều trang tính

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

Ghi chú:

1) Trong mã, A2: A11 là phạm vi chứa danh sách thả xuống. Đảm bảo rằng tất cả danh sách thả xuống nằm trong cùng một phạm vi trên các trang tính khác nhau.
2) Trang tính2, Trang tính3, Trang tính4Sheet5 là các trang tính có chứa danh sách thả xuống mà bạn muốn đồng bộ hóa dựa trên danh sách thả xuống trong Sheet1;
3) Để thêm các trang tính khác trong mã, vui lòng thêm hai dòng sau trước dòng “Ứng dụng.EnableEvents = True”, Sau đó thay đổi tên trang tính“Sheet5”Đến tên bạn cần.
Đặt tSheet1 = ActiveWorkbook.Worksheets ("Sheet5")
tSheet1.Range (xRangeStr) .Value = Target.Value

3. Nhấn nút Khác + Q chìa khóa để đóng Microsoft Visual Basic cho các ứng dụng cửa sổ.

Từ bây giờ, khi bạn chọn một mục từ danh sách thả xuống trong Trang tính 1, danh sách thả xuống trong các trang tính được chỉ định sẽ được đồng bộ hóa tự động để có cùng lựa chọn. Xem bản trình diễn dưới đây.


Demo: Đồng bộ hóa danh sách thả xuống trong nhiều trang tính trong Excel


Các công cụ năng suất văn phòng tốt nhất

Kutools cho Excel giải quyết hầu hết các vấn đề của bạn và tăng 80% năng suất của bạn

  • Tái sử dụng: Chèn nhanh công thức phức tạp, biểu đồ và bất cứ thứ gì bạn đã sử dụng trước đây; Mã hóa ô với mật khẩu; Tạo danh sách gửi thư và gửi email ...
  • Thanh siêu công thức (dễ dàng chỉnh sửa nhiều dòng văn bản và công thức); Bố cục đọc (dễ dàng đọc và chỉnh sửa số lượng ô lớn); Dán vào Dải ô đã Lọchữu ích. Cảm ơn !
  • Hợp nhất các ô / hàng / cột mà không làm mất dữ liệu; Nội dung phân chia ô; Kết hợp các hàng / cột trùng lặp... Ngăn chặn các ô trùng lặp; So sánh các dãyhữu ích. Cảm ơn !
  • Chọn trùng lặp hoặc duy nhất Hàng; Chọn hàng trống (tất cả các ô đều trống); Tìm siêu và Tìm mờ trong Nhiều Sổ làm việc; Chọn ngẫu nhiên ...
  • Bản sao chính xác Nhiều ô mà không thay đổi tham chiếu công thức; Tự động tạo tài liệu tham khảo sang Nhiều Trang tính; Chèn Bullets, Hộp kiểm và hơn thế nữa ...
  • Trích xuất văn bản, Thêm Văn bản, Xóa theo Vị trí, Xóa không gian; Tạo và In Tổng số phân trang; Chuyển đổi giữa nội dung ô và nhận xéthữu ích. Cảm ơn !
  • Siêu lọc (lưu và áp dụng các lược đồ lọc cho các trang tính khác); Sắp xếp nâng cao theo tháng / tuần / ngày, tần suất và hơn thế nữa; Bộ lọc đặc biệt bằng cách in đậm, in nghiêng ...
  • Kết hợp Workbook và WorkSheets; Hợp nhất các bảng dựa trên các cột chính; Chia dữ liệu thành nhiều trang tính; Chuyển đổi hàng loạt xls, xlsx và PDFhữu ích. Cảm ơn !
  • Hơn 300 tính năng mạnh mẽ. Hỗ trợ Office / Excel 2007-2021 và 365. Hỗ trợ tất cả các ngôn ngữ. Dễ dàng triển khai trong doanh nghiệp hoặc tổ chức của bạn. Đầy đủ tính năng Dùng thử miễn phí 30 ngày. Bảo đảm hoàn lại tiền trong 60 ngày.
tab kte 201905

Tab Office mang lại giao diện Tab cho Office và giúp công việc của bạn trở nên dễ dàng hơn nhiều

  • Cho phép chỉnh sửa và đọc theo thẻ trong Word, Excel, PowerPoint, Publisher, Access, Visio và Project.
  • Mở và tạo nhiều tài liệu trong các tab mới của cùng một cửa sổ, thay vì trong các cửa sổ mới.
  • Tăng 50% năng suất của bạn và giảm hàng trăm cú nhấp chuột cho bạn mỗi ngày!
officetab dưới cùng
Nhận xét (5)
Chưa có xếp hạng. Hãy là người đầu tiên xếp hạng!
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào,

Làm cách nào để thực hiện việc này nếu các danh sách thả xuống của tôi nằm trong các phạm vi khác nhau? Để nói rõ hơn, tôi có một danh sách thả xuống trong trang tính 7 nằm trong ô B7 và cùng một danh sách thả xuống trên trang tính 6 trong ô B2.

Cảm ơn bạn,
Elaine
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào E,
Mã VBA sau đây có thể giúp bạn.
Ở đây tôi lấy Sheet6 làm trang tính chính, nhấp chuột phải vào tab trang tính, chọn Mã Chế độ xem từ menu chuột phải, sau đó sao chép đoạn mã sau trong cửa sổ (Mã) Trang tính. Khi bạn chọn bất kỳ mục nào từ danh sách thả xuống trong B6 của Sheet2, danh sách thả xuống trong B6 của Sheet7 sẽ được đồng bộ hóa để có cùng một mục đã chọn.

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
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Xin chào Crystal,

Cảm ơn bạn rất nhiều vì phản hồi của bạn, mã của bạn đã hoạt động! Tôi có một ô ngay dưới b2 và b7, b3 và b8 tương ứng cần có chức năng tương tự. Tôi đã cố gắng viết lại mã của bạn như được hiển thị bên dưới, tuy nhiên điều này không hoạt động. Nó khiến b7 thay vì b8 thay đổi khi tôi thay đổi b3. Bạn có thể xác định những gì tôi đang làm sai?

Cảm ơn bạn rất nhiều!

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
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Chào E,
Có điều gì đó sai với mã VBA mà tôi đã trả lời cho bạn ở trên.
Đối với câu hỏi mới mà bạn đã đề cập, vui lòng thử mã sau.

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
Nhận xét này đã được giảm thiểu bởi người điều hành trên trang web
Pha lê,

Cảm ơn bạn rất nhiều vì phản hồi của bạn, điều này đã hiệu quả! Làm cách nào tôi có thể sửa đổi mã để thêm một ô khác trong cùng một trang 6, B3 cũng cần được đồng bộ hóa với B8 trong trang 7? Tôi đã cố gắng sửa đổi nó bên dưới, tuy nhiên nó kết thúc bằng việc đưa nội dung của B3 trên trang 6 trong B7 trên trang 7 thay vì B8.


Private Sub Worksheet_Change (ByVal Target As Range)
'Cập nhật Extendoffice 20221025
Dim tSheet1 dưới dạng trang tính
Dim tRange1 dưới dạng phạm vi
Dim tRange2 dưới dạng phạm vi
Dim xRangeStr1 dưới dạng Chuỗi
Dim xRangeStr2 dưới dạng Chuỗi
On Error Resume Next
If Target.Count> 1 Then Exit Sub

xRangeStr1 = "B2"
xRangeStr2 = "B3"

Đặt tRange1 = Range ("B7")
Nếu không tRange1 thì không có gì
xRangeStr1 = tRange1.Địa chỉ
Application.EnableEvents = Sai
Đặt tSheet1 = ActiveWorkbook.Worksheets ("Sheet7")
tSheet1.Range (xRangeStr1) .Value = Target.Value
Ứng dụng.EnableEvents = True
Cuối Nếu

Đặt tRange2 = Range ("B8")
Nếu không tRange2 thì không có gì
xRangeStr2 = tRange2.Địa chỉ
Application.EnableEvents = Sai
Đặt tSheet1 = ActiveWorkbook.Worksheets ("Sheet7")
tSheet1.Range (xRangeStr2) .Value = Target.Value
Ứng dụng.EnableEvents = True
Cuối Nếu

End Sub
Không có bình luận nào được đăng ở đây
Để lại ý kiến ​​của bạn
Đăng với tư cách khách
×
Đánh giá bài viết này:
0   Nhân vật
Các vị trí được đề xuất

Kết nối với chúng tôi

Bản quyền © 2009 - www.extendoffice.com. | Đã đăng ký Bản quyền. cung cấp bởi ExtendOffice. | BẢN ĐỒ CHI NHÁNH
Microsoft và logo Office là các nhãn hiệu hoặc nhãn hiệu đã đăng ký của Microsoft Corporation tại Hoa Kỳ và / hoặc các quốc gia khác.
Được bảo vệ bởi Sectigo SSL