ثور به این فکر می کند که آیا راهی برای انجام جستجو بدون نیاز به تعیین ستون یا سطر و داشتن نتیجه آدرس سلولی که مقدار در آن یافت می شود وجود دارد. به عنوان مثال، او می خواهد یک مقدار (مانند 345 یا «متن من») را جستجو کند و تابع تمام سلول های همه کاربرگ های ورک بوک را جستجو کند و آدرس کامل سلولی را که مقدار در آن پیدا شده است برگرداند.
رویکردی که استفاده می کنید با محدوده ای که می خواهید جستجو کنید تعیین می شود. اگر می خواهید در همان کاربرگی که می خواهید پاسخ در آن نمایش داده شود، جستجو کنید، می توانید از فرمولی مانند شکل زیر استفاده کنید:
=ADDRESS(MAX(ROW(1:5)*(A1:E5="my text")),
MAX(COLUMN(A1:E1)*(A1:E5="my text")),4)
اگر از اکسل 2019، اکسل 2021 یا نسخه اکسل ارائه شده با مایکروسافت 365 استفاده نمی کنید، باید به عنوان یک فرمول آرایه وارد شود ( Ctrl+Shift+Enter را فشار دهید). (اگر از یکی از آن نسخه ها استفاده می کنید، کافیست وارد کنید فرمول به طور معمول.) فقط در محدوده A1:E5 جستجو می کند. در صورت تمایل می توانید با تنظیم مناسب فرمول، محدوده را تغییر دهید.
یک منطقه جستجوی بزرگتر، نگاه کردن به یک کاربرگ کامل است. هنوز هم می توان با استفاده از فرمولی مانند زیر این کار را انجام داد:
=ADDRESS(MAX(ROW(Sheet1!1:1048576)*(IF(Sheet1!1:1048576=$A$1,1,0))),
MAX(COLUMN(Sheet1!$1:$1048576)*IF(Sheet1!1:1048576=$A$1,1,0)))
فرمول فرض می کند که آنچه شما به دنبال آن هستید در سلول A1 ذخیره می شود. شما باید نام Sheet1 را به نام هر صفحه کاری که می خواهید جستجو کنید تغییر دهید. مجدداً، اگر از اکسل 2019، اکسل 2021 یا نسخه اکسل با مایکروسافت 365 استفاده می کنید، می توانید این را به عنوان یک فرمول معمولی وارد کنید. اگر از نسخه قدیمی اکسل استفاده می کنید، باید آن را به عنوان فرمول آرایه با فشار دادن Ctrl+Shift+Enter وارد کنید .
اگر می خواهید محدوده وسیع تری را جستجو کنید، مانند همه کاربرگ های یک ورک بوک، بهترین راه حل استفاده از یک ماکرو است که تابع Find را در اکسل فراخوانی می کند.
Function FindAddr(vValue As Variant)
Dim wks As Worksheet
Dim rCell As Range
Dim bFound As Boolean
bFound = False
For Each wks In ActiveWorkbook.Worksheets
With wks
Set rCell = .Cells.Find _
(What:=vValue, After:=.Cells(1), _
LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, _
SearchDirection:=xlNext, _
MatchCase:=False)
If Not rCell Is Nothing Then
bFound = True
Exit For
End If
End With
Next
If bFound Then
FindAddr = wks.Name & "!" & _
rCell.Address(False, False)
Else
FindAddr = "Not Found"
End If
Set wks = Nothing
Set rCell = Nothing
End Function
این تابع به گونه ای طراحی شده است که از ماکرو دیگری فراخوانی شود، که هر آنچه را که باید در پارامتر vValue جستجو شود، ارسال می کند. این تابع یا آدرس کامل (شامل نام کاربرگ) اولین تطابق را برمی گرداند، یا اگر مطابقت وجود نداشته باشد، «Not Found» را برمی گرداند.