Điền dữ liệu từ 1 file tổng vào nhiều file nhỏ theo điều kiện

Liên hệ QC

bigbabol89

Thành viên thường trực
Tham gia
15/10/12
Bài viết
225
Được thích
34
Em chào các anh chị,
Mong các anh chị giúp em viết code để điền dữ liệu tự động từ 01 file tổng vào nhiều file nhỏ theo điều kiện mã ID, Ngày tháng và Object :
- Các file nhỏ có cấu trúc giống nhau, đã có mã ID, ngày tháng và object. Mỗi file có khoảng 600 dòng, tương đương khoảng 100 ID
- Trong mỗi file nhỏ, mỗi ID gồm 6 dòng và 6 object, tuy nhiên chỉ điền vào dòng object 1,2,3. Object 4,5,6 dòng chứa công thức ( bôi vàng )
- Chỉ thêm hoặc thay đổi dữ liệu theo điều kiện từ file dữ liệu tổng, không xóa dữ đã có ở các file nhỏ
VD : ID 111 có dữ liệu cần thêm vào file nhỏ ngày 01,05,06 lần lượt là A,A,B ==> thì sẽ thêm hoặc thay đổi dữ liệu ở file nhỏ ngày 01,05,06, còn các ngày khác không thay đổi
- Các file nhỏ chứa trong cùng 1 folder, nhưng mọi người làm giúp em chọn file để làm
- Nếu được thì mọi người giúp em 2 lựa chọn là ( nếu không được thì ưu tiên lựa chọn 2, em ấn nhiều lần cũng được ạ )
+ Lựa chọn 1 : Điền cả 3 dòng object vào các file nhỏ cùng lúc
+ Lựa chọn 2 : Chỉ chọn 1 trong 3 object để điền vào các file nhỏ
Em mô tả chi tiết trong file đính kèm.
Em cám ơn ạ
 

File đính kèm

Có anh chị nào ghé qua giúp em với !!!
Em tìm các bài viết trên diễn đàn thì có rất nhiều những bài dạng “tổng hợp nhiều file thành 1 file”, nhưng lại rất hiếm loại ngược lại :(
 
Lần chỉnh sửa cuối:
Upvote 0
1. trong Tong hop.xlsx có 2 cột Start date và End date. Nhìn tập tin thì thấy luôn có Start Date = End Date. Nhưng chắc có lúc chúng phải khác nhau vì nếu luôn như nhau thì làm 2 cột để giết thời gian? Vậy tôi hiểu là chúng có thể khác nhau. Vậy khi điền vào tập tin con thì lấy date nào để làm điều kiện?

2. Bạn viết
Chỉ thêm hoặc thay đổi dữ liệu theo điều kiện từ file dữ liệu tổng, không xóa dữ đã có ở các file nhỏ
Theo tôi từ THÊM sẽ gây hiểu lầm. Thêm có nghĩa là thêm dòng với dữ liệu. Tôi hiểu là: Nếu trong Tong hop.xlsx có Object 1 (Object 2, Object 3) = rỗng thì không thay đổi Object 1 (Object 2, Object 3) trong tập tin con, ngược lại thì THAY Object 1 (Object 2, Object 3), rỗng hoặc <> rỗng, trong tập tin con bằng giá trị mới.

THAY giá trị rỗng bằng giá trị <> rỗng chứ không phải THÊM. Rỗng cũng là giá trị, có rồi sao lại phải thêm?

3. Trong tập tin con các Object có lần lượt theo thứ tự 1, 2, ..., 6 không hay có thể thứ tự bất kỳ.

Những gì có thể nói ra thì hãy nói ra. Không có chuyện đoán mò hay "hiểu ngầm" với nhau.
 
Upvote 0
1. trong Tong hop.xlsx có 2 cột Start date và End date. Nhìn tập tin thì thấy luôn có Start Date = End Date. Nhưng chắc có lúc chúng phải khác nhau vì nếu luôn như nhau thì làm 2 cột để giết thời gian? Vậy tôi hiểu là chúng có thể khác nhau. Vậy khi điền vào tập tin con thì lấy date nào để làm điều kiện?

2. Bạn viết

Theo tôi từ THÊM sẽ gây hiểu lầm. Thêm có nghĩa là thêm dòng với dữ liệu. Tôi hiểu là: Nếu trong Tong hop.xlsx có Object 1 (Object 2, Object 3) = rỗng thì không thay đổi Object 1 (Object 2, Object 3) trong tập tin con, ngược lại thì THAY Object 1 (Object 2, Object 3), rỗng hoặc <> rỗng, trong tập tin con bằng giá trị mới.

THAY giá trị rỗng bằng giá trị <> rỗng chứ không phải THÊM. Rỗng cũng là giá trị, có rồi sao lại phải thêm?

3. Trong tập tin con các Object có lần lượt theo thứ tự 1, 2, ..., 6 không hay có thể thứ tự bất kỳ.

Những gì có thể nói ra thì hãy nói ra. Không có chuyện đoán mò hay "hiểu ngầm" với nhau.
Oh, lại là anh :D
Em xin trả lời như sau :
1- Lấy cột start date ạ.
2- Dạ đúng là thay ạ, nhưng ở file tổng hợp rỗng cũng thay file con bằng rỗng ạ. Thay với điều kiện là thay của ID đó, ngày đó và object đó ạ.
3- Có thể phát sinh theo thứ tự bất kỳ ạ ( object có thể dạng text hoặc số ạ )
 
Upvote 0
Em xin trả lời như sau :
2- Dạ đúng là thay ạ, nhưng ở file tổng hợp rỗng cũng thay file con bằng rỗng ạ. Thay với điều kiện là thay của ID đó, ngày đó và object đó ạ.
Bây giờ bạn nói là dù Object ở Tong Hop rỗng hay không rỗng thì luôn thay trong tập tin con. Lúc trước bạn viết
Chỉ thêm hoặc thay đổi dữ liệu theo điều kiện từ file dữ liệu tổng, không xóa dữ đã có ở các file nhỏ
Vậy thì lúc trước cái THAY của bạn là khi nào, và cái THÊM của bạn là khi nào?
3- Có thể phát sinh theo thứ tự bất kỳ ạ ( object có thể dạng text hoặc số ạ )
Tôi muốn bạn khẳng định rõ rệt vấn đề này.
Hiện tại tôi hiểu là trong tập tin con:

- id bắt đầu từ B6
- mỗi id có đúng 6 dòng, từ Object 1 tới Object 6
- các cụm 6 id nối tiếp nhau không có ô trống.

Bây giờ bạn nói là các Object 1, ..., Object 6 có thể ở thứ tự khác? vd. id = 999 và cột Object (cột F) có thể là 5, 4, 6, 3, 1, 2?

Bạn hãy đính kèm tập tin con với Có thể phát sinh theo thứ tự bất kỳ và object có thể dạng text hoặc số

Tôi không hiểu cái
Có thể phát sinh theo thứ tự bất kỳ. Bởi tôi hiểu là với mỗi ID luôn có 6 dòng cho 6 Object. Vậy thì tại sao không liệt kê chúng theo thứ tự 1, 2, ..., 6? Phát sinh gì ở đây?
 
Lần chỉnh sửa cuối:
Upvote 0
Bây giờ bạn nói là dù Object ở Tong Hop rỗng hay không rỗng thì luôn thay trong tập tin con. Lúc trước bạn viết

Vậy thì lúc trước cái THAY của bạn là khi nào, và cái THÊM của bạn là khi nào?

Tôi muốn bạn khẳng định rõ rệt vấn đề này.
Hiện tại tôi hiểu là trong tập tin con:

- id bắt đầu từ B6
- mỗi id có đúng 6 dòng, từ Object 1 tới Object 6
- các cụm 6 id nối tiếp nhau không có ô trống.

Bây giờ bạn nói là các Object 1, ..., Object 6 có thể ở thứ tự khác? vd. id = 999 và cột Object (cột F) có thể là 5, 4, 6, 3, 1, 2?

Bạn hãy đính kèm tập tin con với Có thể phát sinh theo thứ tự bất kỳobject có thể dạng text hoặc số

Tôi không hiểu cái
Có thể phát sinh theo thứ tự bất kỳ. Bởi tôi hiểu là với mỗi ID luôn có 6 dòng cho 6 Object. Vậy thì tại sao không liệt kê chúng theo thứ tự 1, 2, ..., 6? Phát sinh gì ở đây?
Bây giờ bạn nói là dù Object ở Tong Hop rỗng hay không rỗng thì luôn thay trong tập tin con. Lúc trước bạn viết
Vậy thì lúc trước cái THAY của bạn là khi nào, và cái THÊM của bạn là khi nào?
Ý em là : ví dụ ở file con, ID 111 ở dòng object 1 có dữ liệu đầy đủ cả 30 ngày trong tháng...nhưng trong file tổng hợp ID 111 ( object 1 ) chỉ có ngày 01,02,05 là có dữ liệu cần thay ==> thì chỉ thay ở file con ngày 01,02,05 còn 27 ngày còn lại vẫn giữ nguyên, mặc dù ngày 01,02,05 là rỗng ở file tổng hợp.
Hiện tại tôi hiểu là trong tập tin con:
- id bắt đầu từ B6
- mỗi id có đúng 6 dòng, từ Object 1 tới Object 6
- các cụm 6 id nối tiếp nhau không có ô trống.
Bây giờ bạn nói là các Object 1, ..., Object 6 có thể ở thứ tự khác? vd. id = 999 và cột Object (cột F) có thể là 5, 4, 6, 3, 1, 2?
Bạn hãy đính kèm tập tin con với Có thể phát sinh theo thứ tự bất kỳobject có thể dạng text hoặc số
Tôi không hiểu cái Có thể phát sinh theo thứ tự bất kỳ. Bởi tôi hiểu là với mỗi ID luôn có 6 dòng cho 6 Object. Vậy thì tại sao không liệt kê chúng theo thứ tự 1, 2, ..., 6? Phát sinh gì ở đây?
- ID bắt đầu từ B6 ạ.
- Mỗi ID đều có 6 dòng, nhưng có thể không theo thứ tự tăng dần 1,2,3,4,5,6 ( thực tế thì các file con này là em tổng hợp từ người khác nên rất có thể họ thay đổi thứ tự ạ ==> Nhưng cái này cũng không phải vấn đề lớn, em có thể sort lại trước khi làm ạ). Object dạng số hoặc chữ là em hay gặp phải trường hợp họ điền số 01 nhưng thực ra thì '01 ý ạ.
- Các cụm 6 ID có thể không nối tiếp nhau, ví dụ 2 ID đang liên tiếp nhau ( tương đương 12 dòng ) thì có 1 ID trống ( 6 dòng ) ==> rồi lại liên tiếp....
Thực sự thì các anh vấn đề anh nêu đều là vấn đề em gặp phải ( thậm chí 1 số em cũng không lường trước được ), mà 1 người chỉ đọc qua cấu trúc file mà có thể rõ vậy thì quả là ngưỡng mộ.
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
Lần sau bạn nên mô tả kỹ (vd. vụ lấy Start date hay End date), và tập tin ví dụ phải tổng quát, phản ánh thực trạng. Nếu trong File 2 bạn có những ô trống trong cột B, và trong File 3 bạn có thứ tự các Object không tăng dần từ 1 đến 6, thì tôi không phải mất công hỏi bạn. Vì tôi nhìn vào dữ liệu thì thấy rõ chúng thế nào. Đằng này bạn cho vd. 3 tập tin con thì cả 3 theo cùng một "mốt" - không có ô trống, các Object từ 1 đến 6.

Ta thống nhất thế này:
- trong tập tin con thì ID đầu tiên, kể cả ID rỗng, bắt đầu từ B6.

- trong tập tin con mỗi ID, kể cả ID rỗng, chiếm 6 dòng LIÊN TIẾP. Chiếm đúng 6 dòng, không ít hơn và không nhiều hơn. Điều này có nghĩa là trong cột B nếu có dòng trống thì số dòng trống liên tiếp phải là bội số của 6 (6, 12, ...)

- hãy chọn 1 hoặc nhiều tập tin con để thực hiện.

- code phục vu nhiều nhất là 399 ngày (hơn 1 năm) có trong dòng 5 của tập tin con. Nếu có > 399 ngày thì sửa 400 trong
Mã:
Set rng = .Range("F5").Resize(, 400)
thành số đủ lớn.

- code sẽ tìm trong tập tin con ID có ở cột A của Tong hop, sau đó nhẩy tới cột có ngày = Start date, và thay Object 1, 2, 3 bằng các giá trị ở các cột D, E và F của Tong hop, kể cả khi chúng là những giá trị rỗng.

Chạy sub WriteToChild.
 

File đính kèm

Upvote 0
Lần sau bạn nên mô tả kỹ (vd. vụ lấy Start date hay End date), và tập tin ví dụ phải tổng quát, phản ánh thực trạng. Nếu trong File 2 bạn có những ô trống trong cột B, và trong File 3 bạn có thứ tự các Object không tăng dần từ 1 đến 6, thì tôi không phải mất công hỏi bạn. Vì tôi nhìn vào dữ liệu thì thấy rõ chúng thế nào. Đằng này bạn cho vd. 3 tập tin con thì cả 3 theo cùng một "mốt" - không có ô trống, các Object từ 1 đến 6.

Ta thống nhất thế này:
- trong tập tin con thì ID đầu tiên, kể cả ID rỗng, bắt đầu từ B6.

- trong tập tin con mỗi ID, kể cả ID rỗng, chiếm 6 dòng LIÊN TIẾP. Chiếm đúng 6 dòng, không ít hơn và không nhiều hơn. Điều này có nghĩa là trong cột B nếu có dòng trống thì số dòng trống liên tiếp phải là bội số của 6 (6, 12, ...)

- hãy chọn 1 hoặc nhiều tập tin con để thực hiện.

- code phục vu nhiều nhất là 399 ngày (hơn 1 năm) có trong dòng 5 của tập tin con. Nếu có > 399 ngày thì sửa 400 trong
Mã:
Set rng = .Range("F5").Resize(, 400)
thành số đủ lớn.

- code sẽ tìm trong tập tin con ID có ở cột A của Tong hop, sau đó nhẩy tới cột có ngày = Start date, và thay Object 1, 2, 3 bằng các giá trị ở các cột D, E và F của Tong hop, kể cả khi chúng là những giá trị rỗng.

Chạy sub WriteToChild.
Code chạy tốt lắm anh.
Em cám ơn anh nhiều lắm, nhưng mà hơi buồn với cái tên Sub anh ah :(
 
Upvote 0
Web KT

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

Back
Top Bottom