Liên kết động trong Excel (1 người xem)

Liên hệ QC

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

Status
Không mở trả lời sau này.

Đào Việt Cường

Cu Tí sành điệu
Thành viên danh dự
Tham gia
11/6/06
Bài viết
527
Được thích
760
Giới tính
Nam
Nghề nghiệp
Kiểm toán nhà nước
Dear all,
-------
Mình không biết đặt tên chủ đề như vậy đã thích hợp chưa nhưng vấn đề mình sắp nêu dưới đây thì tin rằng nó sẽ được ứng dụng hữu ích.

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.

Chúng ta sẽ cùng nhau thảo luận kỹ hơn về khả năng ứng dụng của liên kết động cũng như có điều kiện để chỉ ra những ưu nhược điểm của nó.

Thân ái
 
Lần chỉnh sửa cuối:
Xin chào
Trong khi chờ anh Cu Tí, mình gởi các bạn một số ví dụ về cách dùng hàm INDIRECT (có cả Lookup và Validation)

Thân!
 

File đính kèm

các bác xem hộ em cái liên kết động này với, em làm thấy các ô tòn là REF
 

File đính kèm

connhangheo đã viết:
các bác xem hộ em cái liên kết động này với, em làm thấy các ô tòn là REF
Công thức của bạn: =INDIRECT("book1.xls!sheet2!B7")
Như vậy là chưa chính xác, bạn thử công thức này xem nhé :
=INDIRECT("[book1.xls]sheet2!B7")

TDN
 
em thử rồi nhưng không được bác ah, các ô vẫn hiện ra là #REF,mong bác xem lại hộ em
 
Công thức sẽ đúng với điều kiện bạn mở 2 file cùng 1 lúc
 
connhangheo đã viết:
em thử rồi nhưng không được bác ah, các ô vẫn hiện ra là #REF,mong bác xem lại hộ em

Đọc kỹ bạn nhé :
Đào Việt Cường đã viết:
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.

Thân!
 
em mở cả 2 workbook cùng 1 lúc mà
 
Em cũng có tìm hiểu về vấn đề này, nhưng không biết có thể đưa vào VBA không.
co đoạn code nay các anh cho ý kiến (hơi ẹ <--- Nghiệp dư mà)
Sub kiemtraDM()
Dim i As Long
Dim ketthuc As String
Application.Goto Reference:="R2C2"
ketthuc = InputBox("", "", 10)

'TAOCONGTHUC
For i = 1 To ketthuc
ActiveCell.FormulaR1C1 = _
"RE#RA='D:\[BANG KE VAT LIEU NHAP KHAU.xls]" & Sheet1.Cells(i + 1, 1).Value & "'!$B$1"
Cells.Replace What:="RE#RA", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
Application.Goto Reference:="R[1]C"
Next

End Sub
Em dùng ghi macro để có các anh đừng cươi nhé
Còn nữa,
Em thử nghiệm với indirect() thi trường hợp:
'D:\[Book1.xls]Sheet1'!$A$1
'D:\[Book2.xls]Sheet1'!$A$1
'D:\[Book3.xls]Sheet1'!$A$1
.......
'D:\[Bookn.xls]Sheet1'!$A$1
Thì mình làm sao?
À ma làm sao attach file khi pót bai nhi?
 
Lần chỉnh sửa cuối:
Xin chào! minh la thành viên mới của diễn đàn. Mình biết rất ít về Excel, mong các bạn chỉ thêm cho ạ.

Mình đang có một vướng mắc xin các bạn giải đáp giùm cho:
Trong 1 file có 3 sheet chi tiết và 1 sheet tổng hợp, mình muốn số liệu từng khoản mục trong 3 sheet chi tiết tự động chạy qua sheet tổng hợp nhung không biết dùng công thức nào để link. Các bạn giúp mình nhé.
Mình gởi kèm theo file.
cam on nhiu nhiu

Emnhattrendoi chú ý: Bài viết phải có dấu, bạn phải sửa lại không sẽ bị xóa!
 

File đính kèm

Lần chỉnh sửa cuối:
Cám ơn bạn, nhưng ý của mình không phải vậy, vậy thì đơn giản quá, mình muốn số liệu từng khoản mục của cả 3 sheet được tổng hợp vào sheet tổng hợp.
VD như là khoản mục AA (sheet TCKT )+ AA (sheet TCNS) + AA (sheet KDXK) sẽ được tổng hợp bên sheet TH, mỗi khoản mục trong mỗi sheet có thể có ở sheet này và không có ở sheet kia, mình có dùng thử hàm sumif nhưng hình như hơi dài, vì còn rất nhiều sheet chi tiết như vậy nữa, mình chỉ đưa ra 3sheet VD thoi. bạn thử xem còn cách nào khác không nha. có thể dùng 1 danh mục khoản mục làm trung gian không?
Mình không biết nói vậy có khó hiểu không nữa.
 

File đính kèm

theo em thì bác gộp tất cả các khoản mục của tất cả các sheet vào cùng 1 sheet rồi dùng hàm sumif hay hàm sumproduct cũng được
 
emnhattrendoi đã viết:
Cám ơn bạn, nhưng ý của mình không phải vậy, vậy thì đơn giản quá, mình muốn số liệu từng khoản mục của cả 3 sheet được tổng hợp vào sheet tổng hợp.
VD như là khoản mục AA (sheet TCKT )+ AA (sheet TCNS) + AA (sheet KDXK) sẽ được tổng hợp bên sheet TH, mỗi khoản mục trong mỗi sheet có thể có ở sheet này và không có ở sheet kia, mình có dùng thử hàm sumif nhưng hình như hơi dài, vì còn rất nhiều sheet chi tiết như vậy nữa, mình chỉ đưa ra 3sheet VD thoi. bạn thử xem còn cách nào khác không nha. có thể dùng 1 danh mục khoản mục làm trung gian không?
Mình không biết nói vậy có khó hiểu không nữa.
Có 1 cách tổng quát cho trường hợp của bạn... Nhưng bạn phải sửa lại đôi chút... : Bạn sữa lại tên tất cả các sheet (trừ TH) thành nguyên mẫu Sheet1, Sheet2, Sheet3... vân vân... rồi tạo công thức sau:
Mã:
=SUMPRODUCT(SUMIF(INDIRECT("'Sheet"&ROW(INDIRECT("1:3"))&"'!$C$10:$C$21"),C10,INDIRECT("'Sheet"&ROW(INDIRECT("1:3"))&"'!$E$10:$E$21")))
Chú ý ngay chổ INDIRECT("1:3")... ở đây là 3 sheet, nếu bạn có 30 sheet thì sữa thành INDIRECT("1:30")...
Cách này dc cái là số lượng sheet càng nhiều bạn càng thấy sự thuận lợi của nó... Hiện công thức hơi dài hơn công thức của bạn... Nhưng từ 4 sheet trở lên thì độ dài công thức vẫn ko đổi...
Cách thì có đấy! Tuy nhiên tôi vẫn ũng hộ việc gôm chung dử liệu thành 1 sheet, dễ tổng hợp hơn!
Mến
ANH TUẤN
 
anhtuan1066 đã viết:
Có 1 cách tổng quát cho trường hợp của bạn... Nhưng bạn phải sửa lại đôi chút... : Bạn sữa lại tên tất cả các sheet (trừ TH) thành nguyên mẫu Sheet1, Sheet2, Sheet3... vân vân... rồi tạo công thức sau:
Mã:
=SUMPRODUCT(SUMIF(INDIRECT("'Sheet"&ROW(INDIRECT("1:3"))&"'!$C$10:$C$21"),C10,INDIRECT("'Sheet"&ROW(INDIRECT("1:3"))&"'!$E$10:$E$21")))
Chú ý ngay chổ INDIRECT("1:3")... ở đây là 3 sheet, nếu bạn có 30 sheet thì sữa thành INDIRECT("1:30")...
Cách này dc cái là số lượng sheet càng nhiều bạn càng thấy sự thuận lợi của nó... Hiện công thức hơi dài hơn công thức của bạn... Nhưng từ 4 sheet trở lên thì độ dài công thức vẫn ko đổi...
Cách thì có đấy! Tuy nhiên tôi vẫn ũng hộ việc gôm chung dử liệu thành 1 sheet, dễ tổng hợp hơn!

Cám ơn bạn. Mình thử công thức của bạn nhưng báo lỗi #REF!, không biết sai chỗ nào nữa. bạn chỉ lại giùm mình với.
những dữ liệu đó mình phải báo cáo theo từng phòng ban. việc thực hiện của từng phòng ban có đúng kế hoạch đề ra hay không nên khó để gôm lại thành 1 sheet.
Mình không hiểu về hàm Indirect lắm ( dù đã đọc qua sách ), bạn có thể giải thích rõ hơn về hàm này không.
Cám ơn nhiều nhé
 
Đây... làm cho bạn đây... xem file nhé... công thức nằm trong cell màu vàng ấy
Làm xong còn phát hiện bạn sai ngay dòng 11, đáng lý AB phải có kết quả =10.000 còn công thức của bạn lại ra kết quả 7.000
Công thức này có 1 cái lợi là dù bạn có bao nhiêu sheet thì công thức vẫn thế... chỉ phải sửa lại chổ INDIRECT("1:....)
Mến
ANH TUẤN
 

File đính kèm

em ko hiểu chỗ row(indirect("1:3")) nghĩa là thế nào, mong bác giải thích giúp. (dùng indirect thế này em thấy hơi là, chẳng hiểu gì :) )
 
Lý ra thì chỉ cần ROW($1:$3) cũng đũ rồi... ko cần INDIRECT phía trước làm gì (tại tôi quen tay..hi..hi)... INDIRECT sẽ cần thiết nếu ta có 1 cell nào đó đếm số sheet.. Và nếu làm thật kỹ thì tôi sẽ dùng thêm hàm CELL("filename") đễ trích ra con số thứ tự của tên sheet cuối cùng và sẽ tạm xem số này chính là số lượng sheet nếu như tên sheet là mặc định... (lòng vòng quá nhỉ)
Cái này chỉ là tạo 1 mãng từ 1 đến 3 mà thôi... Nếu thay = 1:30 sẽ thành 1 mãng từ 1 đến 30
Đây là kỹ thuật mánh khóe khi ta muốn tạo 1 số thứ tự nào đó, chẳng hạn muốn tạo số thứ tự từ 1 đến 10 ta sẽ tận dụng hàm ROW trong trường hợp này
Ví dụ mãng {1,2,3,4,5,6,7,8,9,10} sẽ tương đương với công thức mãng ROW($1:$10)...
Nếu bạn chịu khó theo dỏi các file trích dử liệu duy nhất ko dùng VBA bạn sẽ thấy người ta thường áp dụng kỹ thuật này...
Tôi tất nhiên hiểu rõ nó đễ làm cái gì nhưng ko biết giãi thích sao cho thật dễ hiểu nữa đây... (món này chắc phải nhờ thầy giáo ttphong2007)
ANH TUẤN
 
Lần chỉnh sửa cuối:
Chuyển hàng thành cột

Xin chào tất cả các thành viên của diễn đàn. Em xin hỏi có cách nào chuyển hàng thành cột trong excel ko để khi thay đổi giá trị của hàng thì cột tự động thay đổi theo. Bác nào biết thì giúp em với. Em cảm ơn.
VD: Em muốn chuyển hàng ngang của bảng V: Dòng tiền tệ (cụ thể là hàng tính tổng dòng tiền chi phí của chủ đầu tư và dự án thành cột các loại chi phí ở bảng phân tích hiệu ích tài chính của dự án (cột giá trị thứ 2 sau VĐT mà khi thay đổi hàng ngang ở bảng V thì cột đó tự thay đổi theo).
 

File đính kèm

Lần chỉnh sửa cuối:
Xin chào tất cả các thành viên của diễn đàn. Em xin hỏi có cách nào chuyển hàng thành cột trong excel ko để khi thay đổi giá trị của hàng thì cột tự động thay đổi theo. Bác nào biết thì giúp em với. Em cảm ơn.
Hoàn toàn có thể làm dc bằng rất nhiều công thức:
1> TRANSPOSE
2> INDIRECT
3> OFFSET
4> INDEX
vân vân và vân vân...
Nhưng nói cho cùng thì kết quả chỉ có thể đúng trong dử liệu cụ thể nào đó... tức là bạn đưa file lên, hiểu ko?
ANH TUẤN
 
Hình như bạn đang làm ngược thì phải ??? Lý ra phần nhập liệu phải ở sheet tổng hợp, tức là ghi toàn bộ dử liệu vào đây... Khi nào cần trích cái gì thì dùng công thức hoặc VBA để trích ra, như vậy quy trình sẽ dể hơn nhiều so với cách bạn đang làm
1> Cách dể: Ghi dử liệu vào 1 nơi duy nhất, trích ra 1 nơi khác hay nhiều nơi cũng dc
2> Cách khó: Ghi dử liệu vào nhiều nơi rồi hợp lại ở 1 nơi
Vậy là bạn đang tự làm khó mình rồi
Mến
ANH TUẤN
 
Rất mong các bạn giúp về liên kết các sheet

TÔI LÀ THÀNH VIÊN MỚI cũng chưa biết nhiều về excel ,CÁC BẠN HƯỚNG DẪN GIÚP VỀ Ý TƯỞNG NÀY
có gởi kèm chia 4 file lận
Cám ơn rất nhiều
 

File đính kèm

xin mọi người giúp đõ

tôi muốn nhập liệu trong Access, làm sao cập nhật dữ liệu này vào excel một cách tự động ( không dùng Macro, VBA), khi chỉnh sửa trong access thì dữ liêu trong excel cũng thay đổi theo. Kính mong được mọi người quan tâm giúp, trân trong cám ơn.
progress.gif
 
Cho tôi xen vào hỏi một tí nhe

Có 1 cách tổng quát cho trường hợp của bạn... Nhưng bạn phải sửa lại đôi chút... : Bạn sữa lại tên tất cả các sheet (trừ TH) thành nguyên mẫu Sheet1, Sheet2, Sheet3... vân vân... rồi tạo công thức sau:
Mã:
=SUMPRODUCT(SUMIF(INDIRECT("'Sheet"&ROW(INDIRECT("1:3"))&"'!$C$10:$C$21"),C10,INDIRECT("'Sheet"&ROW(INDIRECT("1:3"))&"'!$E$10:$E$21")))
Chú ý ngay chổ INDIRECT("1:3")... ở đây là 3 sheet, nếu bạn có 30 sheet thì sữa thành INDIRECT("1:30")...
Cách này dc cái là số lượng sheet càng nhiều bạn càng thấy sự thuận lợi của nó... Hiện công thức hơi dài hơn công thức của bạn... Nhưng từ 4 sheet trở lên thì độ dài công thức vẫn ko đổi...
Cách thì có đấy! Tuy nhiên tôi vẫn ũng hộ việc gôm chung dử liệu thành 1 sheet, dễ tổng hợp hơn!
Mến
ANH TUẤN

VỚI CÔNG THỨC CỦA ANH TUẤN THÌ KHI TÔI ĐỔI TÊN CỦA SHEET THÌ LÀM SAO A.THANK
 
VỚI CÔNG THỨC CỦA ANH TUẤN THÌ KHI TÔI ĐỔI TÊN CỦA SHEET THÌ LÀM SAO A.THANK
Tất nhiên vẫn có cách nhưng khó hơn 1 chút
1> Đầu tiên phải tạo 1 cột chứa tên của tất cả các sheet... Điều này có thể làm dc bằng cách tự gõ bằng tay hoặc dùng công thức... Nếu dùng công thức thì sẽ dc 1 lợi thế là danh sách này tự động cập nhật luôn:
Xem cách làm tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=8798 (Bài số #2)
2> Giả sử bạn đã có cột chứa tên sheet nằm ở H1:H30 .. ta chuyển sang bước 2 sửa lại công thức:
Mã:
=SUMPRODUCT(SUMIF(INDIRECT("'"&[B][COLOR=red]$H$1:$H$30[/COLOR][/B]&"'!$C$10:$C$21"),C10,INDIRECT("'"&[B][COLOR=red]$H$1:$H$30[/COLOR][/B]&"'!$E$10:$E$21")))
Bạn hảy thí nghiệm công thức.. Ở công đoạn tạo list chứa tên sheet hảy làm bằng tay trước, nếu thành công thì ta sẽ tự động hóa công đoạn này luôn cũng chưa muộn
Mến
ANH TUẤN
 
Cho hỏi về listbox >Validation

Có cách nào lấy 2 cột vào 1 listbox được không?Thank
kèm file
 

File đính kèm

Đó là Validation list chứ ko phải list box... và Excel cũng ko cho phép 2 cột tồn tại trong 1 list của Validation đâu... Có chăng thì bạn dùng ComboBox vậy!
ANH TUẤN
 
Làm thế nào để chọn toàn bộ comment?

Tôi có một file có chứa rất nhiều comment, nay tôi muốn xóa hết đi nhưng lại không muốn chọn từng cái một để xóa. Có cách nào chọn một lần được hết các comment đó rồi xóa được không? Ai biết trả lời dùm, xin cảm ơn nhiều.
P/s: sao lại không tạo chủ đề mới được nhỉ Admin?
 
Tôi có một file có chứa rất nhiều comment, nay tôi muốn xóa hết đi nhưng lại không muốn chọn từng cái một để xóa. Có cách nào chọn một lần được hết các comment đó rồi xóa được không? Ai biết trả lời dùm, xin cảm ơn nhiều.
P/s: sao lại không tạo chủ đề mới được nhỉ Admin?

oh, sao nhỉ?

bạn chỉ cần chọn vùng chứa các ô đó -> nháy phải chuột (R.Click) chọn Delete Comment

hoặc

chọn vùng chứa các ô đó -> Vào Edit \ Clear ...\Comment


.
 
Tôi có một file có chứa rất nhiều comment, nay tôi muốn xóa hết đi nhưng lại không muốn chọn từng cái một để xóa. Có cách nào chọn một lần được hết các comment đó rồi xóa được không? Ai biết trả lời dùm, xin cảm ơn nhiều.

Bạn làm theo các bước sau nhé :
  1. Mở sheet có các comment cần xoá.
  2. Nhấn F5 để mở bảng Go to.
  3. Nhấn nút Spencial... mở bảng Go to spencial.
  4. Chọn Comments, rồi OK.
  5. Lúc này tất cả các cell có comment đều được chọn, rà chuột đến 1 cell đó, nhấn chuột phải, chọn Delete comment.
  6. Xem kết quả.
 
Hoàn thành bảng theo dõi khối lượng công việc!

Nhờ mọi người hoàn thành giúp tui bảng theo dõi khối lượng công viêc dưới đây.
 

File đính kèm

Nhờ mọi người hoàn thành giúp tui bảng theo dõi khối lượng công viêc dưới đây.
Bài toán này chỉ là các công thức bình thường thôi mà bạn:
-Cao nhất =MAX(B3:F3)
-Thấp nhất =MIN(B3:F3)
-Người cao nhất =INDEX($B$2:$F$2,1,MATCH(G3,$B3:$F3,0))
-Người thấp nhất =INDEX($B$2:$F$2,1,MATCH(I3,$B3:$F3,0))
Có điều tôi thấy cách bố trí dử liệu hơi kỳ kỳ! Chả lẽ danh sách chỉ có 5 nhân viên? Nếu có 300 người thì bạn định bố trí sao đây? (Excel2003 chỉ có 256 cột)
 
Hỏi Về Combobox

Chào các bạn diễn đàn cho hỏi một chút về combobox
_Trong combobox có hiện được 4 cột không nhi,và số điều chỉnh max là bao nhiêu dòng???
_Có thể lấy cách khoảng cột được không???
_Khi liên kết số liệu.vd
Tôi có list dữ liệu đại khái gồm:
1) B11098007UO
2) 14567U3L
3) 11768932
Ba mã số trên trong combobox,khi tôi bấm vào mã số 1),2) vẫn hiện dữ liệu bình thường,nhưng khi đến mã 3) thì không hiện dữ liệu,không hiểu tại sao,mong các bạn hướng dẫn giúp.(hình như là đến những mã toàn là số thì không hiện dữ liệu)
Cám ơn nhiều
 
Chỉnh sửa lần cuối bởi điều hành viên:
Tất nhiên vẫn có cách nhưng khó hơn 1 chút
1> Đầu tiên phải tạo 1 cột chứa tên của tất cả các sheet... Điều này có thể làm dc bằng cách tự gõ bằng tay hoặc dùng công thức... Nếu dùng công thức thì sẽ dc 1 lợi thế là danh sách này tự động cập nhật luôn:
Xem cách làm tại đây:
http://www.giaiphapexcel.com/forum/showthread.php?t=8798 (Bài số #2)
2> Giả sử bạn đã có cột chứa tên sheet nằm ở H1:H30 .. ta chuyển sang bước 2 sửa lại công thức:
Mã:
=SUMPRODUCT(SUMIF(INDIRECT("'"&[B][COLOR=red]$H$1:$H$30[/COLOR][/B]&"'!$C$10:$C$21"),C10,INDIRECT("'"&[B][COLOR=red]$H$1:$H$30[/COLOR][/B]&"'!$E$10:$E$21")))
Bạn hảy thí nghiệm công thức.. Ở công đoạn tạo list chứa tên sheet hảy làm bằng tay trước, nếu thành công thì ta sẽ tự động hóa công đoạn này luôn cũng chưa muộn
Mến
ANH TUẤN
Bác ơi, em đã làm theo công thức của bác nhưng không được, không biết sai ở đâu , bác sửa giúp em nhé , thanks
 

File đính kèm

Bác ơi, em đã làm theo công thức của bác nhưng không được, không biết sai ở đâu , bác sửa giúp em nhé , thanks
Công thức của bạn là:
Mã:
SUMPRODUCT(SUMIF(INDIRECT("'"&[COLOR=Red]$L:$L[/COLOR]&"'!$C$10:$C$21"),C10,INDIRECT("'"&[COLOR=Red]$L:$L[/COLOR]&"'!$E$10:$E$21")))
$L:$L là thế nào chứ, phải vừa gọn từ L3 đến L6 thôi!
Để tiện cho việc sau này bạn thêm sheet tôi đặt 1 name động nữa:
Mã:
List =OFFSET(TH!$L$3,,,NoSs-1,)
Và cuối cùng là công thức tại cell I10
Mã:
I10 =SUMPRODUCT(SUMIF(INDIRECT("'"&[COLOR=Red]List[/COLOR]&"'!$C$10:$C$21"),C10,INDIRECT("'"&[COLOR=Red]List[/COLOR]&"'!$E$10:$E$21")))
Kéo fill xuống
 

File đính kèm

From:http://www.dailydoseofexcel.com/archives/2004/12/01/indirect-and-closed-workbooks/
INDIRECT and closed workbooks
Laurent Longre has developed the free add-in MOREFUNC.XLL which includes the
function INDIRECT.EXT
You can use it in the same way as INDIRECT. e.g.:
=INDIRECT.EXT(��C:temp[book1.xls]sheet!�A1�) ...
Use SQL.REQUEST:
The usage is described here. ...
Cái này tôi có từng thấy qua! Hay lắm, móc dc giá trị của WB đang đóng.
Có điều ngại xài vì máy mình chạy dc, máy người khác lại tịt thì cũng như ko
 
...móc dc giá trị của WB đang đóng.
...
Lấy giá trị từ WB đang đóng thì có nhiều cách lắm, nếu không thích dùng cách trên thì thử
PHP:
Sub Macro2()

'='D:\[Closed Workbook.xls]Sheet A'!$B$10
Dim MyPath  As String, strAddress As String
MyPath = "'D:\[Closed Workbook.xls]Sheet A'!"
strAddress = "$B$7"

With Range("a1")
.Formula = "=" & MyPath & strAddress
.Value = .Value
End With

End Sub
Hình như trong Excel có vài hàm dùng công thức 3D nầy được: vlookup, index.... sumproduct..Có hàm thì kg dùng được
SQL.REQUEST là 1 worksheet function (cần cài thêm add-in ODBC.xla), dùng SQL.REQUEST là tiện nhất vì vừa đọc, vừa update closed workbooks
 
Lần chỉnh sửa cuối:
Như đã viết ở trên,SQL.REQUEST còn sửa, cập nhật số liệu của wb đang đóng,các bạn xem file ví dụ của việc cập nhật số liệu của wb đang đóng của Byg Sofwawe; download tại : http://www.bygsoftware.com/examples/zipfiles/SqlRequest_UPDATE.zip
Nhân tiện các bạn xem file lấy giá trị từ hàm SUM của wb đang đóng của tôi
 

File đính kèm

To ndu9608163 or someone?

Bài toán này chỉ là các công thức bình thường thôi mà bạn:
-Cao nhất =MAX(B3:F3)
-Thấp nhất =MIN(B3:F3)
-Người cao nhất =INDEX($B$2:$F$2,1,MATCH(G3,$B3:$F3,0))
-Người thấp nhất =INDEX($B$2:$F$2,1,MATCH(I3,$B3:$F3,0))
Có điều tôi thấy cách bố trí dử liệu hơi kỳ kỳ! Chả lẽ danh sách chỉ có 5 nhân viên? Nếu có 300 người thì bạn định bố trí sao đây? (Excel2003 chỉ có 256 cột)
Bạn nói đúng thực sự danh sách của mình ko chỉ có vài người như vậy đâu.Có lẽ mình sẽ sắp xếp bảng thành thế này. Mong được sự giúp đỡ giải quyết vấn đề.
 

File đính kèm

Kính nhờ các bác chỉ cho em biết Name này sai ở chỗ nào mà có công thức dùng được, có cái lại không? Em mới tập tẹ nên k biết.
 

File đính kèm

Kính nhờ các bác chỉ cho em biết Name này sai ở chỗ nào mà có công thức dùng được, có cái lại không? Em mới tập tẹ nên k biết.
Name của bạn:
none =OFFSET(Sheet1!$C$2,,,COUNTA(Sheet1!$C$2:$C$26),COUNTA(Sheet1!$C$2:$G$2))
Bạn sửa lại thành:
None =OFFSET(Sheet1!$C$3,,,COUNTA(Sheet1!$C$3:$C$1000),)
Còn công thức tại K3 thì sửa thành:
K3 =SUMIF(None,"*"&I3,OFFSET(None,,4))
 
Vùng dữ liệu từ C3 nên sửa thành

=OFFSET(Sheet1!$C$3,,,COUNTA(Sheet1!$C$3:$C$26),COUNTA(Sheet1!$C$2:$G$2))
 
Name của bác anhtuan k chạy được xong công thức thì Ok. Em dùng Name của Sealand được rùi. Thanhkyou very big
 
Các bác cho em hỏi thêm tý.
khi ta đặt Name như vậy thì tốc độ sử lý dữ liệu của máy nhanh hơn hay chậm đi để em biết đường mò chứ file cuả em nhiều dữ liệ lắm lắm.
 
Các bác cho em hỏi thêm tý.
khi ta đặt Name như vậy thì tốc độ sử lý dữ liệu của máy nhanh hơn hay chậm đi để em biết đường mò chứ file cuả em nhiều dữ liệ lắm lắm.
Tôi nghĩ việc đặt name có thể làm chậm quá trình tính toán 1 chút (vì phải thông qua name trước)... nhưng bù lại ta được nhiều cái lợi khác (bạn dùng name thường đương nhiên sẽ biết đó là những cái lợi nào)
Tuy nhiên tốc độ xử lý tùy thuộc nhiều nhất vào THUẬT TOÁN của name (nằm trong công thức name)...
Nói nôm na: 2 người làm 1 bảng tính, cùng ra 1 kết quả, nhưng người thứ nhất có cách đặt name thông minh hơn thì tốc độ tính toán sẽ nhanh hơn!
Nói thêm: việc bố trí dử liệu hợp lý cũng quan trọng không kém (theo tôi là quan trọng nhất đấy)... vì nó ảnh hưởng phần lớn đến quá trình tính toán ---> Tính toán phải thông qua dử liệu, đương nhiên bố trí lộn xộn thì làm việc sẽ chậm hơn
 
Các bạn cho mình hỏi? Nếu cứ mỗi tuần bạn nhận được một bản phân công nhiệm vụ, các trường thì y như nhau vì sếp chỉ cập nhật thêm cái mới vào thôi. Vậy làm sao để nhập 2 dữ liệu lại làm một, hai record trùng nhau thì nhập lại làm một.
Rất mong được giúp đỡ!
Thanks & Best Regards!
 
Lần chỉnh sửa cuối:
Các bạn cho mình hỏi? Nếu cứ mỗi tuần bạn nhận được một bản phân công nhiệm vụ, các trường thì y như nhau vì sếp chỉ cập nhật thêm cái mới vào thôi. Vậy làm sao để nhập 2 dữ liệu lại làm một, hai record trùng nhau thì nhập lại làm một.
Rất mong được giúp đỡ!
Thanks & Best Regards!
Sao bạn không đưa file mẫu lên... Nói thế thì hiểu, nhưng chẳng biết hướng dẩn thế nào cho chính xác (vì có biết dử liệu của bạn nó nằm ở sheet nào, dòng nào, cột nào và kiểu dử liệu là gì)
 
Thì a hãy giả lập dữ liệu đi
chắc a ndu... làm được
chứ e chưa nghĩ ra
Làm thì được, nhưng ngán nhất cái cảnh khi người ta làm xong, tác giã lại bảo rằng: "Không được anh ơi, em đưa công thức vào file nó bị lổi #VALUE!"
Lý do là:
- Do chỉ nghe nói nên cách hiểu của tôi có thể khác với những gì bạn muốn
- Dử liệu giã lập của tôi có thể khác với vị trí dử liệu hiện tại của bạn
vân vân và vân vân...
Ẹc... Ẹc... Cuối cùng là ---> Mất công!
 
Dear all,
--------
Vấn đề đang thảo luận đang xa dần chủ đề chính nên tạm thời em đóng đề tại lại. Đề tài sẽ có thể được mở trở lại vào một dịp khác, các vấn đề trao đổi không thuộc chủ đề, anh chị có thể tìm trên diễn đàn, nếu không có thì mở đề tài mới để không làm ảnh hưởng đến thành viên đang theo dõi.
Xin cảm ơn!

Bổ sung: Anh/chị chú ý không trả lời bài viết vi phạm nội quy!
 
Status
Không mở trả lời sau này.

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

Back
Top Bottom