Target.Address lấy giá trị sheet khác

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Trong file đính kèm, mỗi khi bấm vào hình tròn màu đỏ sheet "View" để chọn 1 tỉnh thành thì dữ liệu B12:D25 sẽ TỰ ĐỘNG CẬP NHẬT theo dữ liệu sheet "Customer". Hiện tại mình đang dùng ô phụ L5 sheet "View" để cập nhật thủ công, không chuyên nghiệp và tốn thời gian.

Vì tập tin của bạn chứa dữ liệu tiếng nước ngoài nên tôi không biết cái gì là gì.

Bạn nên miêu tả cụ thể bằng 1 ví dụ. Vd. tôi nhấn nút đỏ của Bình định thì TextBox 26 sẽ hiện "BINH DINH". Tiếp theo bạn muốn kéo dữ liệu từ Customer sang View. Nhưng dựa trên tiêu chí nào? Tiêu chí "BINH DINH"? Nhưng người không biết ngôn ngữ "kia" làm sao biết được BINH DINH nó ở đâu để mà tìm? Hay là kéo từ data chứ không phải là kéo từ Customer?

Mà dù kéo từ sheet nào thì cũng dùng công thức được chứ nhỉ.

Mà thôi. Nếu bạn muốn người khác giúp thì giải thích cặn kẽ. Giả sử tôi chọn BINH DINH thì code phải làm những gì, cụ thể từng bước một: lấy cái gì trên cơ sở nào, xào nấu ra sao và theo tiêu chí nào v…v

Góp ý ngoài lề:
– không nên chèn hàng loạt shape ở dạng nút đỏ.
– không nên có hàng loạt sub Sub QuangTri, Sub ThuaThienHue …

Khi tạo bản đồ thì gán cho các shape những tên như QuangTri, ThuaThienHue … Lúc đó chỉ dùng 1 sub TINH gán (Assign macro) cho tất cả các shape. Trong sub TINH code sẽ xác định shape nào được nhấn từ đó có tên Tỉnh.

Bạn tạo bản đồ bằng cách nào vì tôi không thấy code tạo bản đồ? Tôi nghĩ là bạn chạy code 1 lần để tạo bản đồ rồi xóa code rồi. Nếu các shape trong data không cần nữa thì xóa đi cho nhẹ tập tin chứ nhỉ.

Vì Dashboard này để báo cáo cho các sếp nước ngoài xem nên mình mới dùng tiếng Trung.
Tại sheet View, hiện tại khi nhấn nút đỏ các tỉnh thì chỉ có dữ liệu của các biểu đồ thay đổi, còn dữ liệu B12:D25 phải bấm chọn ô L5 mới hiện ra.
Yêu cầu của mình là: Khi nhấn nút đỏ của Bình Định thì TextBox 26 sẽ hiện "BINH DINH" và dữ liệu từ B12:D15 sheet View sẽ kéo dữ liệu từ A40:C43 sheet Customer bỏ qua. Thao tác tương tự lập lại cho các nút đỏ của tỉnh thành khác.
Bản đồ không có code nào hết nhé bạn.

Bạn giúp mình chỉnh cái này luôn nhé:
Góp ý ngoài lề:
– không nên chèn hàng loạt shape ở dạng nút đỏ.
– không nên có hàng loạt sub Sub QuangTri, Sub ThuaThienHue …

Khi tạo bản đồ thì gán cho các shape những tên như QuangTri, ThuaThienHue … Lúc đó chỉ dùng 1 sub TINH gán (Assign macro) cho tất cả các shape. Trong sub TINH code sẽ xác định shape nào được nhấn từ đó có tên Tỉnh.

Tôi đã yêu cầu rất rõ. Nếu không hiểu thì không ai giúp được.

Yêu cầu của mình là: Khi nhấn nút đỏ của Bình Định thì TextBox 26 sẽ hiện "BINH DINH" và dữ liệu từ B12:D15 sheet View sẽ kéo dữ liệu từ A40:C43 sheet Customer bỏ qua.

Cụ thể là thế nào nếu tôi nhấn BINH DINH? Căn cứ vào đâu, dựa trên cái gì, để lấy từ đâu. Hãy liệt kê tỉ mỉ tất cả các bước "B12: D15 sheet View sẽ kéo dữ liệu từ A40:C43 sheet Customer ". Tôi không muốn bỏ công ra dò xem bạn làm như thế nào khi chính bạn có thể nói qua.

Thì bản thân tôi cũng nói là không có code tạo bản đồ. Vì thế tôi hỏi bạn đã tạo ra bằng cách nào. Từ các shape bên sheet data? Muốn gộp các phần sau thì phải đặt tên cho các shape tỉnh ngay trong quá trình tạo bản đồ. Vì thế tôi hỏi. Nếu bạn muốn tôi có thể tạo cho bạn bản đồ vì tôi có các tọa độ của các tỉnh. Lúc đó không dùng các shape của bạn trong sheet data.

Bản phải giải thích chi tiết. Mà thực ra cũng không bắt buộc. Tùy bạn chọn thôi. Nói sao cho người khác hiểu.

Sheet View dòng code như dưới:

[I]Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$L&$5" Then TR

End Sub
--------------------------------------------------------------------
Sub TR()
Application.ScreenUpdating = False
Sheets("View").Select
Range("A3:E65536").Clear
Sheets("Customer").Select
Range("A3.D65536").AdvancedFilter _
xlFilterCopy, [F1.F2], Sheets("View").[B11]
Sheets("View").Select
Range("E:E").Select
Selection.EntireColumn.Hidden = True
    Range("B12:D25").ShrinkToFit = True

Application.ScreenUpdating = True
End Sub[/I]

Vị trí L5 trong đoạn code If Target.Address = "$L&$5" Then TR nếu lấy từ địa chỉ F2 sheet Customer thì chỉnh thành đoạn code thế nào?

Vấn đề của bạn mà bạn không thể mô tả từ A tới Z? Đừng mô tả từ H đến N.
Tôi mô tả từ A tới Z theo cách hiểu của tôi. Đúng ý thì tốt, ngược lại thì thôi.

"Khi nhấn mỗi nút đỏ được gán cho một tỉnh cụ thể thì code thực hiện các bước: nhập tên tỉnh hiện hành vào X3,X10,X17,X19,X21,X23,X25,X27,X29,X31,X33 -> nhập tên tỉnh vào TextBox 26 -> nhập tên tỉnh bằng tiếng Trung vào data!T2 -> nhập data!T2 vào TextBox 168 -> lọc Customer!A: D theo cột D – cột province với điều kiện là data!T2 (tên tỉnh bằng tiếng Trung)"

Tôi hướng dẫn cho mô tả ở trên.

1. Trước hết là code
– xóa code trong sheet View
– xóa toàn bộ code trong Module1 và thay bằng

Sub Overview()

Sheets("data").Range("X3,X10,X17,X19,X21,X23,X25,X27,X29,X31,X33") = "Overview"
ActiveSheet.Shapes.Range(Array("TextBox 26")).Select
    Selection.ShapeRange(1).TextFrame2.TextRange.Characters.Text = "OVERVIEW"

End Sub

Sub write_province()
Dim province As String
    province = Application.Caller
    Sheets("data").Range("X3,X10,X17,X19,X21,X23,X25,X27,X29,X31,X33") = province
    ActiveSheet.Shapes("TextBox 26").TextFrame2.TextRange.Characters.Text = province
    filter_data Worksheets("data").Range("T2").Value
End Sub

Sub filter_data(ByVal province As String)
Dim lastRow As Long, r As Long, c As Long, count As Long, data()
    With ThisWorkbook.Worksheets("View")
        lastRow = .Cells(Rows.count, "E").End(xlUp).Row
        If lastRow > 11 Then .Range("B12:E" & lastRow).ClearContents
    End With
    With ThisWorkbook.Worksheets("Customer")
        lastRow = .Cells(Rows.count, "B").End(xlUp).Row
        If lastRow < 4 Then Exit Sub
        data = .Range("A4:D" & lastRow).Value
    End With
    For r = 1 To UBound(data)
        If data(r, 4) = province Then
            count = count + 1
            For c = 1 To 4
                data(count, c) = data(r, c)
            Next c
        End If
    Next r
    If count Then ThisWorkbook.Worksheets("View").Range("B12").Resize(count, 4).Value = data
End Sub

2. Chỉnh sửa sheet
– xóa Customer!F1:F2
– xóa View!O3
– phải chuột trên nút đỏ của Quanh Tri -> trong Name Box ở bên trái của thanh công thức sửa thành Quang Tri -> Với các nút đỏ khác (chỉ các nút đỏ đi với các tỉnh) làm tương tự và nhập tỉnh thích hợp với từng nút. Các tên tỉnh phải đúng như các tên có trong cột data!B
– phải chuột trên nút đỏ của Quanh Tri -> chọn Assign Macro -> chọn write_province. Với các nút đỏ khác (chỉ các nút đỏ đi với các tỉnh) làm tương tự và cũng chọn write_province

www.giaiphapexcel.com/diendan/threads/target-address-l%E1%BA%A5y-gi%C3%A1-tr%E1%BB%8B-sheet-kh%C3%A1c.140534/

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM
Khóa học SprinGO phù hợp

Thiết kế Tổng đãi ngộ (Total Rewards) theo khung SHRM

Khóa học “Thiết kế Tổng phần thưởng (Total Reward) chuẩn khung SHRM” giúp bạn nắm vững toàn bộ hệ thống đãi ngộ theo chuẩn...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm