Nhờ giúp copy dữ liệu qua sheet mới với các điều kiện

Liên hệ QC
Làm cho bạn bằng ADO

- Tại Sheet "Lọc" từ Cột C trở đi bạn thích lọc theo mã tỉnh nào thì Paste tiếp vào đó, dòng bên trên ghi tên sheet muốn tạo tương ứng với mã tỉnh. Các cột phải liền nhau
- Cột A là các ID_hang hoa
- Các cột mã tỉnh phải được định dạng là Text (vì dữ liệu của bạn cũng là dạng text), cái này có thể xử lý bằng hàm Text(Giá trị, "@") rồi Paste Value nó vào.
- Bấm Ctrl + Q để có kết quả. Nhớ giải nén trước khi chạy Macro
Mã:
Option Explicit
Sub Thuoc()
    On Error Resume Next
    Application.DisplayAlerts = False
    Application.ScreenUpdating = False
    Dim cnn As Object, lsSQL As String, lrs As Object
    Dim FileFullName As String, Str As String, c As Long, ws As Worksheet
    Set cnn = CreateObject("ADODB.Connection")
    Set lrs = CreateObject("ADODB.Recordset")
    FileFullName = Application.ThisWorkbook.FullName
    For Each ws In ThisWorkbook.Worksheets
        If UCase(ws.Name) <> "DATA" And UCase(ws.Name) <> "LOC" Then ws.Delete
    Next
    With Sheets("Loc")
        For c = 3 To 256
            If .Cells(2, c) <> "" And .Cells(1, c) <> "" Then
                Sheets.Add.Name = .Cells(1, c).Value
                Str = Range(.Cells(2, c), .Cells(65536, c)).Address(0, 0)
                With cnn
                    If Val(Application.Version) < 12 Then
                        .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" _
                                          & "Data Source=" & FileFullName _
                                          & ";Extended Properties=""Excel 8.0;HDR=Yes"";"
                    Else
                        .ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;" _
                                          & "Data Source=" & FileFullName _
                                          & ";Extended Properties=""Excel 12.0;HDR=Yes"";"
                    End If
                    .Open
                End With
                lsSQL = "Select * From [Data$A1:U65536] Where " _
                      & "[id_hanghoa] = Any (Select * from [Loc$A2:A65536]) " _
                      & "And [matinh] = Any (Select * from [Loc$" & Str & "])"
                lrs.Open lsSQL, cnn, 3, 1
                Sheets(.Cells(1, c).Value).Range("A2").CopyFromRecordset lrs
                Sheets("DATA").[A1:U1].Copy
                Sheets(.Cells(1, c).Value).Range("A1").PasteSpecial xlPasteAll
                Sheets(.Cells(1, c).Value).Range("A1").CurrentRegion.Font.Name = ".Vntime"
                cnn.Close
            Else
                Exit For
            End If
        Next
    End With
    Set lrs = Nothing
    Set cnn = Nothing
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
End Sub
 

File đính kèm

  • NKBH_072013.rar
    175.5 KB · Đọc: 27
Mình ấn Ctrl + Q ko thấy gì bạn à. Nếu như bạn làm thì quả là đỡ tốn công hơn nhiều. Mình dùng excel 2007 có cần đổi cái khác ko? Thanks!
 
Lần chỉnh sửa cuối:
làm như bạn lê duy thương mình thấy rất tiện, nhưng mình chỉ muốn ấn nút như bạn làm mình được 3 sheet, cả 3 sheet đều chỉ lấy các hàng có id_hanghoa sau :
PHP:
156_000000000001000000030000000100000043
156_000000000001000000010000000100000002
156_000000000001000000010000000300000053
156_000000000001000000010000000400000014
156_000000000001000000010000000200000002
156_000000000001000000010000000400000006
156_000000000001000000010000000200000031
156_000000000001000000010000000200000006
156_000000000001000000030000000200000013
156_000000000001000000010000000300000014
156_000000000001000000010000000100000007
156_000000000001000000010000000100000008
156_000000000001000000010000000300000018
156_000000000001000000010000000100000010
156_000000000001000000030000000300000017
156_000000000001000000010000000300000023
156_000000000001000000010000000100000022
156_000000000001000000030000000100000055
156_000000000001000000010000000100000032
156_000000000001000000030000000100000059
156_000000000001000000010000000400000001
156_000000000001000000010000000400000002
156_000000000001000000010000000100000018
156_000000000001000000030000000100000053
156_000000000001000000010000000500000001
156_000000000001000000030000000200000016
156_000000000001000000010000000300000060
156_000000000001000000010000000100000042
156_000000000001000000010000000400000013
156_000000000001000000010000000500000002
156_000000000001000000010000000100000040
156_000000000001000000010000000200000014
156_000000000001000000030000000200000015
156_000000000001000000010000000300000037
156_000000000001000000010000000100000027
156_000000000001000000010000000100000009

sheet 1 gồm các tỉnh có matinh sau :
PHP:
0500
0501
057
058
061
062
063
064
0650
0650thanh
0651
066
131dnai
068
sheet 2 gồm các tỉnh có matinh sau :
PHP:
067
131longan
070
0710
0711
072
073
074
075
076
077
0780
0781
079

sheet 3 gồm các tỉnh có matinh sau :
PHP:
btan
cchi 
q01  
q03    
q04  
q05   
q06   
q07   
q08   
q09   
q10   
q11  
q12 
qbc
qbt    
qgv  
qhm   
qhm1 
qpn  
qtb    
qtd    
qtp
giúp mình nhé các bạn. Cảm ơn nhiều

hỏng biết trúng không
ý BẠN là lấy tất cả các mã số thuốc có trong list-- sau đó tách từ list đó thành 3 sheet đúng không ?
Xem file nhé
 

File đính kèm

  • LOC DONG TAY Y KET HOP.rar
    177.4 KB · Đọc: 23
Đúng là chỉ lấy thuốc có id_hanghoa trong list xong tách ra 3 sheet. Nhưng mà mình paste file nhật ký bán hàng khác vào nó ko chạy. Vì nhật ký này mình nhận đc hàng ngày
 
Dường như bạn không quan tâm, hay không thử với bài #23?
 
Dường như bạn không quan tâm, hay không thử với bài #23?
Mình đã dùng thử và đạt kết quả tốt, cám ơn bạn đã giúp đỡ.
Bạn có thể làm giúp mình thêm 1 sheet nữa lọc theo makhachhang được ko? Mình cũng sửa sheet Loc để đc kết quả.
Thanks bạn rất nhiều
 
Mình đã dùng thử và đạt kết quả tốt, cám ơn bạn đã giúp đỡ.
Bạn có thể làm giúp mình thêm 1 sheet nữa lọc theo makhachhang được ko? Mình cũng sửa sheet Loc để đc kết quả.
Thanks bạn rất nhiều
- Tôi nhấn nút "Cảm ơn" cho bài #28 của bạn vì bạn đã phản hồi kết quả, trả lời bài viết của tôi.
- Bạn muốn Lọc như thế nào thì bạn nên "dài dòng" thêm 1 chút, "đoán" rồi lại trượt, làm lại => .......
 
- Tôi nhấn nút "Cảm ơn" cho bài #28 của bạn vì bạn đã phản hồi kết quả, trả lời bài viết của tôi.
- Bạn muốn Lọc như thế nào thì bạn nên "dài dòng" thêm 1 chút, "đoán" rồi lại trượt, làm lại => .......
Mình vẫn chỉ lấy các dòng có id_hanghoa như cũ và thêm 1 Sheet nữa mình lọc theo makhachhang. Bạn cũng làm thêm 1 cột makhachhang trong sheet Loc nữa để có thể thay đổi được như matinh ấy.
Thanks!
 
Mình vẫn chỉ lấy các dòng có id_hanghoa như cũ và thêm 1 Sheet nữa mình lọc theo makhachhang. Bạn cũng làm thêm 1 cột makhachhang trong sheet Loc nữa để có thể thay đổi được như matinh ấy.
Thanks!
Bạn bấm Ctrl + Shift + q hoặc Ctrl + q để có 2 kết quả lọc theo hàng hóa và khách hàng.
 

File đính kèm

  • NKBH_072013.rar
    181.3 KB · Đọc: 15
Bạn bấm Ctrl + Shift + q hoặc Ctrl + q để có 2 kết quả lọc theo hàng hóa và khách hàng.
Bạn để chung vào 1 phím tắt giúp mình nhé. Ấn 1 cái là nó ra 3 sheet Thuoc 1, 2, 3 như cũ và thêm 1 sheet lọc theo makhachhang (cột Q) nữa.Mình ko cần lọc theo id_khachhang
Thanks!
 
Lần chỉnh sửa cuối:
Bạn để chung vào 1 phím tắt giúp mình nhé. Ấn 1 cái là nó ra 3 sheet Thuoc 1, 2, 3 như cũ và thêm 1 sheet lọc theo makhachhang (cột Q) nữa.Mình ko cần lọc theo id_khachhang
Thanks!
Tôi làm cho bạn, chỉ có duy nhất 1 sheet Loc chứa thông tin lọc, trong đó
- Cột A: Lọc mã khách hàng ra 1 sheet
- Cột C: chứa mã hàng hoá tương ứng với các cột E,F,G....là mã tỉnh ra các sheet tương ứng
- Bấm tổ hợp phím Ctrl + q để có kết quả

*Nếu bạn mô tả thật rõ ràng từ đầu, các yêu cầu không phát sinh thì chắc bài toán đã được giải quyết không đến 4 trang Topic như thế này. Đôi điều góp ý.
 

File đính kèm

  • NKBH_072013.rar
    187.4 KB · Đọc: 48
Mình cũng chung câu hỏi và cảm ơn dhn46 cùng các pro khác trong topic rất nhiều! ^^
 
Web KT
Back
Top Bottom