Tổng hợp dữ liệu từ nhiều file gán các trường Fields tùy ý

Liên hệ QC

LamNA

Thành viên tích cực
Tham gia
3/6/14
Bài viết
897
Được thích
720
Giới tính
Nam
Nghề nghiệp
Quản Lý Cửa Hàng
Chào anh chị diễn đàn
Nhờ anh chị hỗ trợ tổng hợp dữ liệu từ nhiều file khác nhưng khi gán kết quả tổng hợp thì hiển thị các trường Fields tiêu đề 1 tới 10 tùy ý ở các cột
Ví dụ: Copy tiêu đề 1 qua cột B1 thì dữ liệu tổng hợp cũng gán theo tương ứng
Em cảm ơn
 

File đính kèm

  • Tong Hop.rar
    38.4 KB · Đọc: 17
Lần chỉnh sửa cuối:
Trong sub main đoạn này
Mã:
        If IsArray(aRes) Then
          Set Target = T_H.Range("A60000").End(xlUp).Offset(1)
          Target.Resize(UBound(aRes, 1) + 1, UBound(aRes, 2) + 1).Value = aRes
        End If
bạn thay bằng vòng lặp gán dữ liệu từ mảng xuống sheet thử xem.
 
Upvote 0
Trong sub main đoạn này
Mã:
        If IsArray(aRes) Then
          Set Target = T_H.Range("A60000").End(xlUp).Offset(1)
          Target.Resize(UBound(aRes, 1) + 1, UBound(aRes, 2) + 1).Value = aRes
        End If
bạn thay bằng vòng lặp gán dữ liệu từ mảng xuống sheet thử xem.
Anh có thể hướng dẫn cách thay nhe, em chưa rành vụ này đang học hỏi :)
 
Upvote 0
Gom được hết vào một sheet rồi sắp xếp lại theo ý muốn... có phải hợp tình, hợp lý không?
 
Upvote 0
Upvote 0
Em định tự gán trước các tiêu đề cột và chạy cho linh động hơn, anh chỉ em vài chiêu nhe :)
Làm vầy cho khó khăn, vì code kia đã có sẵn.
Nếu muốn nghịch ngợm thì có thể thử như này được không nhé:
- Tạo một mảng ghi địa chỉ các tiêu đề, ví dụ: idx = array(1,3,4,7,8)
- Khi gán kết quả vào mảng thì dùng các chỉ số trên
Mã:
'j là dòng đang xét
'arr() mảng dữ liệu cần lấy
'maxC là cột cuối trong arr
For k=1 to maxC
aRes(j, idx(k-1)) = arr(j,k)
Next k
 
Upvote 0
Anh chị còn giải pháp nào giải quyết được bài toán này thì hỗ trợ em nhe
 
Upvote 0
bạn thay dòng code ở bài #2 thành đoạn này thử xem
Mã:
        If IsArray(aRes) Then
                  fbrow = T_H.Range("A65000").End(xlUp).Row + 1
                  For i = 0 To UBound(aRes, 1)
                        Range("A" & fbrow + i) = aRes(i, 0)
                        Range("C" & fbrow + i) = aRes(i, 1)
                        Range("D" & fbrow + i) = aRes(i, 2)
                        Range("F" & fbrow + i) = aRes(i, 3)
                        Range("H" & fbrow + i) = aRes(i, 4)
                        Range("I" & fbrow + i) = aRes(i, 5)
                        Range("L" & fbrow + i) = aRes(i, 6)
                        Range("M" & fbrow + i) = aRes(i, 7)
                        Range("O" & fbrow + i) = aRes(i, 8)
                        Range("P" & fbrow + i) = aRes(i, 9)
                  Next i
        End If
 
Upvote 0
bạn thay dòng code ở bài #2 thành đoạn này thử xem
Mã:
        If IsArray(aRes) Then
                  fbrow = T_H.Range("A65000").End(xlUp).Row + 1
                  For i = 0 To UBound(aRes, 1)
                        Range("A" & fbrow + i) = aRes(i, 0)
                        Range("C" & fbrow + i) = aRes(i, 1)
                        Range("D" & fbrow + i) = aRes(i, 2)
                        Range("F" & fbrow + i) = aRes(i, 3)
                        Range("H" & fbrow + i) = aRes(i, 4)
                        Range("I" & fbrow + i) = aRes(i, 5)
                        Range("L" & fbrow + i) = aRes(i, 6)
                        Range("M" & fbrow + i) = aRes(i, 7)
                        Range("O" & fbrow + i) = aRes(i, 8)
                        Range("P" & fbrow + i) = aRes(i, 9)
                  Next i
        End If

Cám ơn anh, cái này là mình cho vị trí các cột cho trước khi chạy, nhưng theo bài toán là khi mình gán 1 tiêu đề bất kỳ tại dòng nào thì dữ liệu tự gán theo , nhưng theo cách của anh cũng đạt 90% chỉ còn thiếu linh động dời các tiêu đề cột qua lại mà không cần vào code để chình sửa.
Ví dụ: Để tiêu đề 1 ở cột C thì dữ liệu cũng tự gán theo.
 
Upvote 0
Gom được hết vào một sheet rồi sắp xếp lại theo ý muốn... có phải hợp tình, hợp lý không?
Nếu vậy như anh befaint nói tên là cứ gom về 1 Sheet tạm gọi là sheet DATA như file đính kèm, gán các trường tiêu đề 1 - 10 ở các vị trí cột tùy ý để lấy dữ liệu, anh chị hỗ trợ em phần này nhe
 

File đính kèm

  • Tong_Hop - Copy.xlsb
    9.5 KB · Đọc: 10
Upvote 0
anh chị đi ngang hỗ trợ em nhe
 
Upvote 0
anh chị đi ngang hỗ trợ em nhe
Tôi nghĩ bài này đối với bạn cũng không khó lắm đối với bạn.
Tôi nghĩ các bước làm bài này như sau
Bước 1: gom tất cả các file lại với nhau vào 1 sheet bằng Ado hay copy sheet gì đó
Bước 2: Đưa vào dic với khóa là tên các tiêu đề:
Bước 3: duyệt dữ liệu báo cáo hàng đầu, Nếu thằng nào tồn tại trong Dic thì mình sẽ lấy dữ liệu lưu tưng ứng vào mảng và sau đó bung ra
 
Upvote 0
Tôi nghĩ bài này đối với bạn cũng không khó lắm đối với bạn.
Tôi nghĩ các bước làm bài này như sau
Bước 1: gom tất cả các file lại với nhau vào 1 sheet bằng Ado hay copy sheet gì đó
Bước 2: Đưa vào dic với khóa là tên các tiêu đề:
Bước 3: duyệt dữ liệu báo cáo hàng đầu, Nếu thằng nào tồn tại trong Dic thì mình sẽ lấy dữ liệu lưu tưng ứng vào mảng và sau đó bung ra
Em thì dùng code có sẵn chấp vá thì hay chứ xây dựng khai báo 1 mãng thì còn đang học hỏi.
Anh viết giúp em nhe
 
Upvote 0
Chào anh chị diễn đàn
Nhờ anh chị hỗ trợ tổng hợp dữ liệu từ nhiều file khác nhưng khi gán kết quả tổng hợp thì hiển thị các trường Fields tiêu đề 1 tới 10 tùy ý ở các cột
Ví dụ: Copy tiêu đề 1 qua cột B1 thì dữ liệu tổng hợp cũng gán theo tương ứng
Em cảm ơn
Nếu vậy như anh befaint nói tên là cứ gom về 1 Sheet tạm gọi là sheet DATA như file đính kèm, gán các trường tiêu đề 1 - 10 ở các vị trí cột tùy ý để lấy dữ liệu, anh chị hỗ trợ em phần này nhe
Em xin tiếp 2 bài toán cần hỗ trợ :rolleyes:
 
Upvote 0
thường thì bạn nhập tiêu đề cột như thế nào? xử lý theo cách bạn nói chắc làm được nhưng phải tính luôn các trường hợp người dùng ko nhập theo đúng như mình thiết kế.
 
Upvote 0
thường thì bạn nhập tiêu đề cột như thế nào? xử lý theo cách bạn nói chắc làm được nhưng phải tính luôn các trường hợp người dùng ko nhập theo đúng như mình thiết kế.
- Tiêu đề tốt nhất là chữ không dấu sẽ hay hơn,
- Còn vùng dữ liệu muốn gán tiêu đề dòng nào thì chỉ hiển thị dòng đó
 
Upvote 0
Mục đích của bạn di chuyển các tiêu đề cột là để làm gì, mình chưa biết công việc nào mà cần di chuyển tiêu đề cột như vậy
 
Upvote 0
Nếu vậy như anh befaint nói tên là cứ gom về 1 Sheet tạm gọi là sheet DATA như file đính kèm, gán các trường tiêu đề 1 - 10 ở các vị trí cột tùy ý để lấy dữ liệu, anh chị hỗ trợ em phần này nhe
Tôi gợi ý bạn cách làm bằng tay thế này:
1> Tạo 2 dòng số thứ tự phía trên dòng tiêu đề của sheet TongHop
- Dòng 1 màu xanh nhạt: đánh số từ nhỏ đến lớn
- Dòng 2 màu cam chỉ đánh số thứ tự cho các tiêu đề bạn cần tổng hợp

Capture1.JPG


2> Tiếp theo chọn toàn bộ dữ liệu, Sort Left to Right theo dòng 2

Capture2.JPG


bây giờ các tiêu đề cần tổng hợp đã được gom chung một cụm
3> Dùng Advanced Filter tổng hợp từ Data sang TongHop

Capture3.JPG


4> Cuối cùng quét chọn toàn bộ dữ liệu ở sheet TongHop, sort Left to Right lần nữa nhưng giờ ta sort tăng dần theo dòng 1

Capture4.JPG


Xong!
Bạn có thể tự động hóa quá trình trên bằng code ---> Chuyện rất nhỏ
 
Upvote 0
Cám ơn anh, cái này là mình cho vị trí các cột cho trước khi chạy, nhưng theo bài toán là khi mình gán 1 tiêu đề bất kỳ tại dòng nào thì dữ liệu tự gán theo , nhưng theo cách của anh cũng đạt 90% chỉ còn thiếu linh động dời các tiêu đề cột qua lại mà không cần vào code để chình sửa.
Ví dụ: Để tiêu đề 1 ở cột C thì dữ liệu cũng tự gán theo.
Bạn biết từ "tự" có nghĩa là gì không?
Bạn có ngừoi giúp việc trong nhà, đưa cho chìa khoá tủ sắt để mỗi ngày ngừoi này "tự" lấy tiền đi chợ.
Bạn biết chuyện gì sẽ xảy ra. Khong cần phải diễn giải tiếp.
 
Upvote 0
Web KT
Back
Top Bottom