Code VBA trong excel lấy dữ liệu của từng tháng

Liên hệ QC

venecon

Thành viên mới
Tham gia
5/1/11
Bài viết
6
Được thích
3
Em chào anh/ chị ạ
Em gặp một khó khăn trong việc chạy Macro nhờ anh chị giúp đỡ em với ạ

Em muốn lấy kết quả của một ô dữ liệu tương ứng với từng tháng
tức là mỗi một tháng có một ô dữ liệu khác nhau, em muốn ô kết quả VD ô K3 tại tháng 1 thì nó tự lấy dữ liệu của tháng 1, đến tháng 2 thì tại ô K3 lấy dữ liệu của tháng 2
Nhưng khi em chạy Macro thì tháng 2 nó vẫn lấy dữ liệu của tháng 1, làm sao để tự động sang tháng tiếp theo khi mình chạy báo cáo nó tự lấy dữ liệu lên cột tiếp theo ạ

P/s: Em không dùng hàm Hlookup vì ô kết quả đó em còn dùng liên kết với nhiều ô khác nhau để tính toán nữa, em chạy báo cáo VBA trong đó có ô kết quả cần tự động tính để phục vụ chạy các dữ liệu khác. trên vd trên em chỉ minh họa đơn giản vậy thôi.
 

File đính kèm

  • chạy macro.xls
    28.5 KB · Đọc: 21
Lần chỉnh sửa cuối:
Em chào anh/ chị ạ
Em gặp một khó khăn trong việc chạy Macro nhờ anh chị giúp đỡ em với ạ

Em muốn lấy kết quả của một ô dữ liệu tương ứng với từng tháng
tức là mỗi một tháng có một ô dữ liệu khác nhau, em muốn ô kết quả VD ô K3 tại tháng 1 thì nó tự lấy dữ liệu của tháng 1, đến tháng 2 thì tại ô K3 lấy dữ liệu của tháng 2
Nhưng khi em chạy Macro thì tháng 2 nó vẫn lấy dữ liệu của tháng 1, làm sao để tự động sang tháng tiếp theo khi mình chạy báo cáo nó tự lấy dữ liệu lên cột tiếp theo ạ
Cthức được không
K3=HLOOKUP(K2;B1:G2;2;0)
 
Upvote 0
Em chào anh/ chị ạ
Em gặp một khó khăn trong việc chạy Macro nhờ anh chị giúp đỡ em với ạ

Em muốn lấy kết quả của một ô dữ liệu tương ứng với từng tháng
tức là mỗi một tháng có một ô dữ liệu khác nhau, em muốn ô kết quả VD ô K3 tại tháng 1 thì nó tự lấy dữ liệu của tháng 1, đến tháng 2 thì tại ô K3 lấy dữ liệu của tháng 2
Nhưng khi em chạy Macro thì tháng 2 nó vẫn lấy dữ liệu của tháng 1, làm sao để tự động sang tháng tiếp theo khi mình chạy báo cáo nó tự lấy dữ liệu lên cột tiếp theo ạ
Mình cũng thấy đề bài này dùng hlookup là ổn rồi
 
Upvote 0
Cthức được không
K3=HLOOKUP(K2;B1:G2;2;0)
Tại ô kết quả đó em còn dùng liên kết với nhiều ô khác nhau để tính toán nữa, em chạy báo cáo VBA trong đó có ô kết quả cần tự động tính để phục vụ chạy các dữ liệu khác. trên vd trên em chỉ minh họa đơn giản vậy thôi.
Bài đã được tự động gộp:

Mình cũng thấy đề bài này dùng hlookup là ổn rồi
Tại ô kết quả đó em còn dùng liên kết với nhiều ô khác nhau để tính toán nữa, em chạy báo cáo VBA trong đó có ô kết quả cần tự động tính để phục vụ chạy các dữ liệu khác. trên vd trên em chỉ minh họa đơn giản vậy thôi.
Bài đã được tự động gộp:

Cthức được không
K3=HLOOKUP(K2;B1:G2;2;0)
Tại ô kết quả đó em còn dùng liên kết với nhiều ô khác nhau để tính toán nữa, em chạy báo cáo VBA trong đó có ô kết quả cần tự động tính để phục vụ chạy các dữ liệu khác. trên vd trên em chỉ minh họa đơn giản vậy thôi.
 
Upvote 0
Xài macro sự kiện như vầy:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, sRng As Range
If Not Intersect(Target, [K2]) Is Nothing Then
    Set Rng = Range([A1], [z1].End(xlToLeft))
 '   MsgBox Rng.Address   '
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        [K3].Value = sRng.Offset(1).Value
    End If
End If
End Sub

Nếu thích thì tại K2 bạn tao 1 danh sách sổ xuống mà xài cho tiện
 
Upvote 0
Tại ô kết quả đó em còn dùng liên kết với nhiều ô khác nhau để tính toán nữa, em chạy báo cáo VBA trong đó có ô kết quả cần tự động tính để phục vụ chạy các dữ liệu khác. trên vd trên em chỉ minh họa đơn giản vậy thôi.
Bài đã được tự động gộp:


Tại ô kết quả đó em còn dùng liên kết với nhiều ô khác nhau để tính toán nữa, em chạy báo cáo VBA trong đó có ô kết quả cần tự động tính để phục vụ chạy các dữ liệu khác. trên vd trên em chỉ minh họa đơn giản vậy thôi.
Bài đã được tự động gộp:


Tại ô kết quả đó em còn dùng liên kết với nhiều ô khác nhau để tính toán nữa, em chạy báo cáo VBA trong đó có ô kết quả cần tự động tính để phục vụ chạy các dữ liệu khác. trên vd trên em chỉ minh họa đơn giản vậy thôi.
Vậy bạn cứ đưa file gốc lên đi, hoặc tương tự. Các anh chị khác vào thấy file cũng dễ giúp, chứ bạn đưa nhiêu đó rồi làm xong bạn lại bảo ko đúng ý nữa
 
Upvote 0
Vậy bạn cứ đưa file gốc lên đi, hoặc tương tự. Các anh chị khác vào thấy file cũng dễ giúp, chứ bạn đưa nhiêu đó rồi làm xong bạn lại bảo ko đúng ý nữa
Có nhiêu làm nhiêu; Nếu tác giả bài đăng thêm khác thì tiếp tục theo khả năng!
 
Upvote 0
Giải pháp hay nhất vẫn là thiết kế của file, còn sử lý một tác vụ như thế này chỉ cần đoạn code sau:

Sub get_data_from_range()

Dim resrgn As Range, col As Long

Set resrgn = ActiveSheet.Range("K3")
Set crirgn = ActiveSheet.Range("K2")

For col = 2 To 7
If crirgn = ActiveSheet.Cells(1, col) Then
resrgn = ActiveSheet.Cells(2, col): Exit Sub
End If
Next col

End Sub
 
Upvote 0
Giải pháp hay nhất vẫn là thiết kế của file, còn sử lý một tác vụ như thế này chỉ cần đoạn code sau:

Sub get_data_from_range()

Dim resrgn As Range, col As Long

Set resrgn = ActiveSheet.Range("K3")
Set crirgn = ActiveSheet.Range("K2")

For col = 2 To 7
If crirgn = ActiveSheet.Cells(1, col) Then
resrgn = ActiveSheet.Cells(2, col): Exit Sub
End If
Next col

End Sub
cảm ơn anh nhiều em làm được rồi ạ
Bài đã được tự động gộp:

Xài macro sự kiện như vầy:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Rng As Range, sRng As Range
If Not Intersect(Target, [K2]) Is Nothing Then
    Set Rng = Range([A1], [z1].End(xlToLeft))
'   MsgBox Rng.Address   '
    Set sRng = Rng.Find(Target.Value, , xlFormulas, xlWhole)
    If Not sRng Is Nothing Then
        [K3].Value = sRng.Offset(1).Value
    End If
End If
End Sub

Nếu thích thì tại K2 bạn tao 1 danh sách sổ xuống mà xài cho tiện
cảm ơn anh ạ
 
Upvote 0
Web KT

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

Back
Top Bottom