Tin học 365

  • Increase font size
  • Default font size
  • Decrease font size
  • default color
  • red color
  • green color
Tin học 365
Liên kết động trong Excel In Email
Thứ hai, 04 Tháng 2 2008 16:03

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

 

Warning: fsockopen() [function.fsockopen]: unable to connect to 200.3.14.10:43 (A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. ) in D:\wwwroot\vitec\modules\tinhoc\administrator\components\com_joomlastats\count.classes.php on line 1038