Lấy dữ liệu đã filter trong excel qua listbox

Liên hệ QC

SaiDon

Thành viên mới
Tham gia
25/7/11
Bài viết
20
Được thích
0
Thân gửi các bạn,

Mình muốn lấy dữ liệu đã filter từ Excel để hiển thị lên listbox

Mình có gửi hình ảnh và file excel, nhờ các bạn chỉ giúp

Cảm ơn các bạn nhiều !!!
 

File đính kèm

  • GetDatatoListbox.xlsm
    16.4 KB · Đọc: 30
  • Picture.png
    Picture.png
    11.4 KB · Đọc: 39
Bạn dùng Advanced Filter lọc kết quả ra 1 vùng nào đó, sau đó load vùng đó lên Listbox là xong, hoặc lọc theo mảng 2 chiều, sau đó load mảng kết quả vào Listbox
 
Upvote 0
Bạn dùng Advanced Filter lọc kết quả ra 1 vùng nào đó, sau đó load vùng đó lên Listbox là xong, hoặc lọc theo mảng 2 chiều, sau đó load mảng kết quả vào Listbox
Mình không muốn chọn giải pháp load kết quả ra chổ khác, có cách nào lấy trực tiếp dữ liệu gốc đó lên luôn ko? Thanks
 
Upvote 0
Bạn dùng Advanced Filter lọc kết quả ra 1 vùng nào đó, sau đó load vùng đó lên Listbox là xong, hoặc lọc theo mảng 2 chiều, sau đó load mảng kết quả vào Listbox
Bạn giúp mình cái code lọc theo mảng 2 chiều được ko bạn, mình có gửi file excel lên nhờ bạn code trực tiếp giúp, mình không rành VB lắm, cảm ơn bạn nhiều.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Danh sách nguồn dùng để lọc chỉ gồm 3 dòng & 1 cột, Vậy sau khi lọc thì chỉ còn 1 dòng hay cùng lắm là 2 dòng, Thì nên đưa kết quả lọc lên TextBox hay ComboBox được chăng?
 
Upvote 0
Danh sách nguồn dùng để lọc chỉ gồm 3 dòng & 1 cột, Vậy sau khi lọc thì chỉ còn 1 dòng hay cùng lắm là 2 dòng, Thì nên đưa kết quả lọc lên TextBox hay ComboBox được chăng?dữ liêu
Dữ liệu nhiều bạn ah,
Mình đang đưa dữ liệu vào listbox qua thuộc tính RowSource. Nếu vẫn dùng phương pháp này và can thiệp chỉ lấy những dòng được lọc thì hay quá !!
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn giúp mình cái code lọc theo mảng 2 chiều được ko bạn, mình có gửi file excel lên nhờ bạn code trực tiếp giúp, mình không rành VB lắm, cảm ơn bạn nhiều.
Toàn bộ code trong module frmTest
Mã:
Option Explicit

Private Sub btnTim_Click()
Dim lastRow As Long, r As Long, count As Long, sDK As String, dulieu(), kq()
    With ThisWorkbook.Worksheets("NganhHang")
        lastRow = .Cells(Rows.count, "B").End(xlUp).Row ' dong cuoi cung o cot B
        If lastRow < 5 Then Exit Sub    ' neu khong co du lieu thi don do choi
        dulieu = .Range("A5:B" & lastRow).Value ' lay du lieu vao mang dulieu
    End With
    If txtDieuKien.Value = "" Then
        lstDuLieu.List = dulieu ' dieu kien khong co nen hien thi toan bo du lieu trong ListBox
    Else
        lstDuLieu.Clear ' xoa ket qua cu
        sDK = txtDieuKien.Value  ' doan can tim
        ReDim kq(1 To 2, 1 To UBound(dulieu, 1))    ' ta nhap ket qua loc vao ListBox qua thuoc tinh Column. Dong (cot) cua mang kq la cot (dong) trong ListBox
        For r = 1 To UBound(dulieu, 1)  ' duyet tung dong cua mang dulieu
            If InStr(1, dulieu(r, 2), sDK, vbTextCompare) > 0 Then  ' tim thay doan can tim
                count = count + 1   ' tang so ket qua them 1
                kq(1, count) = dulieu(r, 1) ' STT nhap vao dong 1 cua cot count
                kq(2, count) = dulieu(r, 2) ' Ten Nganh Hang nhap vao dong 2 cua cot count
            End If
        Next r
        If count Then   ' neu co ket qua loc
            ReDim Preserve kq(1 To 2, 1 To count)   ' cat bot cot trong mang kq de vua voi so ket qua
            lstDuLieu.Column = kq   ' nhap mang ket qua kq vao ListBox thong qua thuoc tinh Column (khong dung thuoc tinh List)
        End If
    End If
End Sub

Private Sub UserForm_Initialize()
    lstDuLieu.ColumnCount = 2
    lstDuLieu.ColumnWidths = "50;"
    txtDieuKien.SetFocus
End Sub
 
Lần chỉnh sửa cuối:
Upvote 0
Toàn bộ code trong module frmTest
Mã:
Option Explicit

Private Sub btnTim_Click()
Dim lastRow As Long, r As Long, count As Long, sDK As String, dulieu(), kq()
    With ThisWorkbook.Worksheets("NganhHang")
        lastRow = .Cells(Rows.count, "B").End(xlUp).Row ' dong cuoi cung o cot B
        If lastRow < 5 Then Exit Sub    ' neu khong co du lieu thi don do choi
        dulieu = .Range("A5:B" & lastRow).Value ' lay du lieu vao mang dulieu
    End With
    If txtDieuKien.Value = "" Then
        lstDuLieu.List = dulieu ' dieu kien khong co nen hien thi toan bo du lieu trong ListBox
    Else
        lstDuLieu.Clear ' xoa ket qua cu
        sDK = txtDieuKien.Value  ' doan can tim
        ReDim kq(1 To 2, 1 To UBound(dulieu, 2))    ' ta nhap ket qua loc vao ListBox qua thuoc tinh Column. Dong (cot) cua mang kq la cot (dong) trong ListBox
        For r = 1 To UBound(dulieu, 1)  ' duyet tung dong cua mang dulieu
            If InStr(1, dulieu(r, 2), sDK, vbTextCompare) > 0 Then  ' tim thay doan can tim
                count = count + 1   ' tang so ket qua them 1
                kq(1, count) = dulieu(r, 1) ' STT nhap vao dong 1 cua cot count
                kq(2, count) = dulieu(r, 2) ' Ten Nganh Hang nhap vao dong 2 cua cot count
            End If
        Next r
        If count Then   ' neu co ket qua loc
            ReDim Preserve kq(1 To 2, 1 To count)   ' cat bot cot trong mang kq de vua voi so ket qua
            lstDuLieu.Column = kq   ' nhap mang ket qua kq vao ListBox thong qua thuoc tinh Column (khong dung thuoc tinh List)
        End If
    End If
End Sub

Private Sub UserForm_Initialize()
    lstDuLieu.ColumnCount = 2
    lstDuLieu.ColumnWidths = "50;"
    txtDieuKien.SetFocus
End Sub
Nhầm tí xíu
ReDim kq(1 To 2, 1 To UBound(dulieu, 2))
 
Upvote 0
Nhầm tí xíu
ReDim kq(1 To 2, 1 To UBound(dulieu, 2))
Đúng rồi. Số dòng của mảng kq bằng số cột của dulieu, tức bằng 2, còn số cột của kq bằng số dòng của dulieu, tức Ubound(dulieu, 1).

Bài #7 phải sửa thành
Mã:
ReDim kq(1 To 2, 1 To UBound(dulieu, 1))

Tôi đã sửa lại cả trong bài #7.
 
Upvote 0
Toàn bộ code trong module frmTest
Mã:
Option Explicit

Private Sub btnTim_Click()
Dim lastRow As Long, r As Long, count As Long, sDK As String, dulieu(), kq()
    With ThisWorkbook.Worksheets("NganhHang")
        lastRow = .Cells(Rows.count, "B").End(xlUp).Row ' dong cuoi cung o cot B
        If lastRow < 5 Then Exit Sub    ' neu khong co du lieu thi don do choi
        dulieu = .Range("A5:B" & lastRow).Value ' lay du lieu vao mang dulieu
    End With
    If txtDieuKien.Value = "" Then
        lstDuLieu.List = dulieu ' dieu kien khong co nen hien thi toan bo du lieu trong ListBox
    Else
        lstDuLieu.Clear ' xoa ket qua cu
        sDK = txtDieuKien.Value  ' doan can tim
        ReDim kq(1 To 2, 1 To UBound(dulieu, 1))    ' ta nhap ket qua loc vao ListBox qua thuoc tinh Column. Dong (cot) cua mang kq la cot (dong) trong ListBox
        For r = 1 To UBound(dulieu, 1)  ' duyet tung dong cua mang dulieu
            If InStr(1, dulieu(r, 2), sDK, vbTextCompare) > 0 Then  ' tim thay doan can tim
                count = count + 1   ' tang so ket qua them 1
                kq(1, count) = dulieu(r, 1) ' STT nhap vao dong 1 cua cot count
                kq(2, count) = dulieu(r, 2) ' Ten Nganh Hang nhap vao dong 2 cua cot count
            End If
        Next r
        If count Then   ' neu co ket qua loc
            ReDim Preserve kq(1 To 2, 1 To count)   ' cat bot cot trong mang kq de vua voi so ket qua
            lstDuLieu.Column = kq   ' nhap mang ket qua kq vao ListBox thong qua thuoc tinh Column (khong dung thuoc tinh List)
        End If
    End If
End Sub

Private Sub UserForm_Initialize()
    lstDuLieu.ColumnCount = 2
    lstDuLieu.ColumnWidths = "50;"
    txtDieuKien.SetFocus
End Sub
Cảm ơn bạn, mình sử dụng code này rất ok
 
Upvote 0
Web KT
Back
Top Bottom