Cách thức lọc dữ liệu

  • Thread starter mail36
  • Ngày gửi
M

mail36

Guest
13/12/07
21
1
3
40
hhh
Em không biết nhiều về Execl, em muốn hỏi mọi người về cách thưc lọc dữ liệu trên một bảng tính như thế nào.(Ngoài cách dùng của AutoFilter ra)
Ví dụ: Em muốn lọc một từ "thuế" trong hàng loạt Thuế thu nhập Doanh nghiệp, Thuế thu nhập cá nhân, Thuế môn bài....Vậy tìm bằng cách nào ạ
Em mong sớm nhận được câu trả lời của mọi người. Cám ơn mọi người.
 
Khóa học Quản trị dòng tiền
D

ditimdl

Guest
9/11/07
6
0
0
43
DakLak
Bạn nói chung chung quá khó mà hiểu được bạn cần gì? Bạn gửi file đính kèm lên và yêu cầu lọc thế nào mọi người sẽ giúp bạn.
 
H

hoangdanh282vn

Trung cấp
31/3/07
75
6
0
TP.HCM
Em không biết nhiều về Execl, em muốn hỏi mọi người về cách thưc lọc dữ liệu trên một bảng tính như thế nào.(Ngoài cách dùng của AutoFilter ra)
Ví dụ: Em muốn lọc một từ "thuế" trong hàng loạt Thuế thu nhập Doanh nghiệp, Thuế thu nhập cá nhân, Thuế môn bài....Vậy tìm bằng cách nào ạ
Em mong sớm nhận được câu trả lời của mọi người. Cám ơn mọi người.

Có nhiều cách lọc khác nhau, nhưng để lọc dữ liệu gồm nhiều dòng thì ta dùng autofillter là nhanh nhất, nếu muốn bít về công thức thì dùng cột phụ(nhưng vẫn dùng autofillter)
Giả sử cột A chứa dữ liệu cần lọc
Tại cột B1 ta đặt công thứa sau :
=IF(AND(NOT(ISERR(SEARCH($C$1,A1))),$C$1<>""),1,0)
Với C1 là ô chứa từ hay một phần của từ, chuỗi cần lọc, VD thuế, thu, ti...
Sau đó dùng autofillter chọn ra những dòng chứa số 1 trong cột B. xong
 
H

handung107

Cao cấp
28/8/04
576
15
0
VN
www.giaiphapexcel.com
Đúng là có rất nhiều cách lọc, ngay cả dùng chức năng Filter của Excel, ngoài Auto Filter còn có Advanced Filter. Và trong Auto Filter cũng còn lựa chọn Custom nữa, bạn đã thử dùng hết chưa ?

Ngoài chức năng sẵn có của Excel, bạn có thể dùng các công thức Index, Match là các hàm dò tìm dữ liệu để kết hợp lọc chúng, thậm chí bạn còn có thể dùgn hàm mảng và Sumproduct

Ngoài ra, bạn cũng có thể dùng VBA để lọc dữ liệu theo những điều kiện bạn cần

Nếu bạn muốn nhận được một câu trả lời cụ thể cho vấn đề này, bạn cần gửi File, và nêu rõ bạn muốn hỏi về điều gì, chúng tôi mới có thể giúp bạn được
 
M

mail36

Guest
13/12/07
21
1
3
40
hhh
Cám ơn mọi người đã góp ý. Nhưng câu hỏi này là do một người bạn đã hỏi em, em ko rõ nên muốn đưa ra hỏi ý kiến mọi người.
Bạn Handung107 có thể trả lời chi tiết hơn được ko ạh.bạn có thể dùng các công thức Index, Match là các hàm dò tìm dữ liệu để kết hợp lọc chúng, thậm chí bạn còn có thể dùgn hàm mảng và Sumproduct
 
D

ditimdl

Guest
9/11/07
6
0
0
43
DakLak
Bạn đưa ra ví dụ để người khác giúp bạn chứ cứ nói chay thế này thì chung chung lắm.
 
B

born

Guest
7/12/07
3
0
0
36
hanoi
Xin các bác chỉ giúp, em có một bài toán lọc dữ liệu mà mò mãi không ra, không hiểu dùng advande filter có phù hợp không nữa, nên cậy nhờ 4r:
Nội dung bài là: em có 3 cột dữ liệu A,B,C, với mong muốn là lọc ra bảng dữ liệu thoả mãn điều kiện so sánh 3 cap so (AB, BA), (AC,CA), (BC, CB). Cụ thể là Cột A trừ đi B phải >=13 hoặc B-A >=13, tương tự như vậy với các cặp cột còn lại là A với C, B với C.

Rất mong nhận được sự chỉ giúp sớm của các bác.
Trân trọng
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
568
99
28
66
HCM city
Chắc bạn chưa thể đính kèm file, mình giả lập luôn!

Hướng dẫn sử dụng trước khi dùng:
Trong Sheets("S1"):
Tại [F1] bạn nhập giá trị chênh lệnh cần tìm
Tại [f3] bạn chọn hướng tìm trong hộp validation
Tại ComboBox (duy nhật) bạn chọn 2 cột cần so sánh
Chỉ sau đó bạn cho chạy macro (Bạn có thể gán macro này kèm theo ComboBox nếu bạn muốn. Nếu không biết gán thì sẽ có người hướng dẫn tiếp cho bạn
Chúc vui vẻ!:bigok:
Option Explicit
Sub LocTheoTri2Cot()
Dim lrow As Long, Wf As Long
Dim Col1 As Byte, Col2 As Byte

Application.ScreenUpdating = False
lrow = [a65500].End(xlUp).Row
Range([F6], Cells(lrow + 9, "J")).Clear
Range([f5], [h5]) = Range([A1], [C1]).Value
Col1 = Choose([e3], 1, 1, 2)
Col2 = Choose([e3], 2, 3, 3)
For Wf = 2 To lrow
Select Case Left([f3], 1)
Case ">"
If Cells(Wf, Col1) >= Cells(Wf, Col2) + [f1] Then
Cells(Wf, 1).Resize(, 3).Copy Destination:=[f65432].End(xlUp).Offset(1)
Cells([f65432].End(xlUp).Row, "I") = Wf
End If
Case "<"
If Cells(Wf, Col1) <= Cells(Wf, Col2) + [f1] Then
Cells(Wf, 1).Resize(, 3).Copy Destination:=[f65432].End(xlUp).Offset(1)
Cells([f65432].End(xlUp).Row, "I") = Wf
End If
End Select
Next Wf
End Sub
 

Đính kèm

  • GPE.COM.rar
    12.8 KB · Lượt xem: 383
B

born

Guest
7/12/07
3
0
0
36
hanoi
Cám ơn bác SA_DQ nhiều vì có sự trợ giúp sớm! Tuy nhiên, đúng như bác nhận xét e cũng chưa rành về macro và vba. Rất mong bác chỉ dẫn sâu hơn nếu phải gán macro thì thực hiện thế nào? Có thể dùng những hàm cho sẵn trong excel để thực hiện bài toán trên không? cụ thể là advande filter có làm được việc này không?
Cám ơn bác nhiều
 
HongViet

HongViet

Cao cấp
10/11/05
286
10
18
Đà nẵng
1./
Bác chỉ dẫn sâu hơn nếu phải gán macro thì thực hiện thế nào?
Để gán macro vô nút lệnh, bạn trình tự tiến hành như sau:
* Phải chuột vô ComboBox;
* Chọn dòng Assign Macro. . . trong menu vừa đổ xuống;
* Trong CS mới xuất hiện, sẽ có danh sách các macro đã được lập sẵn;
Hãy chọn tên 'LocTheoTri2Cot' & bấm vô nút 'OK' trong CS này;
Từ giờ trở đi, sau khi lựa giá trị tại [F1] & hướng chọn tại [F3] bằng hộp Validation (Tạm gọi là vậy). Sau đó ta chọn 2 cột trong ComboBox;
Vừa chọn xong thì macro sẽ thi hành & bạn chỉ việc rung đùi & kiểm kết quả lại mà thôi; (Chỉ cần kiểm kỹ 1 vài lần đầu, vừa để chiêm nghiệm macro vừa thưởng lãm kết quả mà nó đem lại để biết sự thú vị khi ta có công cụ êxcel E2003 trong tay)

2./ Có giải pháp nào nữa không? Câu trả lời là có; & bạn đã đúng 1 phần vì có thể sử dụng AdvancedFilter. Nhưng sẽ phức tạp nhiều vì phải dùng cột phụ
Nếu bạn rành về những vấn đề mình nêu thì thực thi đi. Sẽ có trợ giúp tiếp theo . . .
Chú ý một điều AdvancedFilter không phải là 1 hàm; Mình tạm gọi nó là phương thức
 
B

born

Guest
7/12/07
3
0
0
36
hanoi
Cám ơn bác HongViet đã chỉ giáo. Quả thật đã rất chịu khó ngồi dò từng dòng và cố hiểu đoạn mã macro trên nói về cái gì, nhưng khó quá. Rút cục dù đoạn mã và ví dụ cụ thể của các bác rất trực quan, nhưng e vẫn chưa ứng dụng được vào nội dung công việc của mình. Một số khó khăn cụ thể:
Bài toán như trên đã đề cập là có 3 cột A, B, C hoặc trong thực tế có thể tăng thêm là D, E, G...n. E muốn lọc dữ liệu thỏa mãn điều kiện:
Cặp số 1:
Cột A trừ đi B phải >=13
hoặc Cột B-A >=13
Cặp số 2:
Cột A-C >=13
hoặc Cột C-A >=13
Cặp số 3:
Cột B-C >=13
hoặc Cột C-B >=13
Vì vậy trong ví dụ khi em chưa hiểu:
- Tiêu đề của các cột AA, BB, CC có ý nghĩa gì.
- Mục combo chỉ có 3 cặp số thuận AB, AC, BC chưa có chiều ngược lại thì có thỏa mãn được điều kiện trên ko?
- Tại sao phải chọn tuần tự AB, AC, BC trong combo? Có thể có một lệnh chung mà lọc được luôn dữ liệu thỏa mãn điều kiện trên?

Vì chưa hiểu biết, nên có thể làm phiền thêm các bác, nếu hỏi ngây ngô quá mong các bác quan tâm bỏ quá và vẫn mong tiếp tục nhận được sự quan tâm chỉ dẫn thêm của các bác để vận dụng hiệu quả vào trường hợp cụ thể của bản thân. Nếu được dịch nôm na ra ngôn ngữ quần chúng đoạn mã macro trên thì tuyệt không gì bằng, vì có thể sửa chữa được như mong muốn.
Cám ơn các bác nhiều
 
HongViet

HongViet

Cao cấp
10/11/05
286
10
18
Đà nẵng
Cám ơn bác HongViet đã chỉ giáo. Quả thật đã rất chịu khó ngồi dò từng dòng và cố hiểu đoạn mã macro trên nói về cái gì, nhưng khó quá. Rút cục dù đoạn mã và ví dụ cụ thể của các bác rất trực quan, nhưng e vẫn chưa ứng dụng được vào nội dung công việc của mình. Một số khó khăn cụ thể:
Bài toán như trên đã đề cập là có 3 cột A, B, C hoặc trong thực tế có thể tăng thêm là D, E, G...n. E muốn lọc dữ liệu thỏa mãn điều kiện:
Cặp số 1:
Cột A trừ đi B phải >=13
hoặc Cột B-A >=13
Cặp số 2:
Cột A-C >=13
hoặc Cột C-A >=13
Cặp số 3:
Cột B-C >=13
hoặc Cột C-B >=13
Vì vậy trong ví dụ khi em chưa hiểu:
- Tiêu đề của các cột AA, BB, CC có ý nghĩa gì.
Tiêu đề để dễ phân biết các cột & đối chiếu dữ liệu sau khi macro thực thi.

- Mục combo chỉ có 3 cặp số thuận AB, AC, BC chưa có chiều ngược lại thì có thỏa mãn được điều kiện trên ko?
Nếu A>=B+15 (thì có nghĩa là B+15<=A)
Và A<=B + 15
Mình nghĩ bộ đôi này đủ cho bạn lựa chọn giữa 2 cột A & B rồi mà!
Bạn hãy chọn hướng so sánh trong [f3] mà!

- Tại sao phải chọn tuần tự AB, AC, BC trong combo? Có thể có một lệnh chung mà lọc được luôn dữ liệu thỏa mãn điều kiện trên?
Hiện tại mỗi lần macro chỉ hiện 1 kết quả so sánh/tìm kiếm theo yêu cầu 2 trong các cột mà thôi;
Còn nếu muốn 'A' luôn > 'B' 15 đơn vị & 'A' luôn >'C' 35 đơn vị thì phải viếc cái khác rồi;
Nếu được dịch nôm na ra ngôn ngữ quần chúng đoạn mã macro trên thì tuyệt không gì bằng, vì có thể sửa chữa được như mong muốn.
Cám ơn các bác nhiều
Sẽ giúp bạn định các dòng lệnh tối nay, khi mình rỗi!
Có thể bạn nhắn tin cho MOD/SMOD nhờ các bác í gởi file lên dùm bác;
Trước đây mình cũng làm vậy mới gởi file lên được: Nhớ trích
http://webketoan.vn/forum/newreply.php?do=newreply&p=425362 gởi cho MOD/SMOD biết chổ mà đưa file cho bạn đúng như bạn mong mõi
Chúng ta cùng chờ đợi vậy nha!
 
HongViet

HongViet

Cao cấp
10/11/05
286
10
18
Đà nẵng
Option Explicit
Sub LocTheoTri2Cot() 'Tên của macro
Dim lrow As Long, Wf As Long 'Khai báo hai biến có kiểu Long
Dim Col1 As Byte, Col2 As Byte 'Khai báo 2 biến có kiểu Byte để lưu giữ trị số cột trang tính'
Application.ScreenUpdating = False 'Dòng lệnh tránh cập nhật màn hình'
lrow = [a65500].End(xlUp).Row 'Dòng có dữ liệu cuối cùng của cột 'A' được gán vô biến kiểu Long'
Range([F6], Cells(lrow + 9, "J")).Clear 'Xoá vùng đủ chổ cho macro đưa kết quả vô sau đó'
Range([f5], [h5]) = Range([A1], [C1]).Value 'Gán trị cho vùng F5-H5 từ vùng A1-C1'
Col1 = Choose([e3], 1, 1, 2) 'Dùng hàm CHOOSE() trong VBA để chọn cột cần so sánh, đối chiếu ; Trị này được ta nhập vô ô [F3]
Col2 = Choose([e3], 2, 3, 3) 'Cũng như dòng lệnh trên; Nhưng đó sẽ là cột thứ hai cần so sánh'
For Wf = 2 To lrow 'Tạo vòng lặp từ dòng thứ 2 đến dòng cuối chưa dữ liệu (Cột 'A')'
Select Case Left([f3], 1) 'Xét điều kiện là ký tự đầu tiên ta đã nhập vô [F3]
Case ">" 'Nếu là ký tự '>' '
If Cells(Wf, Col1) >= Cells(Wf, Col2) + [f1] Then 'Nếu giá trị trong cột chọn so sánh trước > hay bằng trị trong cột thứ 2 + trị trong [F1], thì
Cells(Wf, 1).Resize(, 3).Copy Destination:=[f65432].End(xlUp).Offset(1)
'Dòng thoả điều kiện được chép đến nơi cần chép
Cells([f65432].End(xlUp).Row, "I") = Wf 'Ô bên phải thuộc dòng chép đến nêu trên được gán giá trị dòng vừa chép.(Nhằm xác định & kiểm chứng'
End If 'Kết thúc điều kiện If
'Các dòng sau cũng tương tự, nhưng hướng xét sẽ ngược lại với hướng trên

Case "<"
If Cells(Wf, Col1) <= Cells(Wf, Col2) + [f1] Then
Cells(Wf, 1).Resize(, 3).Copy Destination:=[f65432].End(xlUp).Offset(1)
Cells([f65432].End(xlUp).Row, "I") = Wf
End If
End Select
Next Wf
End Sub
 
N

nguyenvietviet

Guest
17/2/08
4
0
0
37
hai duong
Các bạn dùng nhiều cách thật đấy nhưng phải gửi ví dụ cho anh em tham khảo mới biết được chứ!
 
H

hung_mtuci

Guest
5/7/06
6
0
0
Viet Nam
Chào các bác,

Em cũng đang có câu hỏi về lọc dữ liệu nên xin phép được post bài trong chủ đề này luôn

Em có một cột gồm tên tên các đối tác:
1) Tên chỉ gồm các chữ cái
2) Tên bao gồm cả chữ cái và số

Em muốn chỉ lọc các đối tác loại 1 (chỉ gồm các chữ cái) riêng ra. Em sử dụng Auto Filter.

Tuy nhiên em không biết làm thể nào để khi sử dụng 1 trong các hàm ở mục "custum" làm sao để nó hiểu mình chỉ lọc lấy "text" hoặc chỉ lấy "number"

Em thử dùng hàm "does not contain" thì đã loại bỏ được các đối tác có tên + số nhưng chỉ là 1 trong cả dẫy số.

Vì em chỉ có thể chon số 1 hoặc số 2 .... chứ không biết bấm thể nào để nó hiểu sẽ lọc theo tất cả những gì liên quan đến số. Hoặc cùng lằm là nếu em đánh 1,2,3,4,5,6,7,8,9,0 thì nó sẽ lọc theo những số đấy.

Rất mong nhận được giúp đỡ của các bác.

Xuân Hưng.
 
adam_tran

adam_tran

Guitar inspiration
17/5/05
1,374
36
48
46
Goooogle
Chào các bác,

Em cũng đang có câu hỏi về lọc dữ liệu nên xin phép được post bài trong chủ đề này luôn

Em có một cột gồm tên tên các đối tác:
1) Tên chỉ gồm các chữ cái
2) Tên bao gồm cả chữ cái và số

Em muốn chỉ lọc các đối tác loại 1 (chỉ gồm các chữ cái) riêng ra. Em sử dụng Auto Filter.

Tuy nhiên em không biết làm thể nào để khi sử dụng 1 trong các hàm ở mục "custum" làm sao để nó hiểu mình chỉ lọc lấy "text" hoặc chỉ lấy "number"

Em thử dùng hàm "does not contain" thì đã loại bỏ được các đối tác có tên + số nhưng chỉ là 1 trong cả dẫy số.

Vì em chỉ có thể chon số 1 hoặc số 2 .... chứ không biết bấm thể nào để nó hiểu sẽ lọc theo tất cả những gì liên quan đến số. Hoặc cùng lằm là nếu em đánh 1,2,3,4,5,6,7,8,9,0 thì nó sẽ lọc theo những số đấy.

Rất mong nhận được giúp đỡ của các bác.

Xuân Hưng.

Yêu cầu của bạn có thể giải quyết = nhiều cách:
1. Thêm 1 cột phụ copy danh sách qua đây, dùng Find & Replace loại bỏ các con số rồi so với cột cũ, tên nào không thay đổi thì tên đó không chứa con số.
2. Dùng AutoFilter ít nhất 5 lần để loại bỏ dần dần vì điều kiện contain chỉ cho phép loại bỏ 2 số.
3. Dùng Advanced Filter với công thức trong Criteria Range:
Có thể dùng nhiều hàm để kiểm tra tồn tại của 1 chuỗi text trong 1 chuỗi khác hay không. Find, Search, Substitute .. đều có thể đuợc. Thí dụ: =NOT(OR(Find("0",A1)>0, Find("1",A1)>0, Find("3",A1) ............))
4. Dùng VBA
Các cách sau là các cách làm "pro" hơn nhưng chưa chắc đã nhanh hơn cách làm trước.
 
H

hung_mtuci

Guest
5/7/06
6
0
0
Viet Nam
Yêu cầu của bạn có thể giải quyết = nhiều cách:
1. Thêm 1 cột phụ copy danh sách qua đây, dùng Find & Replace loại bỏ các con số rồi so với cột cũ, tên nào không thay đổi thì tên đó không chứa con số.
2. Dùng AutoFilter ít nhất 5 lần để loại bỏ dần dần vì điều kiện contain chỉ cho phép loại bỏ 2 số.
3. Dùng Advanced Filter với công thức trong Criteria Range:
Có thể dùng nhiều hàm để kiểm tra tồn tại của 1 chuỗi text trong 1 chuỗi khác hay không. Find, Search, Substitute .. đều có thể đuợc. Thí dụ: =NOT(OR(Find("0",A1)>0, Find("1",A1)>0, Find("3",A1) ............))
4. Dùng VBA
Các cách sau là các cách làm "pro" hơn nhưng chưa chắc đã nhanh hơn cách làm trước.
Cảm ơn Bác, cách 1 em thấy có vẻ dễ sử dụng nhất.
 
S

SA_DQ

Thành viên Cố vấn - Webketoan Mentors
29/6/05
568
99
28
66
HCM city
Thêm 1 cách, thêm 1 lựa chọn

Cũng là cột phụ, bạn thử với hàm người dùng, như sau:
Mã:
Option Explicit
Function YesNumeric(HoTen As Range)
 Dim jJ As Byte, Num As Byte
 YesNumeric = "-"
 For jJ = 1 To Len(HoTen)
   If IsNumeric(Mid(HoTen, jJ, 1)) Then
      YesNumeric = Mid(HoTen, jJ, 1) & "-" & jJ
      Exit Function
   End If
 Next jJ
End Function

Hướng dẫn sử dụng trước khi dùng:
Chép hàm tự tạo đó vô ngăn VBE
Tại cột phụ ta nhập cú pháp hàm,
Ví dụ trường họ tên của bạn đang ở cột 'B'
Tại cột trống bật kỳ nào dùng làm cột fụ bạn nhập ( tại dòng 2)

=yesnumeric(B2)

& chép tiếp xuống cho hết cột dữ liệu
 
P

phongh

Guest
4/2/10
1
0
0
63
BUÔN MA THUỘT
Tôi có một việc rất phức tạp là có hai danh sách:ds1 và ds2 có tên trùng nhau và một số tên khác nhau ở cả hai danh sách.Tôi muốn lấy những tên của học sinh không trùng nhau ở cả hai danh sách này nhưng phải đủ cả 4 cột:họ tên-ngày sinh-tên cha-chỗ ở.Bạn nào giúp mình với nhé cảm ơn nhiều mình mới tham gia diễn đàn mong mọi người chỉ ngắn gọn xử lý trong Exel để lọc nhé.đã đọc bài dữ liệu trùng nhưng áp dụng không được cảm ơn nhiều. phong an sọng
 
A

atmt17

Trung cấp
26/9/08
70
1
6
Đồng Nai
Tôi có một việc rất phức tạp là có hai danh sách:ds1 và ds2 có tên trùng nhau và một số tên khác nhau ở cả hai danh sách.Tôi muốn lấy những tên của học sinh không trùng nhau ở cả hai danh sách này nhưng phải đủ cả 4 cột:họ tên-ngày sinh-tên cha-chỗ ở.Bạn nào giúp mình với nhé cảm ơn nhiều mình mới tham gia diễn đàn mong mọi người chỉ ngắn gọn xử lý trong Exel để lọc nhé.đã đọc bài dữ liệu trùng nhưng áp dụng không được cảm ơn nhiều. phong an sọng

Dùng Advanced Filter mà làm, rất ngắn gọn và đơn giản
Loại bài này bên www.giaiphapexcel.com có rất nhiều bạn đã từng hỏi
 

Xem nhiều

Webketoan Zalo OA