Thủ thuật DefineName cho macro 4

Liên hệ QC

anhtuan1066

Thành viên gạo cội
Tham gia
10/3/07
Bài viết
5,802
Được thích
6,905
Chắc các bạn còn nhớ việc dùng XL4 Command đễ tính ColorIndex mà có lần bạn ttphong2007 đã ra đề thách đố... Và cũng lần ấy, tôi có thắc mắc về việc sử dụng nó như thế nào cho uyễn chuyễn... Làm sao cho ai cũng dùng dc dễ dàng và ko gây lỗi khi di dời công thức hoặc tham chiếu đi nơi khác
Tình cơ tôi sưu tầm dc 1 file nói về kỹ thuật tạo name cho XL4 command... Tôi rất kinh ngạc về khá năng tùy biến cao đến như vậy! Tóm lại họ đã tạo cho name có 1 khả năng tùy biến tham chiếu giống như 1 Function: Gọi hàm, xác định cell tham chiếu và.. enter...
Các bạn hãy theo dõi cách làm nhé:
Bước 1: Thiết lập tham chiếu động
Mã:
GetRow0 =ROW(!$A$1)
GetRow    =MID(GET.NAME("GetRow0"),2,FIND("(",GET.NAME("GetRow0"))-1)
GetRC =SUBSTITUTE(REFTEXT(!$A$1),1,"")
VT =GET.CELL(6,INDIRECT(GetRC,FALSE))
Myref =MID(VT,FIND(GetRow,VT)+4,FIND(")",VT)-FIND(GetRow,VT)-4)
Quan trọng nhất là name cuối cùng "Tham chiếu cũa tôi" (Myref)... Sau này ta sẽ dùng nó trong hầu hết các công thức...
Các bạn cũng đừng vội tìm hiểu ý nghĩa các name này... Ta sẽ bàn nó trong 1 dịp khác, cứ "thuộc lòng" và copy nó cho vào máy tính trước đi nhé
Bước 2: Thiết lập name tính toán
Ví dụ muốn lấy ColorIndex cũa 1 cell, ta có hàm GET.CELL(63,Cell cần tính)... Bây giờ sẽ dc thay thế bằng 1 name
Mã:
CellColor =GET.CELL(63,INDIRECT(Myref))+0*NOW()
(việc thêm 0*NOW() vào ko làm thay đỗi kết quã, chỉ là giúp cho nó cập nhật sự thay đổi khi bấm F9 mà thôi), và chổ nào mà tham chiếu là 1 cell thì dc thay bằng INDIRECT(Myref)
Giờ thì thực hiện công thức trong bãng tính:
Mã:
 =IF(ROW(Cell cần tính),Name)
Giã sử cần lấy ColorIndex tại A1, tôi sẽ có công thức:
Mã:
 =IF(ROW(A1),CellColor)
Và đây cũng chính là cú pháp chung cho tất cã
Áp dụng:
Tôi cần tính giá trị của 1 dãi các phép toán có trong 1 cell đang dc định dạng text... Ví dụ cell A1 có dạng: 5*4-6+3
Tôi sẽ đặt name:
Mã:
Calc=EVALUATE(INDIRECT(Myref))
Và công thức trong bãng tính là:
Mã:
=IF(ROW(A1),Calc)
Kết luận: Việc đặt name cực chỉ 1 lần nhưng việc sử dụng thì vô cùng uyễn chuyễn... Tất cả gói gọn trong 1 cú pháp: IF(ROW(tham chiếu),Name)
Các bạn có cãm giác là nó quá nhẹ nhàng và việc sử dụng giống y như 1 Function ko?
Hãy xem file đính kèm và tham khảo thêm nhiều trò vui khác trong này!
Lưu ý khi mở file: Rất có thể các bạn nhận dc thông báo nói rằng trong file có chưa macro 4, xin yên tâm và cứ YES, vì trong file bảo đãm ko có virus (bấm NO nó sẽ ko chạy)
Mến
ANH TUẤN
 

File đính kèm

  • XL4_DefineName.zip
    3.1 KB · Đọc: 2,841
Bác cho em hỏi ngoài lề một chút. Có phải ta dùng hàm Macro xl4 có vẻ như chạy chầm chậm sao ấy phải không Bác.
 
Oh... sao lại chậm nhỉ? Cùng lắm nó cũng chỉ là 1 name bình thường thôi mà... Nếu có chăng là do kỹ thuật xử lý name cũa ta chưa khéo mà thôi... Thường file sẽ chậm nếu dùng mãng... còn cái này thì đâu phải
ANH TUẤN
 
anhtuan1066 đã viết:
Oh... sao lại chậm nhỉ? Cùng lắm nó cũng chỉ là 1 name bình thường thôi mà... Nếu có chăng là do kỹ thuật xử lý name cũa ta chưa khéo mà thôi... Thường file sẽ chậm nếu dùng mãng... còn cái này thì đâu phải
ANH TUẤN

+ Nếu so cùng Name bình thường thì có chậm đi -> atuan ah, vì nó phải sd các hàm các thuộc tính của chính đối tượng trong cell - nhưng chắc là k đáng kể - với Dl nhỏ

Oh,

+ Đang định viết bài tổng hợp về name (có phần đề cập XL4), đang dở dang,anhtuan viết chi tiết thêm đi - hôm sau gộp bài vào cùng cho nó hay nhé, cám ơn anhtuan
 
Oh... mấy cái name tôi đưa lên chỉ là do tôi sưu tầm dc.. Chứ nói thật tôi ko hiểu 1 tí nào về nó cã... Có điều là sau khi đặt dc 5 name đầu tiên ta có thể tùy biến tham chiếu rất dễ dàng, kể cã cho những công thức bình thường chứ ko riêng gì đối với XL4... (chẳng hạn DEM = COUNTIF(Range, INDIRECT(Myref))... rồi: IF(ROW(cell),DEM) )
Đáng tiếc là nó ko làm việc dc với mãng....
ANH TUẤN
 
Cái vụ macro4 này có vẻ rất thú vị, các cao thủ có giáo trình về chuyên đề macro4 chia xẻ cho anh em GPE tham khảo với. Mình thấy nó rất hay và có thể bổ khuyết cho VBA nhiều ứng dụng.
 
Cái vụ macro4 này cài làm sao ah? chỉ em với, xem hay quá mà không biết cách cài. Anh/ Chị chỉ thêm dùm em cách giải nén tập tin ".ZIP"
 
Không hiểu mấy cái macro 4 này có bị BKAV xơi tái không, tôi không dám dùng vì trông nó cứ "giông giống" mấy con virus macro 4 í, sợ bị hiểu lầm.
 
Em chưa biết cách sử dụng file này của pác...Pác hướng dẫn em với. Em muốn đếm số ô màu hiện có trên 1 dòng của file của em.
Em down file của pác về rồi, nhưng để nó chạy trên file của em thì em phải làm thế nào ạ.
Em dân mới dùng excel mong pác hướng dẫn
 
Các cao thủ cho mình hỏi 1 vấn đề về "đếm các ô được tô màu trong excel" không ạ?
Khi1 ô được tự động tô màu bẳng "Conditional Formatting" thì macro4 GET.CELL không hiểu màu đó. Xin các cao thủ như bác Phong, bác Anh Tuấn, bác ndu96081631 khắc phục dùm với???
 
Web KT
Back
Top Bottom