[HỎI] VBA thay thế cho hàm INDIRECT để không phải mở file excel được chỉ đến

Liên hệ QC

member

Thành viên chính thức
Tham gia
30/8/07
Bài viết
62
Được thích
7
Chào các bác;
Hiện em đang làm công việc tổng hợp số liệu hàng ngày từ các file excel, mỗi ngày 1 file, có tên theo đúng định dạng "yymmdd", mỗi file có 1 sheet "Table 1", và các con số tổng hợp có vị trí là $E$7 và $G$7 (headear cố định). Chi tiết bên dưới thì k0 quan tâm trong file tổng hợp
Em dùng hàm Indirect để tạo đường link đến các ô $E$7 và $G$7 ở mỗi file, nhưng có điều phải mở tất cả các file đó ra thì mới hiện số.
Và em đang phải dùng 2 cách thủ công như sau
1. Mở tất cả các file đó ra để hàm Indirect hiển thị con số, xong copy và paste value
2. Dùng hàm Concatenate để tạo đường link dẫn đến các ô đó, có dấu = đằng trước, xong copy paste qua Notepad rồi Paste ngược lại các dòng đó trong Excel
Hai cách trên dùng cũng đc, nhưng hơi bất tiện 1 chút.
Các bác có biết code VBA nào có thể thay thế cho hàm Indirect mà k0 phải mở tất cả các file nguồn ra k0 ạ?
Em cảm ơn
 
Chào các bác;
Hiện em đang làm công việc tổng hợp số liệu hàng ngày từ các file excel, mỗi ngày 1 file, có tên theo đúng định dạng "yymmdd", mỗi file có 1 sheet "Table 1", và các con số tổng hợp có vị trí là $E$7 và $G$7 (headear cố định). Chi tiết bên dưới thì k0 quan tâm trong file tổng hợp
Em dùng hàm Indirect để tạo đường link đến các ô $E$7 và $G$7 ở mỗi file, nhưng có điều phải mở tất cả các file đó ra thì mới hiện số.
Và em đang phải dùng 2 cách thủ công như sau
1. Mở tất cả các file đó ra để hàm Indirect hiển thị con số, xong copy và paste value
2. Dùng hàm Concatenate để tạo đường link dẫn đến các ô đó, có dấu = đằng trước, xong copy paste qua Notepad rồi Paste ngược lại các dòng đó trong Excel
Hai cách trên dùng cũng đc, nhưng hơi bất tiện 1 chút.
Các bác có biết code VBA nào có thể thay thế cho hàm Indirect mà k0 phải mở tất cả các file nguồn ra k0 ạ?
Em cảm ơn
VBA có 2 cách 1 dùng bằng cách mở thông thường.2 là dùng ADO để mở ẩn rồi lấy dữ liệu.
 
Upvote 0
VBA có 2 cách 1 dùng bằng cách mở thông thường.2 là dùng ADO để mở ẩn rồi lấy dữ liệu.
bác có thể cụ thể hơn 1 chút đc k0 ạ?
Em chỉ biết dùng Excel và VBA có sẵn chứ k0 biết lập trình ạ
Em cảm ơn
Bài đã được tự động gộp:

Sao không tham chiếu trực tiếp luôn?
Mỗi ngày 1 file bác ạ, cuối tuần em mới tổng hợp lại, mà có đến vài ba kho nên hơi mất công ạ :D
 
Upvote 0
- Nếu VBA cập nhật dữ liệu thường xuyên thì cũng chả khác gì bảo công thức tính lại.
- Nếu không cập nhật thwowngfxuyeen thì coopy/paste value là xong. Cần gì phải VBA.

VBA có 2 cách 1 dùng bằng cách mở thông thường.2 là dùng ADO để mở ẩn rồi lấy dữ liệu.
Viết luôn đi. Chủ thớt chỉ cần bấm nút ra kết quả, không cần biết phải gì khác. Cho đến khi cần sửa đổi gì thì lại lên vòi tiếp.
 
Upvote 0
- Nếu VBA cập nhật dữ liệu thường xuyên thì cũng chả khác gì bảo công thức tính lại.
- Nếu không cập nhật thwowngfxuyeen thì coopy/paste value là xong. Cần gì phải VBA.


Viết luôn đi. Chủ thớt chỉ cần bấm nút ra kết quả, không cần biết phải gì khác. Cho đến khi cần sửa đổi gì thì lại lên vòi tiếp.
vâng, thì em nhờ mà. Bác tốt bụng thì giúp em, k0 thì thôi, việc gì bác phải dùng từ cho nó nặng nề ra thế
 
Upvote 0
tên theo đúng định dạng "yymmdd", mỗi file có 1 sheet "Table 1", và các con số tổng hợp có vị trí là $E$7 và $G$7
Nếu chuẩn chỉ theo mô tả thì code này hoạt động nhé.
Bỏ file đính kèm vào cùng folder với cái file khác. Bấm nút Run -> Kết quả sẽ trả về trong bảng ở file đính kèm
Nếu file không có tên kiểu "220816" thì code không duyệt file đó. Không có tên sheet Table1 thì code sẽ lỗi
 

File đính kèm

  • GetData.xlsm
    18.2 KB · Đọc: 15
Upvote 0
Thử chạy code này:

PHP:
Public Sub test()
With Range("A10") ' change here
    .Value = "='D:\OneDrive\Baocao\2022\[" & Format(Range("B5").Value, "yymmdd") & ".xlsx]Table 1'!$E$7"
    .Value = .Value
End With

End Sub
 
Upvote 0
Web KT

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

Back
Top Bottom