Tìm ngày giao dịch đầu tiên (1 người xem)

Liên hệ QC

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

Gia_Khue

Thành viên chính thức
Tham gia
18/12/07
Bài viết
83
Được thích
13
Nghề nghiệp
BI
Gia Khuê chào các bác,

GK đang xử lý 1 số dữ liệu để tìm được tổng số giao dịch trong 1 ngày cho từng nước theo ngày JoinIn.

Trong file đính kèm, ở sheet Details, từ cột A đến F là data đã gom từ nhiều nguồn. Các cột sau là phần xử lý và các cột phụ mà GK sử dụng.

Từ data này, GK lấy 1 vài ví dụ để có thể hiểu rõ hơn:

* ClientCode 305246 (China) tham gia ngày 18 /11/2005, ngày đầu tiên giao dịch (chỉ tính trong data này) là ngày 1/1/2010, tổng số giao dịch cho đến ngày 11/5/2010 là 4.
* ClientCode 305248 (Portugal) tham gia ngày 1/5/2010, ngày đầu tiên giao dịch là ngày 2/5/2010, tổng số giao dịch cho đến ngày 11/5/2010 là 5.
* ClientCode 305249 (Vietnam) tham gia ngày 4/5/2010, ngày đầu tiên giao dịch là ngày 1/5/2010, tổng số giao dịch cho đến ngày 11/5/2010 là 3.


Vậy trong sheet Summary sẽ thể hiện:

Ngày 1/5/2010, có 4 giao dịch của khách hàng China, và khách hàng này join in trước tháng 5/2010.
Ngày 2/5/2010, có 5 giao dịch của khách hàng Portugal, và khách hàng này join in vào ngày 1/5/2010.
Ngày 11/5/2010, có 3 giao dịch của khách hàng Vietnam, và khách hàng này join in vào ngày 4/5/2010.

Vấn đề GK đang gặp phải như sau:

* Format của ngày: vì data này được lấy từ system, nhưng dường như PC của mỗi người lấy format ngày khác nhau nên data mà GK nhận được có format ngày theo đủ kiểu. Ở sheet Details, GK đã dùng đủ kiểu để đổi thành dạng ngày đúng, nhưng vẫn có 1 số trường hợp bị sai. Đó là những trường hợp GK uýnh dấu vàngxanh. Các bác xem giúp GK xem có cách nào giải quyết triệt để vấn đề này không với.

* Để tìm ra được ngày đầu tiên giao dịch, GK sủ dụng công thức mảng ở cột G trong sheet Details. Điều này làm cho file chạy rất là chậm. Từ đầu năm đến giờ, data của GK đã lên tới hơn 300.000 dòng, số cột thì khoảng như trong file các bác xem. Mỗi lần nó chạy, GK chỉ còn nước chạy qua máy tính khác làm việc rồi quay lại với nó sau. Mà khổ nỗi là mỗi ngày đều update số liệu mới, sau đó lại phải chạy lại từ đầu, chứ không phải chạy 1 lần duy nhất rồi paste value được. GK tính đến giải pháp là dùng pivot table có filter, tuy nhiên như vậy thì việc kết nối data này với file khác là không khả thi. Hiện tại từ kết quả này, GK còn phải làm thêm mí bước nữa để ra kết quả khác nữa.

GK nhờ các bác xem và tư vấn cách sắp xếp data hay dùng formula nào khác mà cho nó chạy nhanh, chứ chạy thế này, sốt ruột quá ạ.

GK cám ơn các bác nhiều.

P/S: GK dùng 2007 nên đã save thành 97-2003, tuy nhiên, khi save nó cứ báo lỗi là format hay data không phù hợp với 97-2003. Vì thế GK đa paste value và uýnh thêm dấu nháy phía trước các công thức. Khi các bác chạy, vui lòng bỏ dấu nháy rồi enter hoặc Ctrl Shift Enter (cho cột G only) giúp GK.

Cám ơn các bác lần nữa.

Gia Khuê
 

File đính kèm

* Format của ngày: vì data này được lấy từ system, nhưng dường như PC của mỗi người lấy format ngày khác nhau nên data mà GK nhận được có format ngày theo đủ kiểu. Ở sheet Details, GK đã dùng đủ kiểu để đổi thành dạng ngày đúng, nhưng vẫn có 1 số trường hợp bị sai. Đó là những trường hợp GK uýnh dấu vàngxanh. Các bác xem giúp GK xem có cách nào giải quyết triệt để vấn đề này không với.
Nếu dữ liệu bạn lấy là ngày thì không vấn đề gì cả, có khác nhau thì chỉ là khác nhau kiểu format thôi. Bạn chỉ cần format lại theo ý mình là được. Còn nếu dữ liệu là chuỗi thì... thánh cũng bó tay thôi.
* Để tìm ra được ngày đầu tiên giao dịch, GK sủ dụng công thức mảng ở cột G trong sheet Details. Điều này làm cho file chạy rất là chậm. Từ đầu năm đến giờ, data của GK đã lên tới hơn 300.000 dòng, số cột thì khoảng như trong file các bác xem. Mỗi lần nó chạy, GK chỉ còn nước chạy qua máy tính khác làm việc rồi quay lại với nó sau. Mà khổ nỗi là mỗi ngày đều update số liệu mới, sau đó lại phải chạy lại từ đầu, chứ không phải chạy 1 lần duy nhất rồi paste value được. GK tính đến giải pháp là dùng pivot table có filter, tuy nhiên như vậy thì việc kết nối data này với file khác là không khả thi. Hiện tại từ kết quả này, GK còn phải làm thêm mí bước nữa để ra kết quả khác nữa.
Tôi nghĩ bạn nên làm một bảng tổng hợp để tổng hợp thông tin của từng mã. Không nên dùng công thức trực tiếp trong dữ liệu thô như thế, lượng công thức nhiều mà lại là công thức mảng thì file chạy ì ạch là điều đương nhiên.

Nên tạo một bảng tổng hợp và tổng hợp các thông tin liên quan ở bảng này, khi cần thì truy xuất thông tin từ bảng thông hợp này.

Sử dụng công thức mảng mà bạn tham chiếu đến cả cột như vậy là quá lãng phí và góp phần làm file chạy ì ạch hơn. Nên tạo name động để chỉ tham chiếu đến phần dữ liệu hiện có thôi.

Mời bạn tham khảo file đính kèm. Tôi tạo một bảng tổng hợp. Số lượng công thức sẽ giảm đáng kể.
 

File đính kèm

Nếu dữ liệu bạn lấy là ngày thì không vấn đề gì cả, có khác nhau thì chỉ là khác nhau kiểu format thôi. Bạn chỉ cần format lại theo ý mình là được. Còn nếu dữ liệu là chuỗi thì... thánh cũng bó tay thôi.

GK cám ơn bạn đã trả lời.

Cái phần ngày ấy, lúc GK nhận data thì nó đã linh tinh đủ thứ format trong đấy rồi. Ví dụ nhìn thấy là 1/5/2010, nhưng GK chả biết nó là tháng 5 hay tháng 1 vì lúc thì nó ra tháng 1, lúc nó ra tháng 5. Vì thế format cho cái này ok thì cái kia lại ra trật lấc. Dữ liệu có tới hơn 300.000 dòng nên không thể kiểm tra và biết cái nào của tháng nào được. Bây giờ nó mà ra sai ngày thì coi như dữ liệu hỏng hết, chẳng sử dụng được nữa.

Còn về phần làm data tổng hợp, GK đang thử theo hướng của bạn và sẽ có phản hồi.

Cám ơn bạn lần nữa.
GK

Nếu dữ liệu bạn lấy là ngày thì không vấn đề gì cả, có khác nhau thì chỉ là khác nhau kiểu format thôi. Bạn chỉ cần format lại theo ý mình là được. Còn nếu dữ liệu là chuỗi thì... thánh cũng bó tay thôi.

Tôi nghĩ bạn nên làm một bảng tổng hợp để tổng hợp thông tin của từng mã. Không nên dùng công thức trực tiếp trong dữ liệu thô như thế, lượng công thức nhiều mà lại là công thức mảng thì file chạy ì ạch là điều đương nhiên.

Nên tạo một bảng tổng hợp và tổng hợp các thông tin liên quan ở bảng này, khi cần thì truy xuất thông tin từ bảng thông hợp này.

Sử dụng công thức mảng mà bạn tham chiếu đến cả cột như vậy là quá lãng phí và góp phần làm file chạy ì ạch hơn. Nên tạo name động để chỉ tham chiếu đến phần dữ liệu hiện có thôi.

Mời bạn tham khảo file đính kèm. Tôi tạo một bảng tổng hợp. Số lượng công thức sẽ giảm đáng kể.

Hic hic,

GK cần tổng hợp theo dạng là:

Ngày 1/5 có bao nhiêu khách hàng từ Việt Nam giao dịch, và những khách hàng này JoinIn từ ngày nào. Nếu là trước tháng năm thì nó vào cột Before May 2010, còn nếu khách hàng JoinIn trong tháng 5 thì sẽ có kết quả tương ứng của từng ngày.

Vì thế mà theo cách bạn gợi ý, GK mò 1 hồi lạc đường chả biết đường về luôn.

Giúp GK với, sếp đang dí.
 
Chỉnh sửa lần cuối bởi điều hành viên:
Web KT

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

Back
Top Bottom