Dùng AutoFilter cột A, Copy sang sheet2.Mình mới học excel còn nhiều thứ chưa biết mọi người tải file đính kèm về rồi giúp mình nhé
Thank!
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cnn As New ADODB.Connection, lrs As New ADODB.Recordset
If Target.Address = "$C$3" Then
cnn.Open "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;"
lrs.Open "select [loai vt], [so luong], [don gia], [thanh tien] From [TH$] WHERE ucase([TEN#CTY]) Like '" & UCase(Target) & "' ", cnn, 1, 3
[B5:E6000].ClearContents
[B5].CopyFromRecordset lrs
lrs.Close: Set lrs = Nothing: cnn.Close: Set cnn = Nothing
End If
End Sub
Bài này dùng Advanced Filter sẽ ngắn gọn dễ hiểu hơn:Muốn dùng ADO thì dùng code sau:
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim cnn As New ADODB.Connection, lrs As New ADODB.Recordset If Target.Address = "$C$3" Then cnn.Open "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;" lrs.Open "select [loai vt], [so luong], [don gia], [thanh tien] From [TH$] WHERE ucase([TEN#CTY]) Like '" & UCase(Target) & "' ", cnn, 1, 3 [B5:E6000].ClearContents [B5].CopyFromRecordset lrs lrs.Close: Set lrs = Nothing: cnn.Close: Set cnn = Nothing End If End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$2" Then
With Target.Parent
Sheets("TH").[A2:E10000].AdvancedFilter 2, .[A1:A2], .[A4:D4]
End With
End If
End Sub




Bài này dùng Advanced Filter sẽ ngắn gọn dễ hiểu hơn:
PHP:Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address = "$A$2" Then With Target.Parent Sheets("TH").[A2:E10000].AdvancedFilter 2, .[A1:A2], .[A4:D4] End With End If End Sub
Muốn dùng ADO thì dùng code sau:
Mã:Private Sub Worksheet_Change(ByVal Target As Range) Dim cnn As New ADODB.Connection, lrs As New ADODB.Recordset If Target.Address = "$C$3" Then cnn.Open "Provider= Microsoft.Jet.OLEDB.4.0; data source=" & ThisWorkbook.FullName & ";Extended Properties=Excel 8.0;" lrs.Open "select [loai vt], [so luong], [don gia], [thanh tien] From [TH$] WHERE ucase([TEN#CTY]) Like '" & UCase(Target) & "' ", cnn, 1, 3 [B5:E6000].ClearContents [B5].CopyFromRecordset lrs lrs.Close: Set lrs = Nothing: cnn.Close: Set cnn = Nothing End If End Sub


Lấy râu ông nọ cắm cằm bà kia?Cách của bạn rất hợp với ý mình
Bạn có cách nào thay đổi cai ô listbox kia thành ô nhập liệu được không tại số lượng công ty của mình rất lớn nếu dùng listbox không tiện mình cà rốt cai này lắm thank!
Vấn đề ở chỗ tiêu đề của vùng kết quả đã nhập sẵn trước đó rồi. Anh còn nhớ bài này chứ?! Gán tiêu đề trước (trật tự thế nào tùy ý), sau đó AdvancedFilter sẽ giúp ta phần còn lại.To Ndu: Sao dùng AdvancedFilter mà bỏ được cột đầu tiên hay vậy?, mình làm nó toàn ra đủ 5 cột.


Vấn đề ở chỗ tiêu đề của vùng kết quả đã nhập sẵn trước đó rồi. Anh còn nhớ bài này chứ?! Gán tiêu đề trước (trật tự thế nào tùy ý), sau đó AdvancedFilter sẽ giúp ta phần còn lại.