Dùng công thức gì để trả về địa chỉ của một ô, mà lại có thể dùng làm tham chiếu?

  • Thread starter Thread starter BNTT
  • Ngày gửi Ngày gửi
Liên hệ QC
Đưa vào Name cũng là một ý hay, nhưng phải đặt Name cho khối dữ liệu (DATA) lẫn cái ô chứa giá trị cần tìm (TIM) luôn thì mới được:

=ADDRESS(MAX(IF(DATA=TIM,ROW(DATA),"")),MAX(IF(DATA=TIM,COLUMN(DATA),"")))}

Đúng là các cao thủ về công thức.

Tuy nhiên nhìn công thức cũng sợ quá, nhiều và hơi . . rối.

Có lẽ làm 1 cái UDF thì gọn nhẹ hơn nhiều.
Chỉ việc :
PHP:
A1 = BNTT()
Thế là xong!
 
Đúng là các cao thủ về công thức.

Tuy nhiên nhìn công thức cũng sợ quá, nhiều và hơi . . rối.

Có lẽ làm 1 cái UDF thì gọn nhẹ hơn nhiều.
Chỉ việc :
PHP:
A1 = BNTT()
Thế là xong!
Làm UDF hay làm công thức, đều có cái được cái mất của nó thôi...

Làm công thức thì dài dòng, nhưng được cái ai cũng xài thoải mái, nhất là mấy cái file *.xlsx của Excel2007, đâu có cho phép sử dụng UDF, nếu muốn thì phải xài lại *.xlsm.

Làm UDF thì nhanh, gọn, dễ nhớ. Tuy nhiên, để làm được cái UDF, không phải ai cũng có khả năng đó. Thêm nữa là, muốn xài thì phải có, nghĩa là phải có nó trong VBA hoặc Addin, mà vậy thì, ví dụ, ở nhà cúp điện, chạy ra tiệm net, có trời mới rảnh để ngồi viết lại môt cái UDF, đặng mà xài... hic hic. Trong khi nếu nắm được cách sử dụng công thức thì bất kỳ ở đâu cũng làm việc được. Thêm cái nữa, cứ cho là nhớ cấu trúc của cái UDF, thì thời gian để ngồi viết lại nó, mình nghĩ cũng chẳng ngắn hơn thời gian ngồi viết công thức đâu.
 
Thực ra nếu làm UDF thì cũng theo thuật toán ở trên: Quét vùng dử liệu để tìm ra vị trí cell cần tìm
Với UDF thì có thể bỏ qua công đoạn tìm DÒNG, CỘT ---> Xuất ra ADDRESS luôn, ví dụ như:
PHP:
Function DiaChi(Rng As Range, Cond As Variant) As String
   Dim Clls As Range
   For Each Clls In Rng
      If Clls = Cond Then DiaChi = Clls.Address: Exit Function
   Next
End Function
Tuy nhiên nhìn công thức cũng sợ quá, nhiều và hơi . . rối.
Tôi thấy cũng đâu có rối lắm! Nội dung chủ lực của nó chỉ là phần so sánh:
rồi lồng thêm IF, MAX (hoặc MIN) vào để lấy chỉ số dòng, cột ---> Đơn giãn lắm mà
Cần chú ý thêm: Nếu điều kiện tìm không phải là duy nhất thì dùng UDF sẽ cho kết quả chính xác hơn!
 
Lần chỉnh sửa cuối:
Hôm nay, cho tôi hỏi thêm một chuyện nữa.

Qua các bài trên, tôi đã biết cách dùng INDIRECT để chuyển một giá trị thành một tham chiếu. Nhưng đó mới chỉ là tham chiếu đến 1 ô đơn lẻ.

Bây giờ, ví dụ, tôi muốn dùng VLOOKUP để dò tìm trong một bảng XYZ, nhưng cái bảng XYZ này tôi chưa biết nó ở đâu. Tôi phải xác định cho được nó.

Giả sử, dùng hai lần INDIRECT, tôi đã xác định được hai ô đầu cuối của bảng dò XYZ là $A$1 và $B$10

Vậy dùng hàm gì để cho ra kết quả là: $A$1:$B$10 (là địa chỉ của XYZ)

Để có thể đưa vào trong công thức: =VLOOKUP(trị_dò, $A$1:$B$10, cột_dò) hay =VLOOKUP(trị_dò, XYZ, cột_dò) ?

Xin nói thêm, VLOOKUP chỉ là một ví dụ. Tôi cần cái tham chiếu của XYZ này để đưa vào nhiều công thức khác nữa.

Và xin lỗi trước, nếu câu hỏi nêu ra có vẻ ngớ ngẩn. Nhưng thật sự cho đến lúc này thì tôi chưa biết cách để làm.
 
Giả sử, dùng hai lần INDIRECT, tôi đã xác định được hai ô đầu cuối của bảng dò XYZ là $A$1 và $B$10
Một lần Indirect thôi:
=Indirect(hàm_1()&":"&hàm_2())
Hàm_1() là hàm cho kết quả chuỗi $A$1, là cái bên trong Indirect 1
hàm_2() là hàm cho kết quả chuỗi $B$10 là cái bên trong Indirect 2
 
Web KT

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

Back
Top Bottom