Nhờ hiệu chỉnh điều kiện dữ liệu

Liên hệ QC

HUYNHTIEN0202

Thành viên chính thức
Tham gia
22/8/14
Bài viết
87
Được thích
1
Chào các Anh
Hiện tại mình lọc dữ liệu hai điều kiện gồm SOSANPHAM và MASANPHAM
Trường hợp Nếu gõ điều kiện SOSANPHAM 10 thì lỗi còn gõ '10 thì Ok
Còn điều kiện MASANPHAM thì OK
Mình muốn gõ dữ liệu SOSANPHAM và MASANPHAM không cần bổ sung thêm dấu "'"
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM " & _
                      "HAVING SOSANPHAM LIKE ('" + .Range("B2") + "')OR MASOSANPHAM LIKE ('" + .Range("B2") + "')")
'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub
Cám ơn các anh nhiều.
 

File đính kèm

  • Book2.xlsm
    38.9 KB · Đọc: 8
Chào các Anh
Hiện tại mình lọc dữ liệu hai điều kiện gồm SOSANPHAM và MASANPHAM
Trường hợp Nếu gõ điều kiện SOSANPHAM 10 thì lỗi còn gõ '10 thì Ok
Còn điều kiện MASANPHAM thì OK
Mình muốn gõ dữ liệu SOSANPHAM và MASANPHAM không cần bổ sung thêm dấu "'"
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM " & _
                      "HAVING SOSANPHAM LIKE ('" + .Range("B2") + "')OR MASOSANPHAM LIKE ('" + .Range("B2") + "')")
'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub
Cám ơn các anh nhiều.
Nối chuỗi ta dùng & và dùng having thường dùng để lọc với những hàm đi kèm group by: sum, min, max...
Ở đây ta dùng where
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "where SOSANPHAM LIKE '" & .Range("B2") & "' OR MASOSANPHAM LIKE '" & .Range("B2") & "'" & _
                      " Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM ")

'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub
 
Chào các Anh
Hiện tại mình lọc dữ liệu hai điều kiện gồm SOSANPHAM và MASANPHAM
Trường hợp Nếu gõ điều kiện SOSANPHAM 10 thì lỗi còn gõ '10 thì Ok
Còn điều kiện MASANPHAM thì OK
Mình muốn gõ dữ liệu SOSANPHAM và MASANPHAM không cần bổ sung thêm dấu "'"
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM " & _
                      "HAVING SOSANPHAM LIKE ('" + .Range("B2") + "')OR MASOSANPHAM LIKE ('" + .Range("B2") + "')")
'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub
Cám ơn các anh nhiều.
Cái này hay quá (Mai phải tìm học mới được:p)
 
Chào các Anh
Hiện tại mình lọc dữ liệu hai điều kiện gồm SOSANPHAM và MASANPHAM
Trường hợp Nếu gõ điều kiện SOSANPHAM 10 thì lỗi còn gõ '10 thì Ok
Còn điều kiện MASANPHAM thì OK
Mình muốn gõ dữ liệu SOSANPHAM và MASANPHAM không cần bổ sung thêm dấu "'"
.....................................................................
Cám ơn các anh nhiều.
Chẳng hiểu bạn muốn làm cái gì? Nếu dựa vào danh mục ở sheet DATA để chọn và nhập liệu vào Sheet2 thì nên dùng UserForm với 1 ListBox thì sẽ chọn được nhiều loại sản phẩm để nhập liệu cùng 1 lúc.
 
Nối chuỗi ta dùng & và dùng having thường dùng để lọc với những hàm đi kèm group by: sum, min, max...
Ở đây ta dùng where
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "where SOSANPHAM LIKE '" & .Range("B2") & "' OR MASOSANPHAM LIKE '" & .Range("B2") & "'" & _
                      " Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM ")

'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub
Nối chuỗi ta dùng & và dùng having thường dùng để lọc với những hàm đi kèm group by: sum, min, max...
Ở đây ta dùng where
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "where SOSANPHAM LIKE '" & .Range("B2") & "' OR MASOSANPHAM LIKE '" & .Range("B2") & "'" & _
                      " Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM ")

'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub
Cám ơn bạn nhiều.
 
Chẳng hiểu bạn muốn làm cái gì? Nếu dựa vào danh mục ở sheet DATA để chọn và nhập liệu vào Sheet2 thì nên dùng UserForm với 1 ListBox thì sẽ chọn được nhiều loại sản phẩm để nhập liệu cùng 1 lúc.
Cám ơn Anh đã góp ý, thực tế dữ liệu góc của mình nằm SQL Server mình muốn đưa ra ví dụ tạm để học hỏi thêm.
 
Cám ơn Anh đã góp ý, thực tế dữ liệu góc của mình nằm SQL Server mình muốn đưa ra ví dụ tạm để học hỏi thêm.
Nếu muốn sử dụng những cái có sẳn thì nên tìm hiểu về PivotTable (dùng tổng hợp, phân tích dữ liệu) và Advanced Filter (dùng lọc và tách dữ liệu, sẽ rất hữu ích cho công việc hàng ngày.
 
Nối chuỗi ta dùng & và dùng having thường dùng để lọc với những hàm đi kèm group by: sum, min, max...
Ở đây ta dùng where
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "where SOSANPHAM LIKE '" & .Range("B2") & "' OR MASOSANPHAM LIKE '" & .Range("B2") & "'" & _
                      " Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM ")

'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub

Nối chuỗi ta dùng & và dùng having thường dùng để lọc với những hàm đi kèm group by: sum, min, max...
Ở đây ta dùng where
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "where SOSANPHAM LIKE '" & .Range("B2") & "' OR MASOSANPHAM LIKE '" & .Range("B2") & "'" & _
                      " Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM ")

'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub
Chào bạn
Sẵn tiện cho mình hỏi thêm bạn,
Mình muốn sữa đổi điều kiện trong đoạn code sau:
Thay thế điều kiện
[" & ThisWorkbook.FullName & "].[Sheet2$G1:G3]
Thành điều kiện sau để khi cần bổ sung thêm điều kiện không cần sữa code.
With Sheet2
.Range("G1", .[G3].End(xlDown)).Value
End With
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "WHERE SOSANPHAM IN (SELECT SOSANPHAM FROM [" & ThisWorkbook.FullName & "].[Sheet2$G1:G3]) " & _
                      "Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM ")
'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub{/code]
 

File đính kèm

  • Book2.xlsm
    22.3 KB · Đọc: 5
Lần chỉnh sửa cuối:
Chào bạn
Trường hợp mình để điều kiện dấu & hoặc + điều cho ra kết quả

Chào bạn
Sẵn tiện cho mình hỏi thêm bạn,
Mình muốn sữa đổi điều kiện trong đoạn code sau:
Thay thế điều kiện
[" & ThisWorkbook.FullName & "].[Sheet2$G1:G3]
Thành điều kiện sau để khi cần bổ sung thêm điều kiện không cần sữa code.
With Sheet2
.Range("G1", .[G3].End(xlDown)).Value
End With
Mã:
Private Sub CommandButton1_Click()
Dim v As String, Cnn As Object, lrs As Object
Application.ScreenUpdating = False
    Set Cnn = CreateObject("ADODB.Connection")
    v = Application.Version
    With Sheet2
     .Range("A5:D5000").ClearContents
    Cnn.Open ("Provider=Microsoft." & IIf(v <> "8.0", "ACE.OLEDB.12.0", "Jet.OLEDB.4.0") & _
    ";Data Source=" & ThisWorkbook.FullName & ";Extended Properties=Excel " & IIf(v <> "8.0", "12.0", "8.0"))
'---------------------------------------------------------------------------------------------------------------
         Set lrs = Cnn.Execute("SELECT SOSANPHAM, MASOSANPHAM, TENSANPHAM,SUM(SOLUONG) " & _
                      "FROM [DATA$] " & _
                      "WHERE SOSANPHAM IN (SELECT SOSANPHAM FROM [" & ThisWorkbook.FullName & "].[Sheet2$G1:G3]) " & _
                      "Group by SOSANPHAM, MASOSANPHAM, TENSANPHAM ")
'---------------------------------------------------------------------------------------------------------------
    .Range("A5").CopyFromRecordset lrs
    End With
'---------------------------------------------------------------------------------------------------------------
lrs.Close: Set lrs = Nothing
Cnn.Close: Set Cnn = Nothing
Application.ScreenUpdating = True
End Sub{/code]
sửa thành
"WHERE SOSANPHAM IN (SELECT SOSANPHAM FROM [Sheet2$G1:G" & .[G3].End(xlDown)).Value & "]) " & _
 
Web KT
Back
Top Bottom