Tạo code tự động cho bảng tổng hợp công nợ

Liên hệ QC

satthuvae

Thành viên thường trực
Tham gia
12/3/09
Bài viết
381
Được thích
52
Em chào mọi người
Em có bảng tổng hợp công nợ khoảng 1000 dòng, trong đó có nhiều tài khoản ( Hay nói cách khác là nhiều điều kiện để chọn) nhưng do em đang làm thủ cộng là lọc điệu kiện để xem. Em hỏi có thể tạo code tự động khi nhập điều kiện cần để ra bảng mình cần.
Em gửi ví dụ lên, mọi người xem giùm em. Em xin cám ơn.
 

File đính kèm

  • Bảng tổng hợp công nợ tự động.rar
    708.2 KB · Đọc: 76
Em chào mọi người
Em có bảng tổng hợp công nợ khoảng 1000 dòng, trong đó có nhiều tài khoản ( Hay nói cách khác là nhiều điều kiện để chọn) nhưng do em đang làm thủ cộng là lọc điệu kiện để xem. Em hỏi có thể tạo code tự động khi nhập điều kiện cần để ra bảng mình cần.
Em gửi ví dụ lên, mọi người xem giùm em. Em xin cám ơn.
Paste code này vô sheet "Cong no" rồi nhập 131 hoặc 331 vào D2 nhé:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
 If Target.Address = "$D$2" Then
   [A4:I10000].AdvancedFilter 1, [D1:D2]
 End If
Application.ScreenUpdating = True
End Sub
 
Em chào mọi người
Em có bảng tổng hợp công nợ khoảng 1000 dòng, trong đó có nhiều tài khoản ( Hay nói cách khác là nhiều điều kiện để chọn) nhưng do em đang làm thủ cộng là lọc điệu kiện để xem. Em hỏi có thể tạo code tự động khi nhập điều kiện cần để ra bảng mình cần.
Em gửi ví dụ lên, mọi người xem giùm em. Em xin cám ơn.

Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr, dArr, I&, J&, K&
With Sheets("Cong no")
    Arr = .Range(.[A5], .[A65000].End(3)).Resize(, 9).Value
End With
    ReDim dArr(1 To UBound(Arr), UBound(Arr, 2))
Application.ScreenUpdating = False
If Target.Address = "$E$1" Then
    For I = 1 To UBound(Arr)
    If Arr(I, 3) = [E1].Value2 Then
        K = K + 1
        For J = 1 To UBound(Arr, 2)
            dArr(K, J - 1) = Arr(I, J)
        Next J
    End If
    Next I
With Sheets("vi du")
    .[A5:I65000].Borders.LineStyle = 0
    .[A5:I65000].ClearContents
If K Then
    .Range("A5").Resize(K, UBound(Arr, 2)) = dArr
    .Range("A5").Resize(K, UBound(Arr, 2)).Borders.LineStyle = 1
End If
End With
End If
Application.ScreenUpdating = True
End Sub
 
Paste code này vô sheet "Cong no" rồi nhập 131 hoặc 331 vào D2 nhé:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
 If Target.Address = "$D$2" Then
   [A4:I10000].AdvancedFilter 1, [D1:D2]
 End If
Application.ScreenUpdating = True
End Sub
Cám ơn Bạn, cách của bạn rất ổn, nhưng sao lại không hiện dòng tổng cộng nhỉ? Bạn có thể bô xung lại giúp mình không
Xin cám ơn.
 
Mã:
Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Arr, dArr, I&, J&, K&
With Sheets("Cong no")
    Arr = .Range(.[A5], .[A65000].End(3)).Resize(, 9).Value
End With
    ReDim dArr(1 To UBound(Arr), UBound(Arr, 2))
Application.ScreenUpdating = False
If Target.Address = "$E$1" Then
    For I = 1 To UBound(Arr)
    If Arr(I, 3) = [E1].Value2 Then
        K = K + 1
        For J = 1 To UBound(Arr, 2)
            dArr(K, J - 1) = Arr(I, J)
        Next J
    End If
    Next I
With Sheets("vi du")
    .[A5:I65000].Borders.LineStyle = 0
    .[A5:I65000].ClearContents
If K Then
    .Range("A5").Resize(K, UBound(Arr, 2)) = dArr
    .Range("A5").Resize(K, UBound(Arr, 2)).Borders.LineStyle = 1
End If
End With
End If
Application.ScreenUpdating = True
End Sub
Ý của minh là chỉ làm sheet "cong no" thoi, không phải làm cả sheet "vi du" bạn tạo thêm code đó mình không biết phải xóa ra làm sao. Mình vẫn chưa chạy được trên code của bạn. Bạn xem lại giùm mình. Xin cám ơn bạn.
 
Ý của minh là chỉ làm sheet "cong no" thoi, không phải làm cả sheet "vi du" bạn tạo thêm code đó mình không biết phải xóa ra làm sao. Mình vẫn chưa chạy được trên code của bạn. Bạn xem lại giùm mình. Xin cám ơn bạn.

Thì xài code #2 chứ sao nữa...bạn
Cám ơn Bạn, cách của bạn rất ổn, nhưng sao lại không hiện dòng tổng cộng nhỉ? Bạn có thể bô xung lại giúp mình không
Xin cám ơn.
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
 If Target.Address = "$D$2" Then
   [A4:I1084].AdvancedFilter 1, [D1:D2]
 End If
Application.ScreenUpdating = True
End Sub
 
Thì xài code #2 chứ sao nữa...bạn

Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
 If Target.Address = "$D$2" Then
   [A4:I1084].AdvancedFilter 1, [D1:D2]
 End If
Application.ScreenUpdating = True
End Sub
Code này không chạy được dòng tổng cộng Hpkhuong à. Bạn xem lại giùm mình.
Cám ơn bạn.
 
Code này không chạy được dòng tổng cộng Hpkhuong à. Bạn xem lại giùm mình.
Cám ơn bạn.

Tôi mệt bạn ghê. Dòng tổng cộng của bạn liên quan gì. Dòng tổng cộng của bạn ở dòng 1085. Trong khi Advanced Filter thì chỉ đến dòng 1084
Có chăng nó bị ẩn là do bạn đã dùng code trước đó (#2). Bạn dùng lại code cũ, sau đó xóa điều kiện lọc tại D2 cho nó xả ra.

RỒi copy code #6 paste lại và chạy lại điều kiện tại D2...
 
Code #7 luôn hiện dòng tổng cộng khi chạy code rồi đó bạn. Bạn hãy kiểm tra kỹ lại nhé.
Có vẻ như HPkhuong và giangleloi chưa hiểu ý tác giả rồi! Dòng tổng cộng bên sheet "Ví dụ" đó do tác giả tạo thủ công thôi. Giờ tác giả muốn sau mỗi lần lọc sẽ tự động có các công thức đó.--=0
 
Tôi mệt bạn ghê. Dòng tổng cộng của bạn liên quan gì. Dòng tổng cộng của bạn ở dòng 1085. Trong khi Advanced Filter thì chỉ đến dòng 1084
Có chăng nó bị ẩn là do bạn đã dùng code trước đó (#2). Bạn dùng lại code cũ, sau đó xóa điều kiện lọc tại D2 cho nó xả ra.

RỒi copy code #6 paste lại và chạy lại điều kiện tại D2...
Cám ơn bạn nhé, nhiều lúc làm không được, tắt đi, xóa lại làm được. Xin cám ơn bạn đã chỉ bảo nhiệt tình.
 
Có vẻ như HPkhuong và giangleloi chưa hiểu ý tác giả rồi! Dòng tổng cộng bên sheet "Ví dụ" đó do tác giả tạo thủ công thôi. Giờ tác giả muốn sau mỗi lần lọc sẽ tự động có các công thức đó.--=0
Sheet ví dụ là kết quả mong muốn của tác giả đưa ra sau khi chọn 1 tài khoản nào đó. Còn trên thực tế tác giả lại muốn kết quả nằm ngay trong sheet "Cong no". Và trong sheet "Cong no" này tác giả đã trừ hao số liệu phát sinh và đã có sẵn dòng tổng cộng rồi.
P/s: Thiết nghĩ do tác giả test code bị sai thôi à.
 
Có vẻ như HPkhuong và giangleloi chưa hiểu ý tác giả rồi! Dòng tổng cộng bên sheet "Ví dụ" đó do tác giả tạo thủ công thôi. Giờ tác giả muốn sau mỗi lần lọc sẽ tự động có các công thức đó.--=0
sau mỗi lần lọc thì phải tạo lại dòng tổng cộng với các công thức hả bạn ? có thấy mệt không ?
đặt công thức ở dòng 10 001 rồi filter vùng 1:10 000 thì suốt đời chả phải viết lại công thức
hôm nay diễn đàn nhiều thanh niên nghiêm túc lắm à , phải suy nghĩ cẩn thận trước khi phán
 
Web KT
Back
Top Bottom