Trợ giúp về lọc dữ liệu

Liên hệ QC

nguyenvietviet

Thành viên hoạt động
Tham gia
4/3/08
Bài viết
110
Được thích
11
Nghề nghiệp
Nhân viên văn phòng
Tôi muốn tạo một sheet khác: Trong sheet này khi tôi nhập vào mã tổ và mã tàu thì liệt kê những vật tư đã lấy ở sheet " NKNX". Xin các bạn trợ giúp cho tôi. Cảm ơn
 
Lần chỉnh sửa cuối:
Tôi muốn tạo một sheet khác: Trong sheet này khi tôi nhập vào mã tổ và mã tàu thì liệt kê những vật tư đã lấy ở sheet " NKNX". Xin các bạn trợ giúp cho tôi. Cảm ơn
Nhìn vào file nhưng không hiểu mã tổ và mã tàu là cái gì cả!
Nếu là LỌC tại sao bạn không dùng AutoFilter cho gọn?
 
Có nhiều cách lọc:
Mình ví dụ 1 cách, muốn tạo sh khác thì paste link là ổn.
Cách khác dùng công thức liên kết, nếu mã đúng thì lấy giá trị sai thì bằng 0 hay ""

Xin chào, mình cũng dân Kim Môn cũ
 

File đính kèm

  • VTP T12.rar
    128.1 KB · Đọc: 106
Lần chỉnh sửa cuối:
sealanh ơi! mình đã xem bài viết của bạn rồi. Nhưng có chỗ này mình không hiểu xin bạn chỉ dùm!?
PHP:
Private Sub ComboBox1_Change()
Dim ma As String
ma = Me.ComboBox1.Text
    Sheet1.Range("A6:R2000").AutoFilter Field:=10, Criteria1:=ma, Operator:=xlAnd
    ActiveWindow.SmallScroll Down:=-15
End Sub
Xin chi mình hỏi Criteria1:=ma (ma: là bạn đặt thế nào?), còn Smallcroll Down:=-15? Thanks
 
sealanh ơi! mình đã xem bài viết của bạn rồi. Nhưng có chỗ này mình không hiểu xin bạn chỉ dùm!?
PHP:
Private Sub ComboBox1_Change()
Dim ma As String
ma = Me.ComboBox1.Text
    Sheet1.Range("A6:R2000").AutoFilter Field:=10, Criteria1:=ma, Operator:=xlAnd
    ActiveWindow.SmallScroll Down:=-15
End Sub
Xin chi mình hỏi Criteria1:=ma (ma: là bạn đặt thế nào?), còn Smallcroll Down:=-15? Thanks
Cái này có được từ bộ thu Record macro mà ra
- Chọn vùng A6:R2000
- AutoFilter vùng này theo điều kiện cột 10 = ma
- ma là Value mà ta chọn trong ComboBox --> Ở trên đã ghi:
ma = Me.ComboBox1.Text (Me chính là ActiveSheet)
Viết lại có thể là:
ma = ActiveSheet.ComboBox1.Text
- Còn ActiveWindow.SmallScroll ---> Tôi nghĩ có thể trong quá trình thu macro, anh Sealand đã dùng chuột nắm kéo thanh trượt ---> Dòng này bỏ đi không có vấn đề
Bạn cứ thử record macro quá trình AutoFilter, sau đó vào xem code sẽ hiểu
 
To YOME:
Sheet1.Range("A6:R2000").AutoFilter Field:=10, Criteria1:=ma, Operator:=xlAnd
ActiveWindow
.SmallScroll Down:=-15

Đoạn gạch chân do thu Macro mình để nguyên vậy, có thể bỏ
Sheet1.Range("A6:R2000").AutoFilter Field:=10: Có ý nghĩa như sau:

Sheet1.Range("A6:R2000"): Vùng lọc
.AutoFilter Field:=10 : lọc theo cột số 10
Criteria1:=ma Điều kiện lọc là ma

Biến ma đã được gán bằng giá trị của combobox
Để chuẩn xác ghi:
ma = Sheet1.ComboBox1.Text

Đoạn
Operator:=xlAnd chỉ cần thiết khi có từ 2 điều kiện lọc trở lên (Liên kêt "và")
 
Lần chỉnh sửa cuối:
Cám ơn

Cám ơn nhiều hgfjgjhgkgh
 
Trợ giúp lại

Tôi cám ơn bạn đã giúp tôi
Nhưng ý tôi không phải là làm như thế
Mong bạn xem lại hộ tôi. Trong file đính kềm tôi đã ghi sẵn điều kiện.
Thân chào. Mong sớm gặp lại. Cám ơn
 
Lần chỉnh sửa cuối:
Tôi cám ơn bạn đã giúp tôi
Nhưng ý tôi không phải là làm như thế
Mong bạn xem lại hộ tôi. Trong file đính kềm tôi đã ghi sẵn điều kiện.
Thân chào. Mong sớm gặp lại. Cám ơn
Đầu tiên bạn phải xác định dùm tôi:
- Mã tổ là cái gì? Nó nằm ở cột nào trong sheet NKNX
- Mã tàu là cái chi chi? Và nó nằm ở cột nào trong sheet NKNX
Bạn "gọi" là mã tàu, mã tổ... trong khi tôi tìm khắp các tiêu đề của bảng tính cũng chả hề thấy mấy chử này... Vậy biết tìm nó ở đâu (gọi tên tiêu đề phải thống nhất chứ)
Nhìn vào bảng tính ví dụ của bạn lại càng không hiểu nổi
----------------
Nói thêm: Các bạn chú ý, file ở bài #8 bại virus nghiêm trọng, tải về và mở file hãy cận thận nhé... nếu không nó lây hết toàn máy tính đấy (dù có Enable hay Disable gì thì nó vẫn cứ nhiểm)
File đính kèm dưới đây đã được "làm sạch"
 

File đính kèm

  • VTP T12.rar
    84.1 KB · Đọc: 56
Lần chỉnh sửa cuối:
Trợ giúp lọc

Cột "J" là cột mã tổ, cột "L" là cột mã tàu.
Mong các bạn giúp đỡ
 
Cảm ơn GPE và các bạn nhiều
 
Bạn có thể cho mình biết cụ thể lầm như thế nào không?
Mình không hiểu về macro lắm.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect([C4:C5], Target) Is Nothing Then
[A9].CurrentRegion.Offset(1).ClearContents
Sheets("NKNX").AutoFilterMode = False
With Sheets("NKNX").[A4].CurrentRegion
.AutoFilter 10, IIf([C4] = "", "*", [C4])
.AutoFilter 12, IIf([C5] = "", "*", [C5])
.Offset(1, 3).Resize(, 4).Copy
End With
[B10].PasteSpecial 3
Sheets("NKNX").AutoFilterMode = False
With [A9].CurrentRegion.Resize(, 1)
If .Count > 1 Then
.SpecialCells(4).Value = Evaluate("=Row($1:$1000)")
End If
.Cells(1, 1).Select
End With
End If
End Sub
 
Ý bạn là sao mình chưa hiểu lắm? Thì bạn cứ tải file của bác ndu96081631 ở mục #11 về rồi dùng thôi. Bạn thử thay đổi giá trị trong hai ô C4 và C5 xem. Muốn xem code thì nhấn phải chuột vào tên sheet bên dưới -> chọn View Code. Sẽ thấy code nằm trong đó. Thân.
 
Lần chỉnh sửa cuối:
Bạn có thể cho mình biết cụ thể lầm như thế nào không?
Mình không hiểu về macro lắm.
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect([C4:C5], Target) Is Nothing Then
[A9].CurrentRegion.Offset(1).ClearContents
Sheets("NKNX").AutoFilterMode = False
With Sheets("NKNX").[A4].CurrentRegion
.AutoFilter 10, IIf([C4] = "", "*", [C4])
.AutoFilter 12, IIf([C5] = "", "*", [C5])
.Offset(1, 3).Resize(, 4).Copy
End With
[B10].PasteSpecial 3
Sheets("NKNX").AutoFilterMode = False
With [A9].CurrentRegion.Resize(, 1)
If .Count > 1 Then
.SpecialCells(4).Value = Evaluate("=Row($1:$1000)")
End If
.Cells(1, 1).Select
End With
End If
End Sub
Viết thì dài dòng thế nhưng thuật toán chủ yếu trong bài chỉ là AutoFilter bình thường thôi mà... (làm bằng tay cũng được)
Tức là sau khi AutoFilter xong, ra kết quả thì copy sang sheet khác --> Chỉ vậy thôi
 
Chào GPE

Bạn có thể giải thích giúp mình đoạn code đó không?
Mà bạn diệt virút bằng phần mềm gì vậy cho mình xin được không?
 
Bạn có thể giải thích giúp mình đoạn code đó không?
1> Private Sub Worksheet_Change(ByVal Target As Range) ---> Ý muốn cho code chạy dựa vào sự thay đổi nào đó trên sheet
2> Application.ScreenUpdating = False ---> Thêm cái này vào để khi chạy code màn hình nó không giật giật (bạn bỏ đoạn này thử xem)
3> On Error Resume Next ---> Phòng ngừa có lỗi gì đó xuất hiện thì cho qua luôn
4> If Not Intersect([C4:C5], Target) Is Nothing Then ---> Ý muốn nói chỉ khi nào tôi thao tác thay đổi gì đó ở C4:C5 thì mới chạy code (gõ dử liệu chổ khác thì làm ơn im re dùm)
5> [A9].CurrentRegion.Offset(1).ClearContents
a) [A9].CurrentRegion --> Tương đương với việc bạn đặt con trỏ tại A9 rồi bấm tổ hợp phím Ctrl + Shift + * (sẽ chọn hết vùng dử liệu đang "dính" với A9)
b) [A9].CurrentRegion.Offset(1) ---> Từ vùng dử liệu vừa chọn, dịch xuống 1 dòng (đang ở dòng 9, dịch xuống 1 dòng thành dòng 10... Ý muốn chừa lại dòng tiêu đề)c) [A9].CurrentRegion.Offset(1).ClearContents ---> Xóa hết dử liệu, chừa lại tiêu đề

6> .AutoFilterMode = False ---> Hủy bỏ chế độ AutoFilter trên sheet
7> .AutoFilter 10, IIf([C4] = "", "*", [C4]) ---> AutoFilter dử liệu ở cột 10, điều kiện nếu C4 = "" (tức ta xóa C4) thì lấy hết cột 10... tương đương với việc chọn All... ngược lại thì lấy điều kiện theo C4
8> .Resize(, 4) ---> Điều chỉnh lại vùng dử liệu ---> Resize(x,y) tức điều chỉnh vùng dử liệu thành x dòng, y cột ---> Ở đây Resize(,4) là điều chỉnh dử liệu thành 4 cột, dòng không thay đổi
9> .PasteSpecial 3 ---> Tương đương với PasteSpecial\Value
10> XXX.Value = Evaluate("=Row($1:$1000)") ---> Tương đương với việc bạn quét chọn vùng XXX và gõ vào công thức mãng =ROW($1:$1000)
Một vài hướng dẩn ngắn gọn (chắc cũng còn rất nhiều thiếu sót)... Bạn hãy tham khảo thêm các bài viết cơ bản về VBA nhé:
http://www.giaiphapexcel.com/forum/showthread.php?t=650
------------------------------
Mà bạn diệt virút bằng phần mềm gì vậy cho mình xin được không?
Tôi chỉ dùng tay để "dọn" virus thôi... không xài bất cứ phần mềm diệt virus nào
 
Trợ giúp

Cám ơn bạn rất nhiều?
Nhưng bạn có thể giúp mình cộng tất cả những lọc trùng nhau.
VD: Lọc xong có hai dòng " Dây hàn trần" thì cộng gộp lại thành 1 dòng, cột số lượng là tổng số lượng 2 dòng. Mình đã làm kềm theo sheet "bk2" trong file kèm theo.
Mong bạn giúp hộ mình. Cám ơn nhiều!
 
Lần chỉnh sửa cuối:
Cám ơn bạn rất nhiều?
Nhưng bạn có thể giúp mình cộng tất cả những lọc trùng nhau.
VD: Lọc xong có hai dòng " Dây hàn trần" thì cộng gộp lại thành 1 dòng, cột số lượng là tổng số lượng 2 dòng. Mình đã làm kềm theo sheet "bk2" trong file kèm theo.
Mong bạn giúp hộ mình. Cám ơn nhiều!
Không biết có giống vầy không? Bạn kiểm tra lại nhé
(làm theo kiểu củ chuối thôi... có gì từ từ cải tiến sau)
 

File đính kèm

  • TrichLoc_03.rar
    75.5 KB · Đọc: 59
Hàm excel

Cám ơn GPE rất nhiều!
Mính có file này mong bạn trợ giúp mình.
Trong sheet "THNX" mình đang dùng hàm sumproduct để tính lượng nhập,xuất vật tư của sheet "NKNX" nhưng nó chỉ phù hợp khi dữ liệu trong sheet "NKNX" ít còn lượng dũ liệu nhiều thì nó tính toán rất chậm mặc dù máy của mình có cấu hình cao.
VD: Mình nhập dữ liệu đến dòng 700 thì nó mất khoảng 5 giây để tính toán.
Mình rất mong bạn giúp đỡ viết công thức để cải thiện thời gian tính toán.
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom