Tạo công thức lấy dữ liệu từ file bất kỳ (2 người xem)

Liên hệ QC

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

le_tungnt

Thành viên mới
Tham gia
4/6/07
Bài viết
1
Được thích
1
Bài toán như sau:
- Trong thư mục DATA co nhiều file, ten file theo cấu trúc ddmmyy (ví dụ co cac file 310107.xls; 280207.xls; 310307xls; 300407.xls)
- Em cần 1 file TONGHOP để lấy dữ liệu từ cácfile trong thư mục DATA:
+ Ô A1: "Ngày"
+ Ô B1: sẽ nhập vào tên file trong thư mục DATA cần lấy dữ liệu (ví dụ lấy dữ liệu từ file 280207.xls thì nhập 280207)
+ Em cần tạo công thức ở ô A5 = dữ liệu trong ô A5 trng file 280207.xls. khi nào em nhập vào ô B1 tên file khác, ví dụ 310307 thì ô A5 này sẽ tự động chuyển sang lấy dữ liệu từ ô A5 của file 310307.xls

Các bác hướng dẫn hộ em công thức trong ô A5 này với. Tks
 
Hoàn toàn có thể dc nếu bạn dùng hàm INDIRECT nhưng phiền phức cho bạn lắm đấy! Vì mổi khi bạn Enter công thức xong hoặc Fill xuống dòng thì lập tức 1 bảng "Update value indirect(...)" sẽ hiện ra bắt bạn xác nhận file nguồn nằm ở đâu. Đã vây mọi thay đổi trong dử liệu nguồn sẽ ko dc cập nhật ngay. Rồi còn nửa, khi bạn mở file thì lại file Update Link. Phiền quá!
Sao bạn ko gữi file lên (cả file nguồn và file đích) rồi ghi rõ yêu cầu xem mọi người có cách nào khác hay hơn ko
Miss TT
 
Lấy dữ liệu từ tập tin khác

Viết công thức vào ô A5 để lấy dữ liệu từ 1 tập tin khác (tên tập tin lấy ở B1) tôi không biết nhưng bằng VBA thì được. Bạn tham khảo tập tin LayDuLieu.xls.
Bạn lưu ý khi sử dụng Sub Worksheet_Change
- Để VBA xác định chính xác sheet cần lấy dữ liệu nên các sheet dữ liệu trong 280207.xls, 010307.xls, …, LayDuLieu.xls đều đặt tên là “DATA”. Tất cả các tập tin này phải ở cùng 1 thư mục.
- Sub này phải viết ngay trong sheets “DATA” để VBA nhận biết thay đổi (change) trong ô B1.

Sub Worksheet_Change hoạt động như sau:
Biến mypath chứa đường dẫn và tên tập tin trong ô B1.
Nếu ô B1 thay đổi giá trị thì Excel sẽ mở tập tin mypath và lấy giá trị ô A5 ghi vào biến data và đóng tập tin lại. Nếu tập tin đó không tồn tại thì ô B1 sẽ nhận giá trị “????” và ô A5=”????” để người sử dụng biết nhập lại.

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.DisplayAlerts = False
mypath = ThisWorkbook.Path & "\" & Target.Value & ".xls"
If Target.Address = "$B$1" Then
Workbooks.Open mypath
If Err.Number > 0 Then
Target.Value = "????"
Cells(5, 1) = “????”
Exit Sub
End If
data = Sheets("DATA").Cells(5, 1)
ActiveWorkbook.Close
ThisWorkbook.Sheets("DATA").Cells(5, 1) = data
End If
End Sub
 

File đính kèm

Gửi các bạn ví dụ để tham khảo và cho ý kiến
file abc - ô A1 dùng để liên kết dữ liệu sang ô A1 của file có tên nằm trong ô B1
file vidu và vidu1 - 2 files dùng để làm ví dụ.
 

File đính kèm

Dựa vào cách làm của Chibi mình thay đổi đôi chút.
- Sử dụng hàm kiểm tra sự tồn tại của file cần liên kết (cái này mình không biết gì à nha - được Chibi và Skyonline giúp đỡ) để tránh lỗi khi file cần liên kết không tồn tại
- Data được liên kết theo đúng cấu trúc hàng, cột của file nguồn
- Khi nhập tên file ở dòng 1 thì dòng 2 sẽ xuất hiện công thức, sau đó ta có thể copy xuống các hàng hoặc các cột còn lại
(Mình nghĩ cách này có thể phát triển thêm để ứng dụng cho việc hồi phách lên điểm)
Mong được các bạn góp ý, giúp đỡ.

Thân !
 
Lần chỉnh sửa cuối:
Web KT

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

Back
Top Bottom