Lấy dữ liệu từ file excel khác theo nhiều điều kiện (Dùng VBA)

Liên hệ QC

chidung2009

Thành viên hoạt động
Tham gia
12/9/12
Bài viết
123
Được thích
8
Em có 1 file DATA có hơn 500.000 dòng, dung lượng gần 100mb, rất bất tiện khi thao tác trên file đó.
Giờ em muốn tạo 1 file excel khác dùng để lấy dữ liệu, lọc theo nhiều điều kiện thì phải làm thế nào (Không mở file DATA)
- Do file Data quá lớn nên em đã xóa bớt dòng và 1 số sheel khác để giảm dung lượng (Để lại còn 3000 dòng)
- Tại file lấy dữ liệu: khi nhập điều kiện lấy theo tháng vào ô D1, D2 và số tiền vào ô F1, F2 thì khi lấy dữ liệu nó sẽ lọc dữ liệu theo các điều kiện trên (Nếu D1, D2 hoặc F1, F2 trống thì lấy tất cả mà lọc theo điều kiện còn lại)
Mong mọi người giúp em với
Em chần thành cảm ơn
 

File đính kèm

  • lay du lieu.xlsm
    10.2 KB · Đọc: 63
  • DATA.xlsx
    187.8 KB · Đọc: 64
  • hinh.jpg
    hinh.jpg
    42.8 KB · Đọc: 53
Cho mình hỏi Đoạn mã:
Sql = "SELECT * from [sheet3$A5:F100000] WHERE F5 BETWEEN " & thangbd & " and " & thangkt & " AND F6 BETWEEN " & tien1 & " and " & tien2 & ";"
Vậy WHERE F5 BETWEEN và AND F6 BETWEEN có nghĩa là gì vậy ?
Sao không phải là E2 và F2
Nó là cột thứ 5 và thứ 6 trong dữ liệu data tương ứng với cột tháng và cột tiền nhé.
 
Upvote 0
Tham gia 1 kiểu khác để thi hành lệnh SQL. Kiểu này theo tôi là dễ hiểu hơn chút
PHP:
Sub Laydulieu_Me()
    Dim thangbd As Integer, thangkt As Integer, tien1 As Double, tien2 As Double
    Dim cn As Object, rst As Object, Sql As String
    
    'Ket noi du lieu nguon
    Set cn = CreateObject("ADODB.Connection")
    With cn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        'Chinh lai ten file du lieu nguon cho dung (neu dung file khac DATA.xlsx)
        .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\DATA.xlsx" & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
        .Open
    End With
    
    'Lay thong tin dieu kien, xoa ket qua cu
    With Sheets("sheet1")
         thangbd = .Range("D1").Value
         thangkt = .Range("D2").Value
         tien1 = .Range("F1").Value
         tien2 = .Range("f2").Value
         .Range("A5:F5000").ClearContents
    End With
    
    'Cau lenh SQL
    Sql = "SELECT * from [sheet3$] "
    Sql = Sql & "WHERE THANG BETWEEN " & thangbd & " and " & thangkt & " AND T_TONGCHI BETWEEN " & tien1 & " and " & tien2

    'Thi hanh lenh
    Set rst = cn.Execute(Sql)
    
    'Ghi ket qua
    Sheet1.Range("A5").CopyFromRecordset rst
    
    'Dong ket noi
    rst.Close
    cn.Close
End Sub
 
Upvote 0
Mọi người giúp em file này với. Em có các sheet Dashboar; Tuan 1; Tuan 2; Tuan 3; Tuan 4; Tuan 5 và Tong Hop. Các sheet Tuan 1 đến Tuan 5 thì được cập nhật dữ liệu liên tục. Em muốn khi dữ liệu được nhập vào các sheet Tuan này thì sẽ đươc tự động copy và dán vào sheet Tong hop. Khi sửa update dữ liệu ở các sheet Tuan này thì sheet Tong Hop cũng được cập nhật theo luôn ạ. Mn xem giúp em với. Thanks all
 

File đính kèm

  • Thong ke ban hang.xlsx
    27.2 KB · Đọc: 7
Upvote 0
Mọi người giúp em file này với. Em có các sheet Dashboar; Tuan 1; Tuan 2; Tuan 3; Tuan 4; Tuan 5 và Tong Hop. Các sheet Tuan 1 đến Tuan 5 thì được cập nhật dữ liệu liên tục. Em muốn khi dữ liệu được nhập vào các sheet Tuan này thì sẽ đươc tự động copy và dán vào sheet Tong hop. Khi sửa update dữ liệu ở các sheet Tuan này thì sheet Tong Hop cũng được cập nhật theo luôn ạ. Mn xem giúp em với. Cảm ơn all
Bạn đăng bài mới đi, chen vào đây không tiện.
 
Upvote 0
Tham gia 1 kiểu khác để thi hành lệnh SQL. Kiểu này theo tôi là dễ hiểu hơn chút
PHP:
Sub Laydulieu_Me()
    Dim thangbd As Integer, thangkt As Integer, tien1 As Double, tien2 As Double
    Dim cn As Object, rst As Object, Sql As String
   
    'Ket noi du lieu nguon
    Set cn = CreateObject("ADODB.Connection")
    With cn
        .Provider = "Microsoft.ACE.OLEDB.12.0"
        'Chinh lai ten file du lieu nguon cho dung (neu dung file khac DATA.xlsx)
        .ConnectionString = "Data Source=" & ThisWorkbook.Path & "\DATA.xlsx" & ";" & "Extended Properties=""Excel 12.0 Xml;HDR=YES"";"
        .Open
    End With
   
    'Lay thong tin dieu kien, xoa ket qua cu
    With Sheets("sheet1")
         thangbd = .Range("D1").Value
         thangkt = .Range("D2").Value
         tien1 = .Range("F1").Value
         tien2 = .Range("f2").Value
         .Range("A5:F5000").ClearContents
    End With
   
    'Cau lenh SQL
    Sql = "SELECT * from [sheet3$] "
    Sql = Sql & "WHERE THANG BETWEEN " & thangbd & " and " & thangkt & " AND T_TONGCHI BETWEEN " & tien1 & " and " & tien2

    'Thi hanh lenh
    Set rst = cn.Execute(Sql)
   
    'Ghi ket qua
    Sheet1.Range("A5").CopyFromRecordset rst
   
    'Dong ket noi
    rst.Close
    cn.Close
End Sub
Bài hướng dẫn rất chi tiết, mình cảm ơn nhiều
 
Upvote 0
Web KT
Back
Top Bottom