Tổng hợp các file từ thư mục con vào file tổng hợp

Liên hệ QC

Loan Châu

Thành viên hoạt động
Tham gia
17/6/17
Bài viết
136
Được thích
39
Giới tính
Nữ
Xin chào quý anh chị và các bạn!
Hiện em muốn kiểm tra số liệu của em gồm các file *. CSV ở các thư mục con khác nhau có đúng không? Em mong quý anh chị và các bạn giúp cho em Macro tổng hợp được file số liệu từ các thư mục con vào thành file tổng và thêm các cột tên file và tên thư mục bên cạnh để em dễ dàng kiểm tra được số liệu
Em gởi kèm file bên dưới.
em rất mong quý anh chị và các bạn giúp cho em với ạ.
Em cảm ơn và chúc quý anh chị và các bạn luôn vui khỏe mỗi ngày!
Trân trọng,
Loan Châu
 

File đính kèm

  • File.rar
    259.7 KB · Đọc: 16
Lần chỉnh sửa cuối:
Khúc này hơi hơi khó hiểu.. ngoài số liệu em của các file thì số liệu anh / chị của các file đó cần kiểm tra không?
Mà làm sao biết đâu là em, đâu là anh / chị?

_)()(-
Em xin lỗi anh do em viết văn lũng cũng. Mong anh giúp em với, em đang rất cần. Chứ giờ em mở lên kiểm tra từng file lâu quá anh à. Em cảm ơn anh nhiều nhiều.
 
Upvote 0
em rất mong thầy cô anh chị nào có gé qua giúp cho em với. em cảm ơn rất nhiều!
Bài đã được tự động gộp:

Khúc này hơi hơi khó hiểu.. ngoài số liệu em của các file thì số liệu anh / chị của các file đó cần kiểm tra không?
Mà làm sao biết đâu là em, đâu là anh / chị?

_)()(-
anh Befaint, em biết sai em đã chỉnh sửa rồi. em mong anh giúp cho em với. em cảm ơn anh rất nhiều ạ
 
Upvote 0
em rất mong thầy cô anh chị nào có gé qua giúp cho em với. em cảm ơn rất nhiều!
Một trong những thiếu sót chính của người hỏi là không mô tả dữ liệu, không giải thích kỹ. Vì thế gửi bài xong cứ chốc chốc lại hóng nhưng chả ai trả lời.
Với những người khó tính như tôi thì có nhiều ẩn số.

1. Nhìn tập tin ví dụ thì thấy với mỗi tập tin có vẻ sẽ tạo 1 sheet có tên như thế. Nhìn tên thì đó là ngày nào đó. Vậy rất có thể có 2 hoặc nhiều người có cùng tập tin cùng ngày, vd. 2019_09_12. Rõ ràng không thể tạo nhiều sheet cùng tên. Vậy thì trong cùng 1 sheet 2019_09_12 sẽ có dữ liệu của nhiều người nối tiếp nhau? Nếu trường hợp có nhiều tập tin cùng tên thì sao không đính kèm ví dụ với trường hợp như thế? Nếu đính kèm thì tôi sẽ chả phải lăn tăn.

2. Trong ví dụ trong mỗi thư mục chỉ có 1 tập tin CSV. Đúng thế hay có thể có nhiều tập tin? Nếu có thể có nhiều thì sao trong 4 thư mục chỉ có 4 tập tin? Nếu ít nhất trong 1 thư mục có 2, 3 tập tin CSV thì tôi sẽ chả phải lăn tăn.

Mô tả, mô tả nữa, và mô tả mãi. Không chỉ tung một câu "Tổng hợp" là xong.

Các thắc mắc:
- dò có bao nhiêu tập tin CSV với tên khác nhau thì tạo bấy nhiêu sheet?
- nếu có nhiều tập tin CSV giống tên trong nhiều thư mục thì dữ liệu trong sheet với tên ấy sẽ lấy lần lượt từ các tập tin, nối tiếp nhau?
- Tại sao với mỗi người, vd. Le Van Tho, lại có nhiều thư mục con và trong mỗi thư mục ấy chỉ có 1 CSV? Tại sao không là trong thư mục Le Van Tho sẽ chỉ có nhiều tập tin CSV, không có thư mục con?
- mỗi lần chạy code thì nếu chưa có sheet với tên tập tin thì tạo sheet mới? Nếu sheet với tên tập tin đã tồn tại thì xóa kết quả cũ và nhập kết quả mới, hay không xóa dữ liệu cũ và kết quả mới nhập nối tiếp kết quả cũ?

Tôi chỉ lưu ý là có thể nguyên nhân không nhận được sự giúp đỡ là do mô tả chưa rõ ràng. Không có nghĩa là tôi sẽ giúp. Cứ giải thích cụ thể rồi nhờ mọi người thôi.
 
Lần chỉnh sửa cuối:
Upvote 0
File dưới đây làm theo suy đoán, chứ đọc mong muốn của bạn, thật là không đủ điều kiện để được trợ giúp.
 

File đính kèm

  • Tonghop.xlsm
    31.9 KB · Đọc: 19
Upvote 0
Một trong những thiếu sót chính của người hỏi là không mô tả dữ liệu, không giải thích kỹ. Vì thế gửi bài xong cứ chốc chốc lại hóng nhưng chả ai trả lời.
Với những người khó tính như tôi thì có nhiều ẩn số.

1. Nhìn tập tin ví dụ thì thấy với mỗi tập tin có vẻ sẽ tạo 1 sheet có tên như thế. Nhìn tên thì đó là ngày nào đó. Vậy rất có thể có 2 hoặc nhiều người có cùng tập tin cùng ngày, vd. 2019_09_12. Rõ ràng không thể tạo nhiều sheet cùng tên. Vậy thì trong cùng 1 sheet 2019_09_12 sẽ có dữ liệu của nhiều người nối tiếp nhau? Nếu trường hợp có nhiều tập tin cùng tên thì sao không đính kèm ví dụ với trường hợp như thế? Nếu đính kèm thì tôi sẽ chả phải lăn tăn.

2. Trong ví dụ trong mỗi thư mục chỉ có 1 tập tin CSV. Đúng thế hay có thể có nhiều tập tin? Nếu có thể có nhiều thì sao trong 4 thư mục chỉ có 4 tập tin? Nếu ít nhất trong 1 thư mục có 2, 3 tập tin CSV thì tôi sẽ chả phải lăn tăn.

Mô tả, mô tả nữa, và mô tả mãi. Không chỉ tung một câu "Tổng hợp" là xong.

Các thắc mắc:
- dò có bao nhiêu tập tin CSV với tên khác nhau thì tạo bấy nhiêu sheet?
- nếu có nhiều tập tin CSV giống tên trong nhiều thư mục thì dữ liệu trong sheet với tên ấy sẽ lấy lần lượt từ các tập tin, nối tiếp nhau?
- Tại sao với mỗi người, vd. Le Van Tho, lại có nhiều thư mục con và trong mỗi thư mục ấy chỉ có 1 CSV? Tại sao không là trong thư mục Le Van Tho sẽ chỉ có nhiều tập tin CSV, không có thư mục con?
- mỗi lần chạy code thì nếu chưa có sheet với tên tập tin thì tạo sheet mới? Nếu sheet với tên tập tin đã tồn tại thì xóa kết quả cũ và nhập kết quả mới, hay không xóa dữ liệu cũ và kết quả mới nhập nối tiếp kết quả cũ?

Tôi chỉ lưu ý là có thể nguyên nhân không nhận được sự giúp đỡ là do mô tả chưa rõ ràng. Không có nghĩa là tôi sẽ giúp. Cứ giải thích cụ thể rồi nhờ mọi người thôi.
Em xin chân thành cảm ơn anh Batman1,
Em rất tiếc vì thiếu kỹ năng và cả cách trình bày khi đặt câu hỏi mà diễn giãi không hết ý của câu hỏi. em xin nói rõ hơn về từng vấn đề 1.
1. Đây là file số liệu của từng đồng nghiệp thu thập được từng ngày nên để vào 1 tên 1 người nhân nhiều ngày khác nhau. Vì thế cùng 1 ngày sẽ có nhiều sheet cùng tên vì do nhiều người cùng thực hiện 1 ngày (em bổ sung vào file mẫu). Các số liệu cùng ngày của nhiều người thì sẽ lấy dữ liệu nối tiếp nhau.
2. Thưa anh, trong mõi ngày sẽ có đúng là 1 file nhưng lâu lâu có 1 số thư có nhiều hơn 01 file , cái đó thì lấy dữ liệu nối tiếp nhau anh ah.
* em xin mô tả rõ hơn về thắc mắc:
- trong thư mục có bao nhiêu tập tin CSV tên khác nhau của từng thư mục ngày tháng thì cứ lấy dữ liệu nối tiếp nhau ở cùng 1 sheet.
- Có nhiều tập tin tên giống nhau ở các thư mục khác nhau vẫn lấy dữ liệu nối tiếp nhau ở cùng 1 sheet.
- Tại mỗi người thu thập 1 ngày và theo quy định bên em là đặt tên thư mục theo ngày anh ak.
- Cứ mỗi lần tổng hợp thì xóa dữ liệu cũ đi anh à.
Anh ơi, em mô tả chưa rõ ở đâu xin anh cho em biết. file số liệu mẫu em đã gởi lại lên bài rồi.
Một lần nữa em cảm ơn anh rất nhiều.
 

File đính kèm

  • File.rar
    498.7 KB · Đọc: 11
Upvote 0
Em xin chân thành cảm ơn anh Batman1,
Em rất tiếc vì thiếu kỹ năng và cả cách trình bày khi đặt câu hỏi mà diễn giãi không hết ý của câu hỏi. em xin nói rõ hơn về từng vấn đề 1.
1. Đây là file số liệu của từng đồng nghiệp thu thập được từng ngày nên để vào 1 tên 1 người nhân nhiều ngày khác nhau. Vì thế cùng 1 ngày sẽ có nhiều sheet cùng tên vì do nhiều người cùng thực hiện 1 ngày (em bổ sung vào file mẫu). Các số liệu cùng ngày của nhiều người thì sẽ lấy dữ liệu nối tiếp nhau.
2. Thưa anh, trong mõi ngày sẽ có đúng là 1 file nhưng lâu lâu có 1 số thư có nhiều hơn 01 file , cái đó thì lấy dữ liệu nối tiếp nhau anh ah.
* em xin mô tả rõ hơn về thắc mắc:
- trong thư mục có bao nhiêu tập tin CSV tên khác nhau của từng thư mục ngày tháng thì cứ lấy dữ liệu nối tiếp nhau ở cùng 1 sheet.
- Có nhiều tập tin tên giống nhau ở các thư mục khác nhau vẫn lấy dữ liệu nối tiếp nhau ở cùng 1 sheet.
- Tại mỗi người thu thập 1 ngày và theo quy định bên em là đặt tên thư mục theo ngày anh ak.
- Cứ mỗi lần tổng hợp thì xóa dữ liệu cũ đi anh à.
Anh ơi, em mô tả chưa rõ ở đâu xin anh cho em biết. file số liệu mẫu em đã gởi lại lên bài rồi.
Một lần nữa em cảm ơn anh rất nhiều.
Đọc xong tôi cũng chả hiểu rõ.

1. Tại sao lại phải có các thư mục TÊN và trong nó có các thư mục con là NGÀY? Vd. trong thư mục "Le Van Tho" có 2 thư mục con 2019_09_12 và 2019_09_20. Trong mỗi thư mục con thì lại có 1 tập tin là 2019_09_12.csv và 2019_09_20.csv.
Tại sao không là: trong thư mục TÊN "Le Van Tho" không có thư mục con nào mà chỉ có 2 tập tin là 2019_09_12.csv và 2019_09_20.csv?

2. Tôi tạm hiểu là với mỗi ngày ta có 1 sheet. Nếu sheet với tên như thế chưa tồn tại thì tạo mới. Nhưng do tên của thư mục con (ở trên là vd. 2019_09_12) và tên tập tin CSV (ở trên vd. là 2019_09_12.csv) như nhau nên không biết là tên sheet là lấy từ tên nào. 2 cách lấy không như nhau. Vd. thư mục "Nguyen Van Hoang" có 2 thư mục con là 2019_09_29 và 2019_09_30, và trong chúng có 2 tập tin 2019_09_29_pjk.csv và 2019_09_30_pjk.csv. Vậy sẽ phải tạo 2 sheet là 2019_09_29 và 2019_09_30 hay 2 sheet là 2019_09_29_pjk và 2019_09_30_pjk? ***

3. Nếu ở điểm 2 lấy tên thư mục con làm tên sheet thì do Le Van Tho và Tran Van Long đều có 2 thư mục con là 2019_09_12 và 2019_09_20 nên theo tôi hiểu thì Le Van Tho và Tran Van Long đều phải có trong 2 sheet 2019_09_12 và 2019_09_20. Tại sao trong sheet 2019_09_12 bạn chỉ có kết quả mong đợi của Le Van Tho? Tran Van Long sẽ nằm ở sheet nào?

4. Tôi thấy các tập tin có đuôi là PJK, vd. 2019_09_29_pjk.csv, thì thứ tự cột là Code, Name, N, E, Z còn các tập tin không có PJK thì thứ tự cột là Name, Code, N, E, Z. Đấy là qui luật hay tập tin PJK cũng có thể có thứ tự Name, Code, N, E, Z, và tập tin không có PJK cũng có thể có thứ tự cột là Code, Name, N, E, Z?

***: Tôi hỏi vì bạn có tiêu đề cột là "Tên File". Nếu là Tên File thì với Nguyen Huy Binh phải là 2019_09_29_pjk và 2019_09_30_pjk chứ không thể là 2019_09_29 và 2019_09_30. Còn nếu tiêu đề thực ra là "Tên thư mục Ngày" thì cột này là vô dụng vì "Tên thư mục Ngay" cũng chính là tên sheet rồi, nếu lấy TÊN thư mục ngày làm tên sheet.
 
Lần chỉnh sửa cuối:
Upvote 0
Bạn ơi, đơn giản thế này là đủ:

Làm lại các file ví dụ với số dòng ít lại. mỗi file 5, 10 dòng thôi
Bạn làm bằng tay tự tổng hợp vào File tonghop với các file mà bạn ví dụ đó, người ta xem file là đủ hiểu rồi.

Rồi trình bày hay không thì trình bày vào ô trong file tổng hợp.

--------------------------
Đoán lần 2:
 

File đính kèm

  • Tonghop.xlsm
    51.4 KB · Đọc: 15
Upvote 0
Thôi, hỏi đi hỏi lại mất thời gian quá. Tạm coi là tôi hiểu ý 99%. Tôi viết với những lưu ý sau đây.

1. Nếu tập tin có đường dẫn là "... File\SoLieu\Nguyen Huy Binh\2019_09_29\2019_09_29_pjk.csv" thì tôi cho là kết quả phải nằm trong sheet "2019_09_29", tức lấy tên thư mục ngày làm tên sheet. Cột "Tên File" sẽ có 2019_09_29_pjk, tức tên tập tin nhưng bỏ định dạng .CSV. Cột "Tên thư mục" sẽ có "Nguyen Huy Binh", tức thư mục chứa thư mục ngày "2019_09_29".

Về vụ xác định 3 tên (tên sheet, tên file, tên thư mục) thì nếu tôi hiểu sai ý thì giải thích lại và tôi sẽ sửa.

2. Hiện tại tập tin có 1 sheet tên là hichic. Hãy đổi thành tên của mình và trong code sửa hichic trong dòng
Mã:
If sh.Name <> "hichic" Then sh.Delete

3. Mỗi lần chạy code (sub tonghop) thì code sẽ delete tất cả các sheet có kết quả cũ. Và sẽ thêm mới các sheet dựa theo dữ liệu hiện hành.

4. Hiện tại tôi tạm làm với giả thiết là cho dù tập tin nào thì thứ tự 2 cột đầu luôn là Name, Code. Về việc thứ tự Name, Code hay ngược lại thì hãy trả lời câu hỏi của tôi ở bài trước. Nếu cần tôi sẽ sửa.

5. Hàm GetDataFromCSV luôn trả về tất cả các cột cho dù bạn chỉ cần 5 cột đầu, vì đó là hàm tổng quát. Tùy vào thời điểm, cần lấy bao nhiêu cột, thì chỉ sửa ở code tiếp theo. Làm như thế thì vd. trong sub tonghop bạn có thể gọi hàm GetDataFromCSV (để lấy tất cả các cột) rồi sau đó mới lựa chọn 5 cột đầu. Đồng thời vd. trong sub laythem bạn có thể gọi hàm GetDataFromCSV (để lấy tất cả các cột) rồi sau đó mới lựa chọn những cột hoàn toàn khác để xử lý. Tóm lại hàm GetDataFromCSV là tổng quát, không có chuyện chốc chốc lại chỉnh sửa hàm này. Lấy bao nhiêu cột ở thời điểm cụ thể thì cứ gọi GetDataFromCSV rồi lựa chọn.
Hàm GetDataFromCSV coi dòng đầu của tập tin CSV là tiêu đề và không lấy dòng này vào kết quả.

Hãy test kỹ. Có gì cần sửa thì phải mô tả kỹ. Hỏi đi hỏi lại mất thời gian lắm.
 

File đính kèm

  • Tonghop.xls
    53.5 KB · Đọc: 13
Lần chỉnh sửa cuối:
Upvote 0
File dưới đây làm theo suy đoán, chứ đọc mong muốn của bạn, thật là không đủ điều kiện để được trợ giúp.
em rất cảm ơn sự nhiệt tình của anh Hesabi, Năm mới em chúc anh nhiều sức khỏe và thành công trong cuộc sống
Bài đã được tự động gộp:

Bạn ơi, đơn giản thế này là đủ:

Làm lại các file ví dụ với số dòng ít lại. mỗi file 5, 10 dòng thôi
Bạn làm bằng tay tự tổng hợp vào File tonghop với các file mà bạn ví dụ đó, người ta xem file là đủ hiểu rồi.

Rồi trình bày hay không thì trình bày vào ô trong file tổng hợp.

--------------------------
Đoán lần 2:
dạ anh, tại em mô tả không cẩn thận làm mất thời gian của anh quá.
Bài đã được tự động gộp:

Thôi, hỏi đi hỏi lại mất thời gian quá. Tạm coi là tôi hiểu ý 99%. Tôi viết với những lưu ý sau đây.

1. Nếu tập tin có đường dẫn là "... File\SoLieu\Nguyen Huy Binh\2019_09_29\2019_09_29_pjk.csv" thì tôi cho là kết quả phải nằm trong sheet "2019_09_29", tức lấy tên thư mục ngày làm tên sheet. Cột "Tên File" sẽ có 2019_09_29_pjk, tức tên tập tin nhưng bỏ định dạng .CSV. Cột "Tên thư mục" sẽ có "Nguyen Huy Binh", tức thư mục chứa thư mục ngày "2019_09_29".

Về vụ xác định 3 tên (tên sheet, tên file, tên thư mục) thì nếu tôi hiểu sai ý thì giải thích lại và tôi sẽ sửa.

2. Hiện tại tập tin có 1 sheet tên là hichic. Hãy đổi thành tên của mình và trong code sửa hichic trong dòng
Mã:
If sh.Name <> "hichic" Then sh.Delete

3. Mỗi lần chạy code (sub tonghop) thì code sẽ delete tất cả các sheet có kết quả cũ. Và sẽ thêm mới các sheet dựa theo dữ liệu hiện hành.

4. Hiện tại tôi tạm làm với giả thiết là cho dù tập tin nào thì thứ tự 2 cột đầu luôn là Name, Code. Về việc thứ tự Name, Code hay ngược lại thì hãy trả lời câu hỏi của tôi ở bài trước. Nếu cần tôi sẽ sửa.

5. Hàm GetDataFromCSV luôn trả về tất cả các cột cho dù bạn chỉ cần 5 cột đầu, vì đó là hàm tổng quát. Tùy vào thời điểm, cần lấy bao nhiêu cột, thì chỉ sửa ở code tiếp theo. Làm như thế thì vd. trong sub tonghop bạn có thể gọi hàm GetDataFromCSV (để lấy tất cả các cột) rồi sau đó mới lựa chọn 5 cột đầu. Đồng thời vd. trong sub laythem bạn có thể gọi hàm GetDataFromCSV (để lấy tất cả các cột) rồi sau đó mới lựa chọn những cột hoàn toàn khác để xử lý. Tóm lại hàm GetDataFromCSV là tổng quát, không có chuyện chốc chốc lại chỉnh sửa hàm này. Lấy bao nhiêu cột ở thời điểm cụ thể thì cứ gọi GetDataFromCSV rồi lựa chọn.
Hàm GetDataFromCSV coi dòng đầu của tập tin CSV là tiêu đề và không lấy dòng này vào kết quả.

Hãy test kỹ. Có gì cần sửa thì phải mô tả kỹ. Hỏi đi hỏi lại mất thời gian lắm.
Em chào anh Batman1,
Trước hết, Em xin lỗi anh về sự chậm trể này, mấy hôm rồi em bận chuẩn bị tổng kết nên toàn làm thêm giờ về muộn nên anh thông cảm cho em.
Em rất biết ơn anh về sự nhiệt tình và chu đáo và tốt bụng của anh. Ngày mai em chạy thử còn gì chưa ổn em lại xin nhờ anh giúp thêm cho em nhé!
Nhân qua năm mới, em xin gởi đến anh và gia đình sức khỏe và hạnh phúc và may mắn mọi nhẽ!
 
Lần chỉnh sửa cuối:
Upvote 0
dạ anh, tại em mô tả không cẩn thận làm mất thời gian của anh quá.
Toàn văn vẻ "lũng cũng". Bạn bận cũng không liên quan gì đến điều bạn hỏi cả. Hay bạn chúc sức khỏe ai cũng không nhất thiết.

Đã được hay chưa hay bạn không cần giúp đỡ nữa.

Chủ đề của bạn không phải để học "làm Văn".

"Chịu thôi - từ a đến z"
 
Upvote 0
Web KT
Back
Top Bottom