PDA

View Full Version : Cách đặt name động



trantuonganh2008
12-12-09, 09:21 PM
Mình thấy cách đặt name động khá hay, không dùng công thức nhiều nhưng mình không hiểu nhiều lắm, nhờ các bạn chỉ giúp mình. Cám ơn nhiều!!!

VD: Mình có 1 công thức, công thức này hoàn toàn giống đ/v các sheet khác nhưng tất nhiên là khác tên sheet. Mình đặt name tĩnh nên khá mất nhiều thời gian và name thì rất nhiều, giờ chỉ có cách là dùng name động thôi.

Ý mình muốn là:
Giả sử: mình có 1 workbook gồm 3 sheet. Tại C1 của sheet1 = A1+B1, C1 của sheet2 = A1+B1 & sheet3 cũng vậy. Mình muốn đặt 1 name động áp dụng chung cho cả 3 sheet này luôn thì làm thế nào? Chẳng lẻ vào từng sheet đặt mỗi tên name khác nhau à? Mình nghĩ làm như vậy có được không? Nhờ các bạn chỉ giúp!!!

ndu96081631
13-12-09, 06:16 AM
Nhờ các cao thủ ra tay giúp mình vấn đề này. Cám ơn nhiều!!!
Cách làm như sau: (theo ví dụ của bạn)
- Trước tiên hãy lưu file (nếu là file mới chưa lưu)
- Đặt name lấy tên sheet hiện hành:

=RIGHT(CELL("filename",INDIRECT("A1")),LEN(CELL("filename",INDIRECT("A1")))-FIND("]",CELL("filename",INDIRECT("A1")),1))- Công thức =A1+B1 sẽ được thể hiện trong name KQ như sau:

=INDIRECT("'"&Sh&"'!$A$1")+INDIRECT("'"&Sh&"'!$B$1")Bây giờ bạn gõ số ngẩu nhiên vào cell A1 và B1 trên tất cả các sheet rồi gõ công thức =KQ trên từng sheet xem sao
----------------------
Ngoài ra còn 1 cách đơn giản khác, chỉ dùng 1 name (cho riêng bài này)

KQ = EVALUATE("A1+B1")
Xem file

trantuonganh2008
13-12-09, 07:33 AM
Cám ơn bác. Mình thấy cách 2 đơn giản quá mà vẫn đáp ứng yêu cầu. Vậy bác cho mình hỏi là cách 1 & 2 khác nhau chỗ nào. Bác có thể giải thích công thức C1 giúp mình được không?

ndu96081631
13-12-09, 08:12 AM
Cám ơn bác. Mình thấy cách 2 đơn giản quá mà vẫn đáp ứng yêu cầu. Vậy bác cho mình hỏi là cách 1 & 2 khác nhau chỗ nào. Bác có thể giải thích công thức C1 giúp mình được không?
Cà 2 cách cũng gần giống (tùy tình hình mà xài)
Tuy nhiên đấy chỉ là ví dụ đơn giản, nếu bạn muốn làm công thức để có thể fill được thì phải sửa lại... Ví dụ tại C1 bạn gõ =KQ thì nó hiểu rằng sẽ tính cho dòng 1.. khi bạn fill xuống C2, C3 thì nó phải hiểu rằng công thức này tính cho dòng 2 và 3
Đăt con trỏ chuột tại dòng 1 rồi bấm Ctrl + F3, sửa lại name KQ thành:

=EVALUATE("A" & ROW() &"+B" & ROW())Gõ số gì đó tại A2 và B2 rồi kéo fill công thức xuống xem!

trantuonganh2008
13-12-09, 08:31 AM
Mình đưa bác công thức hơi đơn giản, mình định áp dụng cho công thức bên dưới nhưng không biết xoay sở thế nào. Vậy bác phải xử lý công thức bên dưới thế nào vậy bác? Nó cũng fill từ dòng BP8 xuống dưới luôn.
BP8 = IF(OR(BE8-BF8<=0,BG8=0),0,BG8/BA8*AZ8*MIN((BE8-BF8)*0.5,3.5))+IF(OR(BE8-BH8<=0,BI8=0),0,BI8/BA8*AZ8*MIN((BE8-BH8)*0.5,3.5))
À, hình như cách đặt name cũng có chiều dài giới hạn phải không? Nếu dài quá nó không cho thêm nữa.

ndu96081631
13-12-09, 12:29 PM
Mình đưa bác công thức hơi đơn giản, mình định áp dụng cho công thức bên dưới nhưng không biết xoay sở thế nào. Vậy bác phải xử lý công thức bên dưới thế nào vậy bác? Nó cũng fill từ dòng BP8 xuống dưới luôn.
BP8 = IF(OR(BE8-BF8<=0,BG8=0),0,BG8/BA8*AZ8*MIN((BE8-BF8)*0.5,3.5))+IF(OR(BE8-BH8<=0,BI8=0),0,BI8/BA8*AZ8*MIN((BE8-BH8)*0.5,3.5))
À, hình như cách đặt name cũng có chiều dài giới hạn phải không? Nếu dài quá nó không cho thêm nữa.
Thì vầy:
- Đặt con trỏ tại dòng 8 rồi vào Define name, đặt 1 name tên là iR, Refer to = Row()
- Đưa công thức của bạn vào Evaluate, trong đó chổ nào là số 8 thì sửa thành iR

=EVALUATE("IF(OR(BE"&iR&"-BF"&iR&"<=0,BG"&iR&"=0),0,BG"&iR&"/BA"&iR&"*AZ"&iR&"*MIN((BE"&iR&"-BF"&iR&")*0.5,3.5))+IF(OR(BE"&iR&"-BH"&iR&"<=0,BI"&iR&"=0),0,BI"&iR&"/BA"&iR&"*AZ"&iR&"*MIN((BE"&iR&"-BH"&iR&")*0.5,3.5))")

trantuonganh2008
13-12-09, 03:30 PM
Cám ơn bác ndu nhiều. Vậy trong name define nó cũng có giới hạn ký tự phải không bác. Nếu công thức quá dài nó không cho đặt name? Trong trường hợp này đành phải cắt bới & đặt thành 2 name?

Hoàng Trọng Nghĩa
13-12-09, 07:06 PM
Cà 2 cách cũng gần giống (tùy tình hình mà xài)
Tuy nhiên đấy chỉ là ví dụ đơn giản, nếu bạn muốn làm công thức để có thể fill được thì phải sửa lại... Ví dụ tại C1 bạn gõ =KQ thì nó hiểu rằng sẽ tính cho dòng 1.. khi bạn fill xuống C2, C3 thì nó phải hiểu rằng công thức này tính cho dòng 2 và 3
Đăt con trỏ chuột tại dòng 1 rồi bấm Ctrl + F3, sửa lại name KQ thành:

=EVALUATE("A" & ROW() &"+B" & ROW())Gõ số gì đó tại A2 và B2 rồi kéo fill công thức xuống xem!

Tại sao em tải File của Thầy về và Fill thì thấy hiện tượng là không tính toán (y chang trường hợp chọn Calculation là Manual vậy, nhưng máy em dĩ nhiên là Automatic). Đặt con trỏ vào đó, nhấp 1 cái nó mới tính KQ!!!!???
http://www.giaiphapexcel.com/forum/attachment.php?attachmentid=38665&stc=1&d=1260707244

Hoàng Trọng Nghĩa
13-12-09, 07:07 PM
Cám ơn bác ndu nhiều. Vậy trong name define nó cũng có giới hạn ký tự phải không bác. Nếu công thức quá dài nó không cho đặt name? Trong trường hợp này đành phải cắt bới & đặt thành 2 name?

Dĩ nhiên trường hợp của bạn là nên đặt nhiều Name nó sẽ linh hoạt hơn và người ta thường làm như vậy đấy!

ndu96081631
14-12-09, 08:48 AM
Tại sao em tải File của Thầy về và Fill thì thấy hiện tượng là không tính toán (y chang trường hợp chọn Calculation là Manual vậy, nhưng máy em dĩ nhiên là Automatic). Đặt con trỏ vào đó, nhấp 1 cái nó mới tính KQ!!!!???

Trong trường hợp bạn kiểm tra thấy kết quả không tự cập nhật thì hãy cộng thêm NOW()*0 vào name
Ví dụ:

KQ =EVALUATE("A" & ROW() &"+B" & ROW())+NOW()*0

yeuthamhangxom
14-12-09, 08:50 AM
Vấn đề name động rất hay các anh chị có tài liệu nào viết về vấn đề này gửi lên cho em và mọi người tham khảo với.
Cám ơn các anh chị nhiều.

ndu96081631
14-12-09, 09:13 AM
Vấn đề name động rất hay các anh chị có tài liệu nào viết về vấn đề này gửi lên cho em và mọi người tham khảo với.
Cám ơn các anh chị nhiều.
Hầu hết các bài viết có liên quan đến "TRÍCH LỌC" người ta đều dùng Name động đấy! Bạn tải về mà tham khảo nhé

tazu_1984
02-01-10, 10:54 AM
cảm ơn bác vì điều này qua hay.
nhưng làm thể nào để tạo được hàm KQ vậy bác? vào đâu thì tạo được như vậy? bác hướng dẫn em với
cảm ơn bác nhiều

MinhCong
02-01-10, 11:00 AM
cảm ơn bác vì điều này qua hay.
nhưng làm thể nào để tạo được hàm KQ vậy bác? vào đâu thì tạo được như vậy? bác hướng dẫn em với
cảm ơn bác nhiều
Insert name -> Define . Trong names in workbook đặt KQ. Trong Refers to đặt công thức

congthanh6868
09-09-12, 06:46 AM
Trường hợp của mình thì đặt name động có được không, mong các bạn giúp đỡ.
Trong file đính kèm mình muốn đặt name động cho các cột H, J, K. Mỗi cột lấy giá trị từ 8:39607 và được chia làm 4:
- 8:9900
- 9901: 19800
- 19801: 29700
- 29701: 39607

Mục đích của mình muốn đặt name để dùng hàm Countifs thay cho hàm Sumproduct.

Mong nhận được sự giúp đỡ của các bạn.