Các anh chị giúp em với!
Em muốn lọc dữ liệu theo tháng 1,2,3...để hiện ra danh sách thu, chi trong tháng tương ứng là bao nhiêu thì em phải làm thế nào?
Em có kèm theo file. mong các anh chị giúp em!!
Mà sao em gởi file đính kèm để anh chị xem lại bị báo lỗi hoài àh( file .xls chỉ có 20KB thôi)!
Các anh chị giúp em với!
Em muốn lọc dữ liệu theo tháng 1,2,3...để hiện ra danh sách thu, chi trong tháng tương ứng là bao nhiêu thì em phải làm thế nào?
Em có kèm theo file. mong các anh chị giúp em!!
Mà sao em gởi file đính kèm để anh chị xem lại bị báo lỗi hoài àh( file .xls chỉ có 20KB thôi)!
dear:
bạn có thể sử dụng "subtotal" để làm,cách làm như sau:
1/Sort dữ liệu theo thứ tự của tháng(vd:1,2,3....)
2/Vào Data/Subtotals: ở đây có nhiều lựa chọn cho bạn
a/ Add each change in: thay đổi dữ liệu theo từng mục(ở đây là tháng)
b/Use function: sử dụng hàm(vd: sum,count.....)
c/Add subtotal to: tuỳ theo sự lựa chọn của bạn(vd: chi trong tháng hoặc thu trong tháng..)
vài dòng gởi bạn
thân.
Các anh chị giúp em với!
Em muốn lọc dữ liệu theo tháng 1,2,3...để hiện ra danh sách thu, chi trong tháng tương ứng là bao nhiêu thì em phải làm thế nào?
Em có kèm theo file. mong các anh chị giúp em!!
Mà sao em gởi file đính kèm để anh chị xem lại bị báo lỗi hoài àh( file .xls chỉ có 20KB thôi)!
Xin các bạn chỉ gíup. Mình muốn qua sheet2 lọc mặt hàng và số lượng đã nhập từ một ngày bất kỳ tới một ngày bất kỳ thì phải làm thế nào.Cảm ơn các bạn trước.
Xin các bạn chỉ gíup. Mình muốn qua sheet2 lọc mặt hàng và số lượng đã nhập từ một ngày bất kỳ tới một ngày bất kỳ thì phải làm thế nào.Cảm ơn các bạn trước.
tôi cũng đang gặp phải 1 vấn đề về lọc dữ liệu đây . mong các bạn chỉ giáo :
tôi muốn lọc tự động bằng hàm ra mỗi ngày 5 người có doanh thu cao nhất và 5 người có doanh thu thấp nhất . đã nghĩ nhiều hàm mà chưa ra. bạn nào giúp được tôi với ( file đính kèm )
Nếu đồng ý sort theo ngày tháng sau đó doanh thu, thì có công thức: 2 công thức cho min, 2 công thức cho max và 3 name
Min cũng có thể tính bằng công thức mảng {= DTi}
Nếu đồng ý sort theo ngày tháng sau đó doanh thu, thì có công thức: 2 công thức cho min, 2 công thức cho max và 3 name
Min cũng có thể tính bằng công thức mảng {= DTi}
Sai yêu cầu rồi sư phụ ơi!
Người ta nói lọc ra 5 NGƯỜI có doanh thu cao nhất và 5 NGƯỜI có doanh thu thấp nhất...
Chứ người ta không nói lọc ra 5 mức doanh thu cao nhất và 5 mức doanh thu thấp nhất!
tôi cũng đang gặp phải 1 vấn đề về lọc dữ liệu đây . mong các bạn chỉ giáo :
tôi muốn lọc tự động bằng hàm ra mỗi ngày 5 người có doanh thu cao nhất và 5 người có doanh thu thấp nhất . đã nghĩ nhiều hàm mà chưa ra. bạn nào giúp được tôi với ( file đính kèm )
Việc lấy 5 DT cao nhất và thấp nhất không hề khó ---> Cái khó là phải đối chiếu ngược lại để trích ra Mã NV tương ứng với DT (vì có khả năng DT bị trùng)
Bạn xem file này nhé!
tôi cũng đang gặp phải 1 vấn đề về lọc dữ liệu đây . mong các bạn chỉ giáo :
tôi muốn lọc tự động bằng hàm ra mỗi ngày 5 người có doanh thu cao nhất và 5 người có doanh thu thấp nhất . đã nghĩ nhiều hàm mà chưa ra. bạn nào giúp được tôi với ( file đính kèm )
Xin góp một cái cho vui. Vui thôi nha, hỏng dám nói là hay.
Mới đầu tôi tính góp ý với bạn là bạn sửa lại cái Data của bạn một chút, gì mà ô trống tùm lum, rồi cột số tiền bằng 0 cũng tùm lum... Nhưng rồi thôi, để vậy chơi luôn, biết đâu bạn có ý đồ gì đó mà tôi không biết.
Tôi làm ngay trên cái file của bạn luôn nha. Mở file ra, bạn sẽ thấy cái này:
Nhấn chọn ô F3 (cái ô có màu hồng), sẽ có một cái mũi tên be bé xinh xinh hiện ra cho bạn chọn ngày muốn xem.
Bạn cũng có thể gõ thẳng ngày vào đó, nhưng nhớ là, data của bạn có đến ngày nào thì chỉ được gõ tối đa là ngày đó thôi, gõ ngày không có trong data Excel nó la làng ráng chịu.
Và dĩ nhiên là nếu bạn nhập thêm dữ liệu vào data thì danh sách ngày trong cái ô này cũng sẽ tự động cập nhật (nhưng hiện tại thì sau khi nhập xong, làm ơn nhấn Save một cái, danh sách đó mới cập nhật được, chứ tôi không có làm cho nó cập nhật ngay khi bạn vừa nhập thêm data xong).
Mấy con số 1,2,3,4,5 ở F4:F8 là chỉ ra người xếp cao (hoặc thấp) thứ 1, thứ 2... chứ không phải là con số chỉ ngày.
Như trên có nói, dữ liệu của bạn có nhiều số 0 và ô trống quá... nên tạm thời tôi không để ý tới mấy số 0 và mấy cái ô trống đó. Bởi vì nếu tính số 0 thì cái chỗ xếp loại 5 người có doanh thu thấp nhất (Bottom 5) nhiều khi sẽ có đến 4 người có số tiền doanh thu là 0... nhìn tức cười lắm... Còn nếu bạn muốn xếp loại cả những người có doanh thu là 0, thì bạn nói nha, tôi sửa lại cho.
(File đính kèm, xin download ở bài #16: Max5Min5.xls)
Hình như có sai cái gì đó... tôi thay đổi số liệu mà chẳng thấy công thức cập nhật (thử thay cell D5 = 2, lý ra nó phải là nhỏ nhất trong ngày 1 chứ)
Thêm nữa: Chú ý 2 Mã khác nhau có cùng DT trong 1 ngày nha!
Hình như có sai cái gì đó... tôi thay đổi số liệu mà chẳng thấy công thức cập nhật (thử thay cell D5 = 2, lý ra nó phải là nhỏ nhất trong ngày 1 chứ)
Thêm nữa: Chú ý 2 Mã khác nhau có cùng DT trong 1 ngày nha!
Có thể chỉnh sửa lại:
- Bỏ bớt biến
- Thay vòng lập For = Advanced Filter (lọc list ngày)
- Hình như BNTT quên Clear sạch vùng trước khi lọc (muốn đặt kết quả lọc tại đâu thì phải xóa vùng ấy trước)
Tạm sửa lại:
PHP:
Sub Loc()
Sheet2.Range("E:G").ClearContents
With Range(Sheet2.[A1], Sheet2.[A65536].End(xlUp))
.Resize(, 3).AutoFilter 1, Sheet1.[F3]
.Resize(, 3).AutoFilter 2, "<>"
.Offset(, 0).Copy Destination:=Sheet2.[E1]
.Offset(, 1).Copy Destination:=Sheet2.[G1]
.Offset(, 2).Copy Destination:=Sheet2.[F1]
.AutoFilter
End With
End Sub
PHP:
Sub Start()
Union(Sheet2.Range("A:C"), Range("K:K")).ClearContents
Range(Sheet1.[B1], Sheet1.[B65536].End(xlUp)).Resize(, 3).Copy
Sheet2.Range("A1").PasteSpecial 3
With Range(Sheet2.[A1], Sheet2.[A65536].End(xlUp))
.Resize(, 3).Sort .Cells(1, 2), 2, .Cells(1, 1), Header:=xlYes
.AdvancedFilter 2, , Sheet2.[K1], True
End With
Call Loc
End Sub
Tuy nhiên vẫn còn phải cải tiến:
- Cố gắng bỏ bớt các vùng tạm (hiện có 2 vùng tạm ---> Cố gắng giảm còn 1 vùng)
- Nếu dùng VBA thì cố gắng bỏ luôn công thức ---> Thay VLOOKUP bằng Find method
vân vân...
Anh quên mất rằng, khi Advanced trích lọc dữ liệu sang vùng khác, nó sẽ xóa sạch tất cả những gì đang có trong đó à? Đâu có cần phải Clear cái vùng sẽ trích lọc ra này? Anh Unhide cái Sheet2 trong file của em nha, rồi sau mỗi lần chọn tháng ở "cái ô màu hồng" (bên Sheet1), anh nhảy sang Sheet2 xem thử cái vùng lọc (E:G) nó có bị 2 tháng ở trong đó không là biết liền hà.
Đã xong vụ "2 Mã khác nhau có cùng DT trong 1 ngày", và cập nhật lại danh sách ngay khi vừa sửa hoặc thêm bớt dữ liệu.
Anh quên mất rằng, khi Advanced trích lọc dữ liệu sang vùng khác, nó sẽ xóa sạch tất cả những gì đang có trong đó à? Đâu có cần phải Clear cái vùng sẽ trích lọc ra này? Anh Unhide cái Sheet2 trong file của em nha, rồi sau mỗi lần chọn tháng ở "cái ô màu hồng" (bên Sheet1), anh nhảy sang Sheet2 xem thử cái vùng lọc (E:G) nó có bị 2 tháng ở trong đó không là biết liền hà.
BNTT kiểm tra lại trường hợp này nhé: Trong dử liệu nhập, ta mới vừa nhập xong dử liệu ngày 6... tức ngày 6 chỉ mới có 1 dòng dử liệu
???
-----------------------------------------------------------------------------------
Để làm file này bằng VBA, tôi làm theo quy trình như sau:
1> AutoFilter dử liệu với cột Ngày = điều kiện nhập tại cell F3
2> AutoFilter dử liệu với cột MNV <> rổng
3> Copy dử liệu vừa Filter sang vùng tạm tại sheet2 (không lấy cột Ngày)
4> Hủy chế độ AutoFilter ở sheet1
Đoạn code này như sau:
PHP:
With Range(Sheet1.[B1], Sheet1.[B65536].End(xlUp)).Resize(, 3)
.AutoFilter 1, CDbl(Target): .AutoFilter 2, "<>"
.Offset(, 1).Resize(, 2).SpecialCells(12).Copy
Sheet2.Range("A1").PasteSpecial 3
.AutoFilter
End With
5> Chuyển sang sheet2, ta sort cột T.DT tăng dần rồi copy 5 cell trên cùng, dán vào G4 của Sheet1
6> Lại sort tiếp vùng tạm ở sheet2.. sort T.DT giảm dần rồi cũng copy 5 cell trên cùng, dán vào I4 của Sheet1
Hai công đoạn này hầu như giống nhau (chỉ khác công đoạn sort) nên có thể ghép lại thành 1:
PHP:
With Sheet2.Range("A1").CurrentRegion
For i = 1 To 2
.Sort .Cells(1, 2), i, Header:=1
Target.Offset(1, i * 2 - 1).Resize(5, 2).Value = .Offset(1).Resize(5).Value
Next i
End With
-----------------------------------------------------------------------------------
7> Vậy là xong! Thêm tí "mắm muối" vào là có thể "ăn" được:
PHP:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Long
On Error Resume Next
If Target.Address = "$F$3" Then
Application.ScreenUpdating = False
Sheet1.Range("G4:J8").ClearContents
Sheet2.Range("A:B").ClearContents
If IsNumeric(Target) Or Target = "All" Then
With Range(Sheet1.[B1], Sheet1.[B65536].End(xlUp)).Resize(, 3)
.AutoFilter 1, CDbl(Target): .AutoFilter 2, "<>"
.Offset(, 1).Resize(, 2).SpecialCells(12).Copy
Sheet2.Range("A1").PasteSpecial 3
.AutoFilter
End With
With Sheet2.Range("A1").CurrentRegion
For i = 1 To 2
.Sort .Cells(1, 2), i, Header:=1
Target.Offset(1, i * 2 - 1).Resize(5, 2).Value = .Offset(1).Resize(5).Value
Next i
End With
End If
End If
End Sub
----------------------------------------------------------------------------------- Cách dùng:
- Code chỉ làm việc khi ta gõ vào F3 (không cần Validation vì... hao code, hao vùng phụ)
- Khi nhập liệu tại các cột B, C, D thì code không cập nhật ---> Thật ra có thể làm cho code cập nhật ngay khi nhập liệu, nhưng điều này không mấy gì hay (code sẽ làm việc liên tục)
- Nếu gõ sai điều kiện thì sẽ cho kết quả = rổng
- Nếu gõ chử All vào cell F3, đồng nghĩa ta muốn lọc toàn bộ
----------------------------------------------------------------------------------- Lưu ý:
- Như các bạn thấy, trong file có 4 vùng tham gia tính toán: Vùng dử liệu gốc (B), vùng nhập điều kiện lọc tại F3, vùng tạm tại sheet2 và vùng kết quả G4:J8
- Vậy chúng ta chỉ cần "bám" vào 4 vùng này mà triển khai code ---> Không cần đặt quá nhiều biến và tăng thêm tham chiếu (đôi lúc dể chóng mặt lắm)
Lấy ví dụ nếu ta viết: With Sheet2.Range("A1").CurrentRegion
mà lại .Sort Sheet2.Range("B1")
thì... hơi bị dở ---> Lý do là vô tình bạn lại cho thằng em Sheet2.Range("B1") thành vùng thứ 5... mai này nếu có chỉnh sửa, chèn dòng, chèn cột.... mà vào sửa lại code chắc "khùng" luôn
Theo tôi, phải bám vào cái With ở trên: With Sheet2.Range("A1").CurrentRegion
.Sort .Cells(1, 2)
.........
Nếu có sửa code, chỉ sửa lại Sheet2.Range("A1") ---> Ở giửa With... EndWith không thay đổi
- Đoạn code trên cùng, các bạn thấy có CDbl(Target) ---> Lý do là phòng ngừa dử liệu thật có thể là NGÀY THÁNG (chứ không phải số), lúc ấy không lồng CDbl vào là không xong!
- Ngoài ra nếu ta dùng CDbl thì khi bạn gõ vào F3 dử liệu kiểu TEXT, nó sẽ lọc TOÀN BỘ ---> Đấy là lý do có đoạn If IsNumeric(Target) Or Target = "All" Then (đương nhiên đã có On Error Resume Next bẩy lổi nằm trên cùng)
- Nói chung viết code chỉ là "tập dượt" ---> Còn để làm bài này hoàn hảo, tôi thấy nên dùng Pivot Table là hay nhất
...vân vân....
Đó chỉ là kinh nghiệm cá nhân, các bạn bổ sung nếu có sai sót
Mình sẽ hướng dẫn từ xa việc AdvancedFilter, Bạn thử làm theo nha:
(1) Tại trang tính Sheet1 bạn copy dòng tiêu đề dữ liệu đến [M3:O3];
Tiếp theo bạn chép tiêu đề [D3] đến [J3:K3] (Tháng,năm)
Tại [J4] bạn thiết lập công thức: =">="&Sheet2!D3 & ô bên fải liền kề bạn lập CT: ="<="&Sheet2!F3
(2) Bạn chép 3 macro sau vô module 1:
Mã:
Option Explicit
Dim Sh As Worksheet, eRw As Long
[B]Sub Filters()[/B] [COLOR=Red] [B]'1'[/B][/COLOR]
Set Sh = Sheets("Sheet1"): eRw = Sh.[d65500].End(xlUp).Row
[d5].Resize(eRw, 3).ClearContents
AdvFilter Sh.[j3].Resize(2, 2)
[B]End Sub[/B]
Mã:
[B]Sub Filter()[/B] [COLOR=Red][B] '2'[/B][/COLOR]
Sheet2.[d3].Value = [d4].Value
Set Sh = Sheets("Sheet1"): eRw = Sh.[d65500].End(xlUp).Row
[d5].Resize(eRw, 3).ClearContents
AdvFilter Sh.[j3].Resize(2)
[B]End Sub[/B]
PHP:
Sub AdvFilter(Criter As Range) '3'
Sh.[d3].Resize(eRw, 3).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Criter, CopyToRange:=Sh.[m3].Resize(, 3), Unique:=False
Sh.[m3].CurrentRegion.Offset(1).Copy Destination:=[d5]
End Sub
(3) Bạn gắn kết macro 1 vô nút lệnh tại trang tính Sheet2 & Macro 2 vô nút lệnh tại trang tính 3
Sau đó bấm chạy thử 2 macro nhiều lần & kiểm kết quả
Những mong là khỏi gởi kèm file bạn cũng hoàn thành mỹ mãn!
Sub AdvFilter(Optional GPE As Boolean = True)
Dim Criter As Range
Dim Sh As Worksheet, eRw As Long
Set Sh = Sheets("Sheet1"): eRw = Sh.[d65500].End(xlUp).Row
Set Criter = Sh.[j3].Resize(2, 2)
If GPE Then
Sheet2.[d3].Value = [d4].Value: Sheet2.[F3].Value = [d4].Value
End If
[d5].Resize(eRw, 3).ClearContents
Sh.[d3].Resize(eRw, 3).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Criter, CopyToRange:=Sh.[m3].Resize(, 3), Unique:=False
Sh.[m3].CurrentRegion.Offset(1).Copy Destination:=[d5]
End Sub
hi Danh!
mình đang cần 1 life lọc tương tự như thế này nè nhưng lọc trong 1 khoảng thời gian nào đó( vd: từ 1/2/2013 đến 3/4/2013). mong anh Danh chỉ dùm em cách làm với. Thanks!
Nhờ Các Bạn Sửa Lại Cái Code Và Đổi Tên Sheet Trong Code Cho Mình Với. * Các Bạn Sửa Lại Cho Mình Như Sau:
1. Sửa Để Có Thể Lọc Được Từ Tháng 102009 Đến Tháng 82010 (102010 - 82011…102049 - 82050 )
2. Trong Sheet4 Bạn Làm Cho Nó Lọc 01 Tháng Thôi.
3. Bạn Đổi Tên Các Sheet Ở Trong Code Cho Mình Như Sau: Sheet1=Data ;Sheet2=Nam ;Sheet4=Py.
Code:
Sub Loc()
Sheet2.Range("A5:AX65536").ClearContents
With Sheet1.Range("D5").CurrentRegion
.AutoFilter 1, ">=" & CDbl(Sheet2.[D2]), xlAnd, "<=" & CDbl(Sheet2.[F2])
.SpecialCells(12).Copy: Sheet2.Range("D5 ").PasteSpecial 3
.AutoFilter
End With
Sheet2.Range("D5").Select
End Sub
Nhờ các bác giải giúp em cái thắc mắc trong file đính kèm
Em có 2 sheet, trong đó 1 sheet nhập data và 1 sheet Tong hop làm báo cáo
Bây giờ em muốn lọc số KM đầu và Số Km cuối rong Sheet tong họp từ cột Số KM TH bên sheet data sao cho thỏa mãn các điều kiện sau:
- Số KM đầu là số KM nhỏ nhất trong cột Số KM TH bên Sheet data theo khoảng thời gian bôi vàng bên sheet Tong hop sao cho thỏa mãn các điều kiện: Chỉ lọc số KM khi cột Ma_CV có chữ "nl", lọc theo từng xe nữa.
Tương tự Số KM cuối là số KM lớn nhất trong cột Số KM TH bên Sheet data theo khoảng thời gian bôi vàng bên sheet Tong hop sao cho thỏa mãn các điều kiện: Chỉ lọc số KM khi cột Ma_CV có chữ "nl", lọc theo từng xe nữa.
Chào anh Chị,
Mình cũng đang có một vấn đề về excel tương tự nhưng lại yêu cầu cao hơn:
- muốn lọc số liệu của một sản phẩm theo từng tháng, liệt kê thành bảng tổng hợp theo tháng.
Đính kèm là file tổng hợp trong năm 2016, vì số lượng quá lớn mà tổng hợp filter từ sheet "Báo cáo" qua sheet "2016" phải nhập thủ công nên A/C nào biết hàm nào có thể thực hiện được nhanh hơn không?
Mới vào công ty bị đưa một đống số liệu từ 2014 đến nay phải tổng hợp, nếu không có cách nào chắc nhập tay sẽ...
A/C nào có cách xử lý hay xin hướng dẫn trên này để mọi người làm theo.
Vì để dễ hình dung đối với tài liệu của mình nên mới gửi file lên.
Nếu bạn có giải pháp nào đơn giản mà có thể áp dụng được thì chia sẽ trên này để nhiều người nghiên cứu luôn, như vậy thì quá tốt rồi.
Befaint: Xin lỗi vì bài viết của mình làm bạn khó chịu.
AnhDoanhơi!
- file anh gửi (lọc tự động) ấy ạ, e không thể tìm ra cách anh làm sao để click ở tháng mà dữ liệu tự động lấy được ạ . ANh có thể hướng dẫn chi tiết trong file ấy được không ạ, em xin cảm ơn
cực kì quan tâm phần này , em đang bán hàng cần học về cái này. Anh, chị nào nhận gia sư phần này, hoặc chỉ lớp học nào dạy phần này em xin hậu tạ, sdt 0121 567 5035.
em có một file excel , nhưng hiện tại bị lỗi không thể lọc doanh thu theo từng ngày được, và không hiểu chỉnh chỗ nào anh chị nào sửa giúp em, em xin hậu tạ
File đính kèm
shopee - NXT combobox + sumifs 1.8.2017 file không tổng doanh thu được.xls