Trích dữ liệu thỏa nhiều điều kiện

Liên hệ QC

phong3si

Thành viên mới
Tham gia
6/7/10
Bài viết
25
Được thích
2
Các A/C giúp mình phải dùng công thức nào với điều kiện sau:
Nợ Đầu Kỳ của Khách Hàng có MaKH là A của ngày 24/08/10 = Nợ Cuối Kỳ của MaKH "A" ngày 23/08/10(MaKH không sắp theo thứ tự dòng)
Vậy với khoảng 200 KH(hoặc nhiều hơn),thì phải dùng công thức nào?
Chỉ sử dụng Hàm trong Excel,vì mình chẳng biết tí gì VBA đâu.
Cám ơn nhiều!
 
Lần chỉnh sửa cuối:
Các A/C giúp mình phải dùng công thức nào với điều kiện sau:
Nợ Đầu Kỳ của Khách Hàng có MaKH là A của ngày 24/08/10 = Nợ Cuối Kỳ của MaKH "A" ngày 23/08/10(MaKH không sắp theo thứ tự dòng)
Vậy với khoảng 200 KH(hoặc nhiều hơn),thì phải dùng công thức nào?
Chỉ sử dụng Hàm trong Excel,vì mình chẳng biết tí gì VBA đâu.
Cám ơn nhiều!
Bạn có thể dùng hàm vlookup, bạn nên đưa file ví dụ để anh em giúp bạn theo đúng ý hơn
 
Vì có rất nhiều KH,nhiều ngày,nên không thề dùng VLOOKUP được,sau đây là VD:
 

File đính kèm

Bạn dùng thử cách này xem, mình dùng công thức mảng vì chưa nghĩ ra cách nào hay hơn. Mình có tạo thêm 1 cột phụ bên phải, chính là số thứ tự dòng thôi (quên béng hàm nào trả về số thứ tự của 1 ô)
Good luck
 

File đính kèm

Bạn dùng thử cách này xem, mình dùng công thức mảng vì chưa nghĩ ra cách nào hay hơn. Mình có tạo thêm 1 cột phụ bên phải, chính là số thứ tự dòng thôi (quên béng hàm nào trả về số thứ tự của 1 ô)
Good luck

Tại ô I11 thay bằng công thức (Rồi nhấn tổ hợp phím Ctrl + Shift + Enter) sẽ ngắn gọn hơn và không cần cột phụ
PHP:
I11  =SUM(IF($B$6:$B10=B11,1,0)*IF($A$6:$A10=A11-1,1,0)*($K$6:$K10))
 
Cám ơn các A/c,nhưng khi áp dụng thì không đúng,không biết mình thao tác sai hay có vấn đề gì!,giữa ngày 24 và 26 của KH B...,mình thử thêm 1 vài KH nữa thì lại không đúng,xin hỏi lý do?và cách nào khác không?
Thanks!
 

File đính kèm

Lỗi này là do các ngày không liên tục. Theo đầu đề của bạn thì mình hiểu là nợ đầu kỳ ngày x = nợ cuối kỳ ngày x-1, nếu 2 ngày nó không liên tục như trường hợp KH B ngày 26 và ngày 24 thì mình chưa nghĩ ra cách! Bác boyxin vào tương trợ cái nhé.
 
Đây, mình đã sửa lại để có thể xử lý cả những trường hợp 2 ngày phát sinh cách xa nhau hơn 1 ngày. Có dùng thêm 1 cột phụ nữa cho tiện :=\+. Hàm chính thì bạn sửa lại theo bác boyxin cho nó dễ nhìn và chạy nhanh hơn nhé, mình hơi lười nên trong file vẫn sử dụng lại hàm cũ-=.,,
 

File đính kèm

các bạn chỉ giúp minh hàm để tính theo điều kiện cụ thẻ trong file mình gửi
 

File đính kèm

Bạn Muongla xem lại file cái nhé, mình ko thấy điều kiện j cả?
 
HTML:
 				 					Vì có rất nhiều KH,nhiều ngày,nên không thề dùng VLOOKUP được,sau đây là VD: 				 			  			 			  			  			  			  			 				 					[IMG]http://www.giaiphapexcel.com/forum/images/misc/paperclip.png[/IMG] Tập tin đính kèm 					 	[IMG]http://www.giaiphapexcel.com/forum/images/attach/xls.gif[/IMG] 	VD..xls  (17.5 KB, 24 lần tải)
Thêm công thức này nữa {=IF(B21="","",INDIRECT("K"&MAX(($B$6:B20=B21)*(ROW($B$6:B20)))))}
 

File đính kèm

Lần chỉnh sửa cuối:
Cám ơn các A/C giúp mình,sau khi áp dụng,(đương nhiên là phải sửa lại vị trí cột...cho phù hợp vói Bảng tính của mình),nhưng khi Enter(Ctrt+Shift+Enter) thì dấu { } mất tiêu,không sử dụng công thức đó được,vậy phải làm thế nào ạ?
Nếu như Bảng tính của mình có tới 65000 dòng,liệu khi sử dụng công thức như thế(của Chu.cuoi92 chẳng hạn),thì máy tính có chậm lại không?nếu có,thì xin cho biết cách khắc phục.
Cám ơn nhiều!
 
Cám ơn các A/C giúp mình,sau khi áp dụng,(đương nhiên là phải sửa lại vị trí cột...cho phù hợp vói Bảng tính của mình),nhưng khi Enter(Ctrt+Shift+Enter) thì dấu { } mất tiêu,không sử dụng công thức đó được,vậy phải làm thế nào ạ?
Nếu như Bảng tính của mình có tới 65000 dòng,liệu khi sử dụng công thức như thế(của Chu.cuoi92 chẳng hạn),thì máy tính có chậm lại không?nếu có,thì xin cho biết cách khắc phục.
Cám ơn nhiều!

Ngững công thức này (có dấu {=......}) khi muốn sửa thì phải kết thúc bằng tổ hợp phím Ctrl + Shift + Enter

Đương nhiên khi dữ liệu càng nhiều => nhiều công thức, máy tính phải tính toán nhiều => chậm ra kết quả hơn.

Cách khắc phục đơn giản nhất mà lại không dễ tý nào là thay 1 ẻm computer cấu hình khủng --=0)

Góp 1 phương án (Cần set: Tools\Macro\Security... Chọn Low)
 

File đính kèm

Lần chỉnh sửa cuối:
Sao mình coppy xuống thì nó báo lổi vậy?có cách nào tốt hơn nữa không?mà không phải thay 1 ẻm computer cấu hình khủng --=0)
Dùng công thức trước thì máy bị treo luôn-\\/.
 

File đính kèm

1) Sao mình coppy xuống thì nó báo lổi vậy?
2) có cách nào tốt hơn nữa không?mà không phải thay 1 ẻm computer cấu hình khủng --=0)

Dùng công thức trước thì máy bị treo luôn-\\/.

1)sao lại là lỗi.
Bạn làm thao tác này chưa? - Chắc chắn là chưa rồi, vào làm lại đi (Tools\Macro\Security... Chọn Low)

2) Bạn muốn tốt đến mức độ nào? (Nếu có người khác làm thay để mình có thể đi uống cafe' thì có phải là tốt hơn không? muốn vậy thì cần phải làm gì chắc bạn đã biết)
 
Lần chỉnh sửa cuối:
1)sao lại là lỗi.
Bạn làm thao tác này chưa? - Chắc chắn là chưa rồi, vào làm lại đi (Tools\Macro\Security... Chọn Low)

2) Bạn muốn tốt đến mức độ nào? (Nếu có người khác làm thay để mình có thể đi uống cafe' thì có phải là tốt hơn không? muốn vậy thì cần phải làm gì chắc bạn đã biết)
Mình thấy cách làm của bạn cực kỳ đơn giản,nhưng sao mình áp dụng k được,mình thì coppy công thức đó vào,sửa lại cột,còn gì nữa k?|||||
Thú thật,máy tính míh chỉ tàm tạm thôi,xài hàm khác thì chạy k nổi,có thể,bạn giải thích giùm công thức đó được k?(=Dauky(B11,$K$5...)
 
Mình thấy cách làm của bạn cực kỳ đơn giản,nhưng sao mình áp dụng k được,mình thì coppy công thức đó vào,sửa lại cột,còn gì nữa k?|||||
Thú thật,máy tính míh chỉ tàm tạm thôi,xài hàm khác thì chạy k nổi,có thể,bạn giải thích giùm công thức đó được k?(=Dauky(B11,$K$5...)
Trong file đó, mình tự tạo ra 1 hàm đảm bảo theo yêu cầu của bạn mà chạy nhanh, không làm máy bị chậm, sử dụng dễ dàng

Đây là code của hàm đó. Muốn sử dụng hàm này cho File khác thì phải chép code này theo
1) mở Excel và Nhấn Alt + F11
2) Vào Insert \ Module rồi chép đoạn code này vào
PHP:
Function Dauky(KH As Range, Cuoiky As Range)
For i = KH.Row - 1 To Cuoiky.Row Step -1
    If (Cells(i, KH.Column) = KH.Value) And (KH <> "") Then
        tmp = Cells(i, Cuoiky.Column): Exit For
    End If
Next: Dauky = tmp
End Function
Cú pháp và cách dùng: =Dauky(MaKH, NoCuoiKy)
VD: trong file của bạn MaKH ở cột B, Ô trên cùng của cột NoDauKy trong bảng là K5
khi đó công thứ tại ô I11 là =Dauky(B11,$K$5)
 
Sau khi làm theo đúng như bạn hướng dẫn,mình vẫn không làm được,thú thật mình chẳng biết tí gì về VBA,bạn có thể hướng dẫn chi tiết hơn được chứ?%#^#$
 
Chuyện như thế này,sau khi coppy đoạn code bạn viết,rồi dán vào,phải vậy k?ý mình hỏi là sau đó,phải lảm các thao tác gì để dùng hàm của bạn?mình thì dốt,nên hỏi hơi nhiều,nếu có thể thì giúp mình,còn k thì cũng chịu,hi..
Thanks!
 
Web KT

Bài viết mới nhất

Back
Top Bottom