Xin được giúp đỡ về link với tên wrkb truyền từ cột. (1 người xem)

Liên hệ QC

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

stockbaby

Thành viên mới
Tham gia
19/8/07
Bài viết
2
Được thích
0
Kính chào các bác,

Em đang có một vấn đề mà loay hoay cả ngày nay chưa làm được, qua google em tìm ra được forum này, mong các bác bớt chút thời gian giúp đỡ em vì nếu em làm bằng tay theo kiểu "nông văn dền" thì rất cứng nhắc, và mất thời gian do dữ liệu quá nhiều.

1/ Bài toán
+ Em muốn xây dựng các phân tích cơ bản về tất cả các mã cổ phiếu ở 02 sàn HASTC và HOSE.
+ Dữ liệu cho mỗi mã cổ phiếu em sẽ để trong các File có tên tương ứng là mã cổ phiếu, ví dụ em đính kèm 2 files BBS.xls & BCC.xls. Trong mỗi file sẽ có 02 sheets lưu về số liệu Cân đối kế toán (CDKT) và Kết quả kinh doanh (KQKD) theo các quý gần nhất. Nếu có thông tin về doanh nghiệp của từng cổ phiếu em sẽ thêm vào các file tương ứng này. (Nguồn em lấy tự động, hoặc lấy từ TT công bố)
+ Em xây dựng một tệp summary.xls, sẽ link dữ liệu từ các tệp dữ liệu trên theo mã chứng khoán; trên bảng này em sẽ chia ra từng quý để phân tích gộp trên 4 quý gần nhất này với các chỉ tiêu P/S, PE, EPS, ROE, ROA....

2/ Nội dung cần giúp đỡ?
+ Em muốn có giải pháp tạo link tự động trong Summary.xls. Ví dụ em lấy dữ liệu quý 2 năm 2007 của BBS, em sẽ link vào BBS.xls để lấy; ex. C2 =[BBS.xls]CDKT!$B$4 sẽ lấy dữ liệu "Tiền và các khoản tương đương tiền" là B4 trong BBS.xls. Nhưng do dữ liệu được quy chuẩn nên em muốn "BBS" sẽ được truyền vào qua biến, và mã cổ phiếu ô B[x] (đối với BBS chính là B2) để truyền vào. Tương tự các cột dữ liệu khác cũng sẽ lấy link như vậy...

Rất mong được sự quan tâm giúp đỡ của các bác!!!

Stockbaby@

*Em viết VB, C++ rất tốt, nhưng Excel thì gà mờ, hy vọng là không phải dùng OLE. Vậy nên nếu các bác có hướng dẫn VBA thì em có thể hiểu được.-\\/.
 

File đính kèm

Chào mừng bạn đến với GPE. Trước tiên bạn tạo 1 file XL mới. Trong sheet1 ô A1 bạn gõ 1 con số nào đó rồi save nó với tên là "Add cells without formulas.xls" giùm. Xong rồi down cái file thí dụ này về vô VBE sửa dòng trong code UpdateValue:

Mã:
ActiveCell.FormulaR1C1 = "='[B]H:\My Documents\Misc\[/B][" & SourceFile & ".xls]Sheet1'!R[-1]C[-1]"

thành tên tập tin (folder) bạn save cái file "Add cells without formulas.xls". Sau đó chạy macro.

Có cách khác dùng hàm indirect (có hướng dẩn trong file thí dụ). Nếu bạn xài cách này thì nên có 1 sheet biệt lập, ẩn (nếu cần) để ghi tất cả chi tiết gốc: file name, tên sheet, địa chỉ ô lấy giá trị. Khi đã có những giá trị từ các workbook khác thì vô cái summary sheet rồi bấm dấu = và trỏ chuột vô cái ô đã có giá trị lấy được bằng hàm indirect.

Mến
 

File đính kèm

digita đã viết:
Có cách khác dùng hàm indirect (có hướng dẩn trong file thí dụ). Nếu bạn xài cách này thì nên có 1 sheet biệt lập, ẩn (nếu cần) để ghi tất cả chi tiết gốc: file name, tên sheet, địa chỉ ô lấy giá trị. Khi đã có những giá trị từ các workbook khác thì vô cái summary sheet rồi bấm dấu = và trỏ chuột vô cái ô đã có giá trị lấy được bằng hàm indirect.

Mến
Trân trọng cảm ơn bác Digita, tôi đã chọn cách dùng hàm Indirect, tuy nhiên nhược điểm là chỉ lấy được dữ liệu khi target workbook phải mở. Với hàng mấy trăm files cùng phải mở để lấy dữ liệu là điều khó làm. Cũng từ gợi ý dùng hàm Indirect của bác, tôi tìm ra được một hàm khác là INDIRECT.EXT từ địa chỉ http://xcell05.free.fr/english/morefunc/indirect.ext.htm. Hàm này theo như web này nói là có thể lấy dữ liệu ngay cả khi target workbook đóng. Và tôi đã làm thành công.

Một lần nữa xin cảm ơn bác!
 
Lần chỉnh sửa cuối:
OK. Bạn thích lối dùng indirect mà không muốn mở cái file gốc ra.

Hiện có 2 cái addin: Morefunc & Pull UDF (tìm qua Google). Cái bất tiện là dùng các addin người khác chế ra thì phải nhớ cú pháp. Sử dụng file ví dụ trước ta có thể chỉnh đồi code dưới đây thì đơn giản hơn và linh động không khác gì xài hàm indirect.

Mã:
Sub UpdateValueFromClosedWB()
Sheet1.Cells(1, 1) = "= 'H:\My Documents\Misc\" & "[" & Range("A8") & ".xls]" & Range("A10") & "'!" & Range("A12")
End Sub

Mến
 
Web KT

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

Back
Top Bottom