Làm sao thêm dòng Tổng cộng vào sau khi dùng Advanced (1 người xem)

  • Thread starter Thread starter 597335
  • Ngày gửi Ngày gửi
Liên hệ QC

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

597335

Thành viên hoạt động
Tham gia
19/2/12
Bài viết
126
Được thích
29
Em lọc file đính kèm, code chạy đúng

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DL As Range, DK As Range
    If Target.Address = "$D$2" Then
        Set DL = Sheet1.Range("A2:C26")
        Set DK = Range("D1:D2")
        DL.AdvancedFilter 2, CriteriaRange:=DK, CopytoRange:=Range("A5:C5")
    End If
End Sub

Tuy vậy, em muốn khi thay đổi ô Target tức kết quả thay đổi theo thì dòng cuối cùng nó tự động thêm dòng tính tổng (bôi màu đỏ minh hoạ) thì thêm Code thế nào
 

File đính kèm

Em lọc file đính kèm, code chạy đúng

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DL As Range, DK As Range
    If Target.Address = "$D$2" Then
        Set DL = Sheet1.Range("A2:C26")
        Set DK = Range("D1:D2")
        DL.AdvancedFilter 2, CriteriaRange:=DK, CopytoRange:=Range("A5:C5")
    End If
End Sub

Tuy vậy, em muốn khi thay đổi ô Target tức kết quả thay đổi theo thì dòng cuối cùng nó tự động thêm dòng tính tổng (bôi màu đỏ minh hoạ) thì thêm Code thế nào
Thử thế này xem sao:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DL As Range, DK As Range, I As Long
    If Target.Address = "$D$2" Then
        Set DL = Sheet1.Range("A2:C26")
        Set DK = Range("D1:D2")
        DL.AdvancedFilter 2, CriteriaRange:=DK, CopytoRange:=Range("A5:C5")
        I = [b100].End(xlUp)(2).Row
        [b100].End(xlUp)(2).Resize(, 2).FormulaR1C1 = "=SUM(R[" & 6 - I & "]C:R[-1]C)"
    End If
End Sub
Mình chỉ chịu "chách nhiệm" thằng tính tổng ở cuối hàng thôi nhé
Thân:=\+
 
Upvote 0
Dạ em Test chuẩn rồi thày ah, nhưng có cách nào đánh thêm chữ Tổng cộng bằng Tiếng Việt vào không ah?
Em chưa biết cách, mong thày chỉ cho.
----------
Số 2 trong đoạn :
End(xlUp)(2)có nghĩa là thế nào ah?
Em hỉêu rồi, nó chính là viết tắt của Offset: (2) <---> .Offset(1)
 
Lần chỉnh sửa cuối:
Upvote 0
Thử code đơn giản này coi sao nhé

Private Sub Worksheet_Change(ByVal Target As Range)
Dim DL As Range, DK As Range
If Target.Address = "$D$2" Then
Set DL = Sheet1.Range(Sheet1.[A2], Sheet1.[c65536].End(3))
Set DK = [D1:D2]
DL.AdvancedFilter 2, DK, Range("A5:C5")
[a65536].End(3).Offset(1) = "T" & ChrW(7893) & "ng" & " c" & ChrW(7897) & "ng"
[b65536].End(3).Offset(1) = Application.Sum(Range([b6], [b6].End(4)))
[c65536].End(3).Offset(1) = Application.Sum(Range([c6], [c6].End(4)))
Range([a65536].End(3), [c65536].End(3)).Font.Bold = True
End If
End Sub
 
Upvote 0
Chuẩn rồi anh ah, em post Code của anh lại cho dễ nhìn nhé (các đoạn Code anh Post lên nếu dùng Tab sẽ dễ coi hơn)

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DL As Range, DK As Range
    If Target.Address = "$D$2" Then
        Set DL = Sheet1.Range(Sheet1.[A2], Sheet1.[c65536].End(3))
        Set DK = [D1:D2]
        DL.AdvancedFilter 2, DK, Range("A5:C5")
        [a65536].End(3).Offset(1) = "T" & ChrW(7893) & "ng" & " c" & ChrW(7897) & "ng"
        [b65536].End(3).Offset(1) = Application.Sum(Range([b6], [b6].End(4)))
        [c65536].End(3).Offset(1) = Application.Sum(Range([c6], [c6].End(4)))
        Range([a65536].End(3), [c65536].End(3)).Font.Bold = True
    End If
End Sub
-------
Em có cảm giác đoạn

PHP:
[a65536].End(3).Offset(1) = "T" & ChrW(7893) & "ng" & " c" & ChrW(7897) & "ng"
        [b65536].End(3).Offset(1) = Application.Sum(Range([b6], [b6].End(4)))
        [c65536].End(3).Offset(1) = Application.Sum(Range([c6], [c6].End(4)))
của anh có thể viết gọn lại, anh xem có được không nhé
 
Lần chỉnh sửa cuối:
Upvote 0
Em rất muốn tìm hiểu thêm về cách làm bằng công thức Excel thông thường, vì em thấy làm bằng công thức cũng rất hay đặc biệt về là thuật toán.

Kính nhờ các thày giúp em làm bài này bằng Công thức Excel với ah (em chưa thạo về Name cho lắm).
 
Upvote 0
Chuẩn rồi anh ah, em post Code của anh lại cho dễ nhìn nhé (các đoạn Code anh Post lên nếu dùng Tab sẽ dễ coi hơn)

PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim DL As Range, DK As Range
    If Target.Address = "$D$2" Then
        Set DL = Sheet1.Range(Sheet1.[A2], Sheet1.[c65536].End(3))
        Set DK = [D1:D2]
        DL.AdvancedFilter 2, DK, Range("A5:C5")
        [a65536].End(3).Offset(1) = "T" & ChrW(7893) & "ng" & " c" & ChrW(7897) & "ng"
        [b65536].End(3).Offset(1) = Application.Sum(Range([b6], [b6].End(4)))
        [c65536].End(3).Offset(1) = Application.Sum(Range([c6], [c6].End(4)))
        Range([a65536].End(3), [c65536].End(3)).Font.Bold = True
    End If
End Sub
-------
Em có cảm giác đoạn

PHP:
[a65536].End(3).Offset(1) = "T" & ChrW(7893) & "ng" & " c" & ChrW(7897) & "ng"
        [b65536].End(3).Offset(1) = Application.Sum(Range([b6], [b6].End(4)))
        [c65536].End(3).Offset(1) = Application.Sum(Range([c6], [c6].End(4)))
của anh có thể viết gọn lại, anh xem có được không nhé


Cũng cố gắng rút gọn thử nhưng cũng không được bao nhiêu

With [a65536].End(3)
.Offset(1) = "T" & ChrW(7893) & "ng" & " c" & ChrW(7897) & "ng"
.Offset(1, 1) = Application.Sum(Range([b6], [b6].End(4)))
.Offset(1, 2) = Application.Sum(Range([c6], [c6].End(4)))
End With
 
Upvote 0
Em rất muốn tìm hiểu thêm về cách làm bằng công thức Excel thông thường, vì em thấy làm bằng công thức cũng rất hay đặc biệt về là thuật toán.

Kính nhờ các thày giúp em làm bài này bằng Công thức Excel với ah (em chưa thạo về Name cho lắm).
Dùng công thức theo yêu cầu của bạn.
 

File đính kèm

Upvote 0
Xin chỉ giúp em nguyên nhân AdvancedFilter không được

Em dùng AdvandFilter như sau nhưng không được, phiền mọi người giúp cho

Avand.png
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom