Liên kết động trong Excel
Chúng ta biết đến chức năng Link Manager như
một công cụ quản lý các liên kết bên ngoài, từ
Workbook hiện hành với 1 hay nhiều Workbook
khác. Người dùng Excel thường gặp hộp thoại
Edit or Update link nếu Workbook liên kết chưa
mở. Dĩ nhiên là bạn có thể tắt chức năng cảnh báo
này bằng tuỳ chọn "Don't alert..." trong Startup
Prompt.
Tuy nhiên bạn vẫn có thể gặp rắc rối nếu như cố gắng
cập nhật liên kết từ một Workbook chưa mở, không
tồn tại do di chuyển hoặc đổi tên.
Một ví dụ điển hình khác, bạn có một Workbook bao
gồm nhiều Name (Workbook lưu trữ các bảng danh
mục chẳng hạn) và bạn muốn tham chiếu đến Name
này trong một Book khác. Tất nhiên điều mà bạn
mong muốn là khi định nghĩa lại tham chiếu của
Name trong Workbook nguồn thì Name trong Book
kia cũng thay đổi theo (về bản chất là một).
"Liên kết động" là công cụ để giải quyết các yêu cầu
trên.
Thật ra chưa có tài liệu nào nói về khái niệm này một
cách chính tắc. Từ "động" ở đây bao hàm ý nghĩa là
sự tương ứng so với những thay đổi của nguồn dữ
liệu được liên kết tới một Workbook bên ngoài. Đây
là phương thức liên kết với một Workbook thực sự
tồn tại, được lưu trữ tại bất cứ ở đâu, miễn sao khi
cần cập nhật liên kết thì Workbook đó phải được mở.
Nghe có vẻ chẳng có tác dụng gì vì lấy thông tin từ
một Workbook đang mở thì có nhất thiết phải liên
kết?
Câu trả lời là "Có"!
Một ứng dụng rất hữu ích mà mình vẫn đang làm đó
là tạo ra mối liên kết giữa Workbook bảng cân đối
phát sinh (CDPS) với Workbook sổ nhật ký (SNK).
Chúng ta hiểu mối quan hệ giữa 2 Workbook này:
SNK được xem là Workbook nguồn (Workbook
được liên kết) và CDPS là Workbook liên kết. Vì rất
nhiều lý do, sổ nhật ký thường bị di chuyển, đổi tên
dẫn đến CDPS không tìm đọc được số liệu từ SNK.
Mặt khác SNK là bảng dữ liệu thường xuyên được
mở để cập nhật còn CDPS chỉ được mở khi có nhu
cầu xem báo cáo. Việc tách biệt giữa số liệu và báo
cáo sẽ cải thiện đáng kể tốc độ cập nhật và tính toán
trên SNK. Một lý do khác nữa khiến bạn có ý tưởng
về "liên kết động" là bạn muốn chỉ cần một CDPS để
xem số phát sinh các tài khoản với nhiều kỳ khác
nhau, mỗi kỳ được tổ chức trên một Workbook nhật
ký, có cấu trúc giống nhau. Nếu bạn cung cấp cho
liên kết biết bạn có ý định tham chiếu đến SNK nào
thì liên kết đó thực sự có hiệu lực và đáp ứng cho bạn
theo tham số kỳ kế toán mà bạn đưa vào.
Có lẽ chúng ta không mất thời gian để xây dựng khái
niệm "Liên kết động" là gì nữa. Hi vọng rằng bạn đã
hiểu được nhu cầu về việc liên kết với một Workbook
bên ngoài mà nguồn dữ liệu đó không cố định.
Bây giờ bạn sẽ hỏi: liên kết theo dạng đó như thế
nào?
Nào, hãy định nghĩa một Name để thể hiện rằng
chúng ta muốn liên kết đến các SNK của các kỳ: năm
2004, 2005, 2006, 2007... được lưu trữ trong các
Workbook: SNK_2004.xls, SNK_2005.xls,
SNK_2006.xls, SNK_2007.xls...
Chúng ta nhận thấy tham số ở đây là các kỳ kế toán
và tham số này được truyền vào khi người dùng lựa
chọn kỳ kế toán (được thiết kế trên sheet). Giả sử
Sheet1!$A$1 của Workbook hiện hành chứa giá trị
tham số kỳ kế toán, chúng ta sẽ có một Name:
SNK:= "SNK_" & Sheet1!$A$1 & ".xls"
Với Name này, bạn chưa thể tạo ra một bảng CDPS
với những con số sống động. Một Name khác sẽ cho
phép bạn tham chiếu đến vùng dữ liệu
NHATKY_Range trên SNK:
Như đã đề cập, bạn có thể "mượn" Name của một
Workbook này để sử dụng cho một Workbook khác:
bảng danh mục khác hàng (KHACHHANG) có thể
được sử dụng cho nhiều SNK mà bất cứ một thông
tin nào của khách hàng bị thay đổi thì thông tin ở tất
cả các SNK được cập nhật theo. Đây là ưu điểm
chính giúp bạn quản lý dữ liệu trên Excel tập trung và
đồng bộ hơn.
Kỹ thuật không có gì mới mẻ, bạn dễ dàng tạo ra liên
kết giữa CDPS với SNK thông qua sử dụng Name
NHATKY_Range đã được định nghĩa trong
Workbook nhật ký bằng việc sử dụng kết hợp hàm
INDIRECT. Công thức sau sẽ liên kết thông tin từ
SNK sang CDPS ở mức Worksheet:
NHATKY_Range:= INDIRECT(SNK &
"!NHATKY_Range" )
trong đó SNK là Name đã được định nghĩa như ở trên
Tất nhiên bạn có thể kết hợp để tham chiếu thẳng đến
vùng dữ liệu NHATKY_Range trên sổ nhật ký bằng
công thức cải tiến trong reference to của name
NHATKY_Range trên CDPS như sau:
NHATKY_Range:=INDIRECT("SNK_" &
Sheet1!$A$1 & ".xls!NHATKY_Range")
Tuy vậy mình khuyến nghị các bạn nên sử dụng
name SNK để thuận tiện cho việc bảo trì các tham
chiếu có sử dụng SNK sau này!
Công thức trên được diễn giải như sau: chúng ta cần
tham chiếu đến Name SNK trong Workbook
SNK_????.xls, trong đó ???? là giá trị được tham
chiếu từ Sheet1!$A$1. (???? được thay đổi theo
người dùng nhập vào)
Bây giờ, trên CDPS, bạn có thể kết hợp các hàm có
sử dụng Name SNK một cách bình thường.
Lưu ý rằng: nếu workbook nguồn đóng lại thì công
thức có sử dụng Name này sẽ báo lỗi #REF! vì dữ
liệu của Name luôn được cập nhật (online). Ngược lại
khi bạn mở Workbook liên kết (CDPS) excel không
đưa ra hộp thoại cảnh báo về việc không tìm thấy dữ
liệu nguồn. Đây có thể là lợi điểm khiến chúng ta yêu
thích khi sử dụng liên kết động.
Kiến thức về liên kết động không có gì mới nhưng
khả năng ứng dụng thì rất đa dạng. Hi vọng bài viết
này gợi mở cho bạn cách thức quản lý thông tin bằng
Excel tốt hơn, nhanh hơn và tối ưu hơn.
giai phap excel