- Ngày 18/02/2017: Nếu các bạn có một Danh sách các khách hàng và bạn cần trích xuất theo mã khách hàng, thông thường các bạn sẽ dùng vlookup sau đó sẽ ẩn các dòng thừa và in báo cáo, như thế có vẻ thủ công quá, hôm nay mình xin hướng dẫn các bạn báo cáo một cách tự động bằng VBA. Các bạn thực hiện theo hướng dẫn dưới đây:


- Bước 1: các bạn click phải lên tên sheet báo cáo -> chọn view code và dán code sau đây vào:

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim arr(), kq(), tong As Double
    If Target.Address = "$B$5" Then
        arr = Sheet1.Range("A2:H" & Sheet1.Range("A10000").End(xlUp).Row).Value
        ReDim kq(1 To UBound(arr), 1 To 7)
        For i = 1 To UBound(arr)
            If arr(i, 1) = Target.Value Then
                k = k + 1
                kq(k, 1) = k
                kq(k, 2) = arr(i, 2)
                For j = 3 To 7
                    kq(k, j) = arr(i, j + 1)
                Next j
                tong = tong + arr(i, 8)
            End If
        Next i
        
        Range("A7:G10000").ClearContents
        If k = 0 Then
            MsgBox "Khong co du lieu"
            Exit Sub
        End If
        kq(k + 1, 3) = Range("H1").Value
        kq(k + 1, 7) = tong
        Range("A7").Resize(k + 1, 7) = kq
    End If
End Sub

- Bước 2: Thay đổi mã khách hàng ở ô B5 và xem kết quả, cụ thể các bạn download file bên dưới và xem video hướng dẫn nhé.

4 Nhận xét

  1. Nếu mình tìm ô khác và cả sheet thì sao anh tùng. Em cảm ơn Ạ

    Trả lờiXóa
    Trả lời
    1. bạn thay đổi dòng này nhé: If Target.Address = "$B$5" Then

      Xóa
  2. Bây giờ muốn thay target.address bằng khi thay đổi dữ liệu trong ô B5 thì làm thế nào Phạm Minh Tùng ơi

    Trả lờiXóa

Đăng nhận xét

Mới hơn Cũ hơn