Đăng ký học Excel - PivotTable 3 buổi tối (31/7, 2 và 4/8) - TPHCM

Thủ thuật DefineName cho macro 4

Thảo luận trong 'Macro4.0 và Dialog Sheet 5.0' bắt đầu bởi anhtuan1066, 18 Tháng một 2008.

  1. anhtuan1066

    anhtuan1066 Thành viên gạo cội

    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
     

    Các file đính kèm:

  2. salam

    salam Thành viên gắn bó

    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.
     
  3. anhtuan1066

    anhtuan1066 Thành viên gạo cội

    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
     
  4. tigertiger

    tigertiger being bored with EPG

    + 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
     
  5. anhtuan1066

    anhtuan1066 Thành viên gạo cội

    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
     
  6. dphi_long60

    dphi_long60 Thành viên mới

    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.
     
  7. salam

    salam Thành viên gắn bó

    Cái này trên diễn đàn có rồi bạn tìm lại xem.

    Tải Macro4
     
  8. sumisumo

    sumisumo Thành viên mới

    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"
     
  9. ndu96081631

    ndu96081631 Ăn cùng GPE, Ở cùng GPE, Sống cùng GPE Staff Member Super Moderator

    Có phải cài gì đâu bạn! Máy nào mà chẳng có
     
  10. PhanTuHuong

    PhanTuHuong Excel & AutoCad & VBA

    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.
     
  11. thumper

    thumper Thành viên mới

    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
     
  12. congduong

    congduong Thành viên mới

    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???
     

Chia sẻ trang này