Một kiểu trích xuất dử liệu mới! (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,912
Chào các bạn!
Hôm nay tôi tình cờ nghĩ ra dc 1 cách trích xuất dử liệu kiểu mới, xin chia sẽ với mọi người tham khảo và đóng góp ý kiến.
Việc trích xuất dử liệu từ 1 sheet DATA có sẳn sang 1 sheet khác dựa trên điều kiện nào đó thì trên GPE đã nói rất nhiều... Ở đây chỉ xin trình bày 1 cách thể hiện khác mà theo tôi có thể góp phần tiết kiệm dc tài nguyên hệ thống
Các bạn mở file và chú ý sheet CHITIET, nó liệt kê các mặt hàng bán trong 1 thời điểm nào đó, tôi giã lập 3 mặt hàng, bán từ đầu năm đến cuối năm 2007... Tiếp tục sang sheet THONGKE, nó liệt kê ra những record thỏa mãn điều kiện khi chọn ComboBox...
Do ta ko biết dc chính xác số lượng record thỏa điều kiện là bao nhiêu nên ta thường ướm chừng và kéo fill công thức dư ra 1 số dòng nhất định (chẳng hạn là 100 dòng)... Điều này có 2 nhược điểm:
1> Nếu số lượng record thỏa điều kiện > 100 dòng thì ta đã bỏ mất 1 số chi tiết cần trích
2> Nếu số lượng record thỏa điều kiện chỉ có vài dòng hoặc vài chục dòng thì phần rỗng bên dưới là phí phạm ko đáng, lại còn làm file tăng dung lương vì những công thức này
Cách làm của tôi tập trung ở 3 điểm:
Thứ nhất: Chỉ kéo fill công thức trong khoảng dòng nhất định (trong file là 16 dòng)
Thứ hai: Dùng Scrollbar đễ kéo, nếu có record nào thỏa mãn điều kiện mà nằm ở vị trí thứ 17 trở lên thì khi kéo Scrollbar nó sẽ hiện ra
Thứ ba: Tạo 1 dấu hiệu cuối bảng đễ biết là "Còn nữa" hay "Đã hết"... Nếu các bạn nhìn thấy dấu mũi tên xuống màu đỏ thì biết rằng phía dưới còn các record ẩn chưa dc thể hiện trên bảng tính... Món này có thể làm bằng công thức hoặc Conditional Formating (ở đây tôi dùng công thức)
Nói thì dài dòng... các bạn thao tác sẽ thấy dc ý nghĩa thực sự của file này là thế nào?
Còn có thể cải tiến thêm nhiều nữa cho file trở nên hấp dẩn hơn, tùy theo sự sáng tạo của các bạn!
Mong dc góp ý!
ANH TUẤN
 

File đính kèm

Lần chỉnh sửa cuối:
anhtuan1066 đã viết:
Chào các bạn!
Hôm nay tôi tình cờ nghĩ ra dc 1 cách trích xuất dử liệu kiểu mới, xin chia sẽ với mọi người tham khảo và đóng góp ý kiến.
Việc trích xuất dử liệu từ 1 sheet DATA có sẳn sang 1 sheet khác dựa trên điều kiện nào đó thì trên GPE đã nói rất nhiều... Ở đây chỉ xin trình bày 1 cách thể hiện khác mà theo tôi có thể góp phần tiết kiệm dc tài nguyên hệ thống
Các bạn mở file và chú ý sheet CHITIET, nó liệt kê các mặt hàng bán trong 1 thời điểm nào đó, tôi giã lập 3 mặt hàng, bán từ đầu năm đến cuối năm 2007... Tiếp tục sang sheet THONGKE, nó liệt kê ra những record thỏa mãn điều kiện khi chọn ComboBox...
Do ta ko biết dc chính xác số lượng record thỏa điều kiện là bao nhiêu nên ta thường ướm chừng và kéo fill công thức dư ra 1 số dòng nhất định (chẳng hạn là 100 dòng)... Điều này có 2 nhược điểm:
1> Nếu số lượng record thỏa điều kiện > 100 dòng thì ta đã bỏ mất 1 số chi tiết cần trích
2> Nếu số lượng record thỏa điều kiện chỉ có vài dòng hoặc vài chục dòng thì phần rỗng bên dưới là phí phạm ko đáng, lại còn làm file tăng dung lương vì những công thức này
Cách làm của tôi tập trung ở 3 điểm:
Thứ nhất: Chỉ kéo fill công thức trong khoảng dòng nhất định (trong file là 16 dòng)
Thứ hai: Dùng Scrollbar đễ kéo, nếu có record nào thỏa mãn điều kiện mà nằm ở vị trí thứ 17 trở lên thì khi kéo Scrollbar nó sẽ hiện ra
Thứ ba: Tạo 1 dấu hiệu cuối bảng đễ biết là "Còn nữa" hay "Đã hết"... Nếu các bạn nhìn thấy dấu mũi tên xuống màu đỏ thì biết rằng phía dưới còn các record ẩn chưa dc thể hiện trên bảng tính... Món này có thể làm bằng công thức hoặc Conditional Formating (ở đây tôi dùng công thức)
Nói thì dài dòng... các bạn thao tác sẽ thấy dc ý nghĩa thực sự của file này là thế nào?
Còn có thể cải tiến thêm nhiều nữa cho file trở nên hấp dẩn hơn, tùy theo sự sáng tạo của các bạn!
Mong dc góp ý!
ANH TUẤN

Đây cũng là một cách rất hay (về ý tưởng)

Tuy nhiên với dữ liệu nhiều (em thử với 10.000 dòng) thì cũng . . hơi mệt khi xem báo cáo.

Thân!
 
File này của bác Tuấn rất hay! Có thể vận dùng trong một số tình huống quản trị dữ liệu. Cũng như Mr Okebab, em nghĩ với CSDL nho nhỏ thì rất tốt còn hơi to (>10000 rows) thì hơi mệt đây - Tình trạng chung của Excel. Một lần nữa cảm ơn bác Tuấn đã có sáng kiến hay!
 
Cải tiến thêm 1 chút... Thêm màu mè cho file... Các bạn hảy kéo thanh trượt tại cột A rồi đễ ý cell A7 và A25 nhé... Mũi tên trong 2 cell này sẽ nhấp nháy trong rất vui mất...
Cái này chỉ liên quan đến thẩm mỹ mà thôi.. Tuy nhiên cũng chia sẽ với mọi người đễ thấy rằng 1 file Excel ngoài chuyện tính toán chính xác ra, nếu khéo léo trang trí thì file sẽ thêm phần hấp dẩn... (Tất nhiên tiêu chí TÍNH TOÁN CHÍNH XÁC vẫn dc đặt lên hàng đầu)
ANH TUẤN
 

File đính kèm

anhtuan1066 đã viết:
Chào các bạn! Hôm nay tôi tình cờ nghĩ ra dc 1 cách trích xuất dử liệu kiểu mới, xin chia sẽ với mọi người tham khảo và đóng góp ý kiến. Việc trích xuất dử liệu từ 1 sheet DATA có sẳn sang 1 sheet khác dựa trên điều kiện nào đó thì trên GPE đã nói rất nhiều... Ở đây chỉ xin trình bày 1 cách thể hiện khác mà theo tôi có thể góp phần tiết kiệm dc tài nguyên hệ thống Các bạn mở file và chú ý sheet CHITIET, nó liệt kê các mặt hàng bán trong 1 thời điểm nào đó, tôi giã lập 3 mặt hàng, bán từ đầu năm đến cuối năm 2007... Tiếp tục sang sheet THONGKE, nó liệt kê ra những record thỏa mãn điều kiện khi chọn ComboBox... Do ta ko biết dc chính xác số lượng record thỏa điều kiện là bao nhiêu nên ta thường ướm chừng và kéo fill công thức dư ra 1 số dòng nhất định (chẳng hạn là 100 dòng)... Điều này có 2 nhược điểm: 1> Nếu số lượng record thỏa điều kiện > 100 dòng thì ta đã bỏ mất 1 số chi tiết cần trích 2> Nếu số lượng record thỏa điều kiện chỉ có vài dòng hoặc vài chục dòng thì phần rỗng bên dưới là phí phạm ko đáng, lại còn làm file tăng dung lương vì những công thức này Cách làm của tôi tập trung ở 3 điểm: Thứ nhất: Chỉ kéo fill công thức trong khoảng dòng nhất định (trong file là 16 dòng) Thứ hai: Dùng Scrollbar đễ kéo, nếu có record nào thỏa mãn điều kiện mà nằm ở vị trí thứ 17 trở lên thì khi kéo Scrollbar nó sẽ hiện ra Thứ ba: Tạo 1 dấu hiệu cuối bảng đễ biết là "Còn nữa" hay "Đã hết"... Nếu các bạn nhìn thấy dấu mũi tên xuống màu đỏ thì biết rằng phía dưới còn các record ẩn chưa dc thể hiện trên bảng tính... Món này có thể làm bằng công thức hoặc Conditional Formating (ở đây tôi dùng công thức) Nói thì dài dòng... các bạn thao tác sẽ thấy dc ý nghĩa thực sự của file này là thế nào? Còn có thể cải tiến thêm nhiều nữa cho file trở nên hấp dẩn hơn, tùy theo sự sáng tạo của các bạn! Mong dc góp ý! ANH TUẤN
Chào Bác anhtuan1066 và các bạn, thú thật cái này tôi biết. Vì hiện nay tôi dùng kiểu trích xuất dữ liệu dạng này cho chương trình kế toán của tôi. Đúng vậy nó tiết kiệm tài nguyên hệ thống rất nhiều. Tất cả dữ liệu tôi nhập vào 1 sheet, sau đó tạo ra các sheet "Sổ cái", sheet "Sổ chi tiết" .v.v. Bạn muốn trích xuất ra sổ nào thì chỉ việc click chuột là nó ra tất. Trên sheet "Sổ cái", sheet "Sổ chi tiết" chỉ để 1 dòng duy nhất, khi truy xuất nếu nó tự động insert bao nhiêu dòng ứng với dữ liệu ta cần truy xuất. Khi truy xuất mặt hàng khác nó tự động xóa đi cái cũ đồng thời insert đưa dữ liệu mới vào. Thôi để tôi để mai post VD cho các bạn tham khảo.
 
Lần chỉnh sửa cuối:
rất hay, atuan.. có ý tưởng hay, nhưng có thể thêm chức năng bấm vào các ô đỏ 2 đầu đó - thì hay, và thêm nữa nếu có thể cho 1 ô nhập số dòng trong 1 trang cho ng dùng thì hay wa (khi đó làm mẫu in ra lun)

cám ơn atuan nhé ...
 
Cái vụ bấm vào mũi tên đễ tôi thử xem...
Còn:
và thêm nữa nếu có thể cho 1 ô nhập số dòng trong 1 trang cho ng dùng thì hay wa
Cái này chưa hiểu lắm... Bạn có thể nói rõ hơn ko?
 
anhtuan1066 đã viết:
Cái vụ bấm vào mũi tên đễ tôi thử xem...
Còn:

Cái này chưa hiểu lắm... Bạn có thể nói rõ hơn ko?

tức là hiện atuan... chỉ cho hiện số dòng cố định trên màn hình (mười mấy dòng- trong khi đó trang in thường có nhiều hơn) nếu có cách nào đó ng dùng có thể nhập số dòng (vào ô nào đó) vd 20 thì sẽ hiện 20 dòng _> tiện cho in ấn

ko, biết atuan đã hỉu chưa ... hic|||||
 
Sửa rất dể dàng... nhưng nếu làm như thế thì chẳng hóa ra sẽ trở về theo cách củ.. Tức là do ko biết trước bạn muốn hiện bao nhiêu dòng, bắt buộc tôi phải kéo công thức cho dư đi 1 số dòng nào đó, (chẳng hạn là 100 dòng).. như vậy cũng bằng ko... lại làm dung lượng file tăng lên ko cần thiết
nếu làm bằng VBA thì tôi nghĩ ko có vấn đề... Tuy nhiên ở đây tôi đang bàn về công thức... những công thức khả dỉ có thể dc.. Bạn hiểu ko?
 
anhtuan1066 đã viết:
Sửa rất dể dàng... nhưng nếu làm như thế thì chẳng hóa ra sẽ trở về theo cách củ.. Tức là do ko biết trước bạn muốn hiện bao nhiêu dòng, bắt buộc tôi phải kéo công thức cho dư đi 1 số dòng nào đó, (chẳng hạn là 100 dòng).. như vậy cũng bằng ko... lại làm dung lượng file tăng lên ko cần thiết
nếu làm bằng VBA thì tôi nghĩ ko có vấn đề... Tuy nhiên ở đây tôi đang bàn về công thức... những công thức khả dỉ có thể dc.. Bạn hiểu ko?
Đúng rồi atuan... ah, cám ơn atuan... nhé

Nhưng chúng ta chỉ cần kéo khoảng 50 dòng thôi - khác với cũ là kéo hết có thể 1000 dòng chẳng hạn (hic|||||), (và so với file của atuan chỉ tăng khoảng 13kb thôi

và tigertier đã làm vào post lên (xin lỗi atuan... là design lại) để thuận tiện cho ng sd, trong file đó tigertiger đã làm ẩn các control khi in ra, các bạn cứ view in thử xem, - nhưng tồn tại là ko 1 dấu mũi tên ở dưới ko còn nhấp nháy nữa (hu huhu)

tuy nhiên thuận lợi cho ta in - dù cơ sở liệu nhiều dòng đi nữa - vì chỉ cần viết tạo 1 macro nhỏ thay đổi giá trị của ô B8 là OK,

mong atuan... và các TV góp ý
 

File đính kèm

Lần chỉnh sửa cuối:
Tks mà anh ơi trong công thức index em có thấy
=IF($B11="","",INDEX(DS,SMALL(STT,$B11),COLUMN()-1))
-Anh nói qua cho em về công thức
Small(STT,B11) và Column() có nghĩa là như nào ạ

Một điều nữa, trong B8 khi em cho chuột thì thấy là số nhưng khi nhìn lại là STT?
Anh giải thích cho em với
 
Lần chỉnh sửa cuối:
SMALL(mãng,K) là lấy phần tử nhỏ thứ K trong mãng, ví dụ SMALL(mãng,1) là lấy phần tử nhỏ nhất trong mãng... SMALL(mãng,2) là lấy phần tử nhỏ thứ nhì trong mãng.. vân vân...
COLUMN() là vị trí cột hiện hành, ví dụ tại cell A1 bạn gõ =COLUMN() thì cho giá trị =1 (vị trí cột A).. tại B1 gõ =COLUMN() sẽ cho giá trị =2 (vị trí cột B)... vân vân...
Ngay chổ STT đó thực chất là số... còn như muốn nó hiển thị thành STT thì chọn Format Cells, trong khung Custom bạn gõ chử "STT" vào
 
Lần chỉnh sửa cuối:
File của AnhTuan rất hay tuy rằng mình chưa hiểu hết hìhì.. nhưng cũng có 1 ý kiến nhỏ là sao anh không thêm vào 1 cell có tổng số lượng và tổng thành tiền nữa, mình nghĩ có thể để ở cell F7 và G7. Vì mình nghĩ khi thống kê cái gì người ta hay nghĩ đến cái tổng cộng nữa.@#!^%
 
Mã gì đấy bác anhtuan?

Em down rất nhiều file ví dụ của bác anhtuan1066 về nhưng không đọc được. Dùng Unikey chuyển mã nhưng không biết bảng mã nguồn của bác dùng là gì? Làm ơn chỉ giúp với.
 
Brutal đã viết:
Em down rất nhiều file ví dụ của bác anhtuan1066 về nhưng không đọc được. Dùng Unikey chuyển mã nhưng không biết bảng mã nguồn của bác dùng là gì? Làm ơn chỉ giúp với.
Tôi down thử về rồi... file chạy bình thường bạn ơi... tôi dùng font Unicode mà... Bạn xem lại lần nữa nhé!
Hay đổi trình duyệt khác, đổi chương trình download khác xem!
ANH TUẤN
 
=IF($B11="","",INDEX(DS,SMALL(STT,$B11),COLUMN()-1))
Nhờ anh Tuấn giải thích : DS trong công thức trên lấy ở đâu vậy?( mảng dữ liệu nào vậy), em tìm hoài không ra, kiến thức excel em con yếu lắm mong anh chỉ rõ dùm em nhé.
Còn nữa, cách tạo 2 combbox trong ví dụ đó như thế nào mà khi ta chọn thì dữ liệu trích xuất ra đúng thỏa điều kiện trong 2 combo đó. rất mong được anh chỉ giúp. cam ơn anh nhiều lắm...
 
=IF($B11="","",INDEX(DS,SMALL(STT,$B11),COLUMN()-1))
Nhờ anh Tuấn giải thích : DS trong công thức trên lấy ở đâu vậy?( mảng dữ liệu nào vậy), em tìm hoài không ra, kiến thức excel em con yếu lắm mong anh chỉ rõ dùm em nhé.
Còn nữa, cách tạo 2 combbox trong ví dụ đó như thế nào mà khi ta chọn thì dữ liệu trích xuất ra đúng thỏa điều kiện trong 2 combo đó. rất mong được anh chỉ giúp. cam ơn anh nhiều lắm...
Đấy là Name bạn à!
Bạn vào menu Insert\Name\Define sẽ thấy vùng nào là DS
 
Cám ơn bạn ndu 960. mình đã thấy vùng DS rồi
Cách làm của anh Tuấn hay quá mà mình thì chưa hiểu được, vậy làm sao mà để sau khi chọn nội dung trong 2 combobox thì dữ liệu trính xuất ra đúng theo yêu cầu trong 2 combobox đó, và cài đặt những thuộc tinh của 2 combobox như thế nào để cho ra kết quả trích lọc như thế, rất mong được anh em giúp đỡ
 
Cám ơn bạn ndu 960. mình đã thấy vùng DS rồi
Cách làm của anh Tuấn hay quá mà mình thì chưa hiểu được, vậy làm sao mà để sau khi chọn nội dung trong 2 combobox thì dữ liệu trính xuất ra đúng theo yêu cầu trong 2 combobox đó, và cài đặt những thuộc tinh của 2 combobox như thế nào để cho ra kết quả trích lọc như thế, rất mong được anh em giúp đỡ
Bạn click phải vào từng ComboBox, chọn Format Control.. tiếp theo chuyển qua tab Control sẽ thấy người ta thiết lập thế nào
Ngoài ra bạn nên làm thêm:
- Đặt con trỏ chuột tại cell A1, Bấm Ctrl + A để chọn hết bảng tính
- Bấm tổ hợp phím Ctrl + Shift + ( rồi lại bấm tiếp tổ hợp phím Ctrl + Shift + ) để Unhide dòng cột ---> Bạn sẽ thấy các vùng ẩn khác
- Bên sheet CHITIET cũng có cột ẩn, là cột G đấy ---> Hãy Unhide nó và xem công thức
 
Cảm ơn bạn ndu 960 rất nhiều về sự chỉ dẫn tận tình của bạn, mình đã thấy các công thức trong những cột ẩn đó rồi. trước đó mình không thể vào được properties của 2 combobox đó. vậy cho mình hỏi là sao mà không thể xem properties của 2 combobox trong vi dụ của anh Tuấn vậy?
 
Web KT

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

Back
Top Bottom