Lấy số liệu từ nhiều sheet, dựa vào Tên Sheet & Mã. (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

dongducnhiem

Thành viên tiêu biểu
Tham gia
21/3/07
Bài viết
637
Được thích
378
Chào các bạn!
Nhờ các bạn giúp đỡ viết đoạn code như sau
Tôi muốn tổng hợp số liệu vào Sheet TongHop từ các Sheet Thang01, Thang02, ... đến Thang12
Thí dụ:Lấy số liệu cho ô J3 của Sheet TongHop: nó sẽ dựa vào ô I3 là Thang01 và ô J2 là 511, như vậy nó sẽ tìm ở Sheet Thang01, tìm 511 trong cột B của Sheet này, nếu tìm thấy thì sẽ lấy số liệu ở cột E (cùng dòng với nó)
Các Sheet Thang01, Thang02, ... đến Thang12 có cấu trúc như nhau

Mong các bạn giúp mình để mình có thể tự giải quyết các vấn đề khác của mình!
Trong File đính kèm, mình có giải thích ,Cảm ơn các bạn!
-----------
P/S: Nếu có gì chưa rõ, xin vui lòng hồi đáp để mình giải thích để tránh mất thời gian & công sức các bạn
 

File đính kèm

Chào các bạn!
Nhờ các bạn giúp đỡ viết đoạn code như sau
---
P/S: Nếu có gì chưa rõ, xin vui lòng hồi đáp để mình giải thích để tránh mất thời gian & công sức các bạn
Giả sử các tháng cùng form
Mã:
=VLOOKUP(J$2,INDIRECT("'"&$I3&"'!B10:E1000"),4,0)
Sry, nhầm box Lập trình.
 
Lần chỉnh sửa cuối:
Upvote 0
Giả sử các tháng cùng form
Mã:
=VLOOKUP(J$2,INDIRECT("'"&$I3&"'!B10:E1000"),4,0)
Cảm ơn bạn, mình cũng đang sử dụng các công thức, nhưng vì File quá nhiều công thức nên nặng vì thế đang muốn chuyển dần qua code. Vả lại mình muốn áp dụng code cho những vấn đề thực tế khác của mình.
Mong các bạn giúp đỡ
 
Upvote 0
Chào các bạn!
Nhờ các bạn giúp đỡ viết đoạn code như sau
Tôi muốn tổng hợp số liệu vào Sheet TongHop từ các Sheet Thang01, Thang02, ... đến Thang12
Thí dụ:Lấy số liệu cho ô J3 của Sheet TongHop: nó sẽ dựa vào ô I3 là Thang01 và ô J2 là 511, như vậy nó sẽ tìm ở Sheet Thang01, tìm 511 trong cột B của Sheet này, nếu tìm thấy thì sẽ lấy số liệu ở cột E (cùng dòng với nó)
Các Sheet Thang01, Thang02, ... đến Thang12 có cấu trúc như nhau

Mong các bạn giúp mình để mình có thể tự giải quyết các vấn đề khác của mình!
Trong File đính kèm, mình có giải thích ,Cảm ơn các bạn!
-----------
P/S: Nếu có gì chưa rõ, xin vui lòng hồi đáp để mình giải thích để tránh mất thời gian & công sức các bạn

Bạn xài thử code này. Mình test thì thấy đúng rồi
Tại J3 nhập =Tk($I3,J$2) rồi fill sang các ô khác
PHP:
Function TK(thang As Range, taikhoan As Range) As Double
Dim tim As Range
Set tim = Sheets(thang.Value).[B:B].Find(taikhoan, , , xlWhole)
If Not tim Is Nothing Then
   TK = tim.Offset(, 3)
Else
   TK = "Not Found"
End If
End Function
 
Upvote 0
Bạn xài thử code này. Mình test thì thấy đúng rồi
Tại J3 nhập =Tk($I3,J$2) rồi fill sang các ô khác
PHP:
Function TK(thang As Range, taikhoan As Range) As Double
Dim tim As Range
Set tim = Sheets(thang.Value).[B:B].Find(taikhoan, , , xlWhole)
If Not tim Is Nothing Then
   TK = tim.Offset(, 3)
Else
   TK = "Not Found"
End If
End Function
Cảm ơn sự giúp đỡ của bạn Quanghai1969, bạn có thể viết code, để khi mình nhấn nút thì nó chạy code, vì trong File của mình đã có quá nhiều cthức nên phải bấm F9 liên tục!
Mong sự giúp đỡ của bạn thêm 1 lần nữa!
---------
P/s: Cthức của bạn chính xác rồi!
 
Upvote 0
Cảm ơn sự giúp đỡ của bạn Quanghai1969, bạn có thể viết code, để khi mình nhấn nút thì nó chạy code, vì trong File của mình đã có quá nhiều cthức nên phải bấm F9 liên tục!
Mong sự giúp đỡ của bạn thêm 1 lần nữa!
---------
P/s: Cthức của bạn chính xác rồi!
Muốn nhấn nút mới chạy code thì bạn thêm 1 Sub (nếu có nhu cầu sử dụng hàm TK nhiều lần, nhiều nơi), trong Sub này có sử dụng hàm TK, hoặc chuyển hẳn Function TK thành Sub (nếu chỉ muốn gán giá trị tìm kiếm ở một vài chỗ). Bạn cứ thử xem.
 
Upvote 0
Cảm ơn sự giúp đỡ của bạn Quanghai1969, bạn có thể viết code, để khi mình nhấn nút thì nó chạy code, vì trong File của mình đã có quá nhiều cthức nên phải bấm F9 liên tục!
Mong sự giúp đỡ của bạn thêm 1 lần nữa!
---------
P/s: Cthức của bạn chính xác rồi!
Nó đây:
Mã:
Public Sub TongHop()
    Dim Vung As Variant, Kq As Variant, I As Long, Sh As Worksheet, d As Object
    Dim TaiKhoan As Range, K As Long, iHang As Long
    Set TaiKhoan = Sheets("TongHop").Range(Sheets("TongHop").[J2], Sheets("TongHop").[J2].End(xlToRight))
    ReDim Kq(1 To 12, 1 To TaiKhoan.Columns.Count)
    Set d = CreateObject("scripting.dictionary")
        For I = 1 To TaiKhoan.Columns.Count
        K = K + 1
        d.Add TaiKhoan(I).Value, K
        Next I
            For Each Sh In Worksheets
                iHang = Val(Right(Sh.Name, 2))
                If Sh.Name <> "TongHop" Then
                    Vung = Sh.Range(Sh.[B10], Sh.[B50000].End(xlUp)).Resize(, 4)
                    For I = 1 To UBound(Vung)
                        If d.exists(Vung(I, 1)) Then Kq(iHang, d.Item(Vung(I, 1))) = Vung(I, 4)
                    Next I
                End If
            Next Sh
    [J3].Resize(12, TaiKhoan.Columns.Count) = Kq
End Sub
Phải bảo đảm Mã Tài khoản trong các sheet khác sheet "TongHop" là duy nhất, nếu không .....phải viết lại. Híc
Thân
 

File đính kèm

Upvote 0
Cảm ơn sự giúp đỡ của bạn Quanghai1969, bạn có thể viết code, để khi mình nhấn nút thì nó chạy code, vì trong File của mình đã có quá nhiều cthức nên phải bấm F9 liên tục!
Mong sự giúp đỡ của bạn thêm 1 lần nữa!
---------
P/s: Cthức của bạn chính xác rồi!
Bài này nếu sửa lại tiêu đề dữ liệu cho hợp lý (không có tiêu đề nào trùng tên như NỢ và CÓ) thì hoàn toàn có thể dùng PivotTable để giải quyết
Ví dụ:

Untitled.jpg
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Cảm ơn sự giúp đỡ của bạn Quanghai1969, bạn có thể viết code, để khi mình nhấn nút thì nó chạy code, vì trong File của mình đã có quá nhiều cthức nên phải bấm F9 liên tục!
Mong sự giúp đỡ của bạn thêm 1 lần nữa!
---------
P/s: Cthức của bạn chính xác rồi!
Tham khảo code thế này, nhưng tốt nhất bạn tự xử thì sẽ tự nhận ra nhiều điều hay.
PHP:
Sub QH()
Dim data(), i, j, tim As Range, sh As Worksheet
data = Sheets("Tonghop").[I2:T14].Value
For i = 2 To 13
   For Each sh In Worksheets
      If sh.Name = data(i, 1) Then
         For j = 2 To 12
            Set tim = Sheets(data(i, 1)).[B:B].Find(data(1, j), , , 1)
            If Not tim Is Nothing Then
               data(i, j) = tim.Offset(, 3)
            End If
         Next
      End If
   Next
Next
Sheets("Tonghop").[I2].Resize(13, 12) = data
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0

Bài viết mới nhất

Back
Top Bottom