هنگامی که مایکل عملیات «یافتن همه» را در اکسل انجام می دهد، برنامه فهرستی از تمام سلول ها را نشان می دهد که حاوی هر چیزی است که او جستجو می کند. مایکل می خواهد آن فهرست آدرس های سلول را در کاربرگ دیگری کپی کند، بنابراین فکر می کند آیا راهی برای کپی کردن لیست در کلیپ بورد وجود دارد تا بتواند آن را در یک کاربرگ جایگذاری کند.
چند راه برای انجام این کار وجود دارد و بیشتر آنها شامل استفاده از ماکروها هستند. با این حال، قبل از رسیدن به رویکردهای مبتنی بر کلان، اجازه دهید به روشی که می توانید با استفاده از محدوده های نام گذاری شده و Name Manager به آدرس ها دسترسی پیدا کنید، نگاهی بیندازیم:

شکل 1. کادر محاوره ای Name Manager.
- مانند قبل از FindAll استفاده کنید، اما کادر گفتگوی Find and Replace را نبندید.
- در لیست آدرس هایی که نشان داده شده اید، به پایین بروید، کلید Shift را نگه دارید و روی آخرین مطابقت کلیک کنید. اکسل تمام سلول های منطبق را انتخاب می کند.
- برای بستن کادر گفتگوی Find and Replace، Esc را فشار دهید . سلول های منطبق هنوز همگی انتخاب شده اند.
- نامی را در کادر نام (در سمت چپ نوار فرمول و درست بالای سلول A1) تایپ کنید. این یک محدوده با نام ایجاد می کند که از تمام سلول های انتخاب شده تشکیل شده است.
- تب Formulas روبان را نمایش دهید.
- روی ابزار Name Manger کلیک کنید. اکسل کادر محاوره ای Name Managers را نمایش می دهد. (شکل 1 را ببینید.)
- روی نامی که در مرحله 4 ایجاد کردید کلیک کنید.
- لیست سلول ها در کادر Refers To در پایین کادر محاوره ای قرار خواهد گرفت.
در این مرحله می توانید اطلاعات موجود در کادر Refers To را کپی کرده و در هر چیزی که می خواهید (از جمله کاربرگ دیگر) قرار دهید. پس از چسباندن، باید داده ها را کمی ماساژ دهید، زیرا لیست دقیقاً همین است - یک لیست سریالی از آدرس های سلولی.
بدیهی است که این کار بر ورک بوک شما تأثیر می گذارد، زیرا محدوده ای با نام ایجاد می کند. اگر چندین بار این کار را انجام دهید، چندین محدوده با نام ایجاد خواهید کرد. البته اگر بخواهید این کار را اغلب انجام دهید، می تواند به سرعت دشوار شود. اینجاست که راه حل های کلان وارد عمل می شوند. در زیر نمونه ای از یک ماکرو است که یک مقدار خاص را جستجو می کند و سپس آدرس هر سلول حاوی آن مقدار را در کاربرگ دیگری قرار می دهد.
Sub CellAdressList()
Dim c1 As String
Dim nxt As String
Sheets("Sheet1").Select
Range("A1").Select
Cells.Find(What:="qrs", After:=ActiveCell, _
LookIn:=xlValues, LookAt:=xlWhole, _
SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
c1 = ActiveCell.Address
Sheets("Sheet2").Select
Range("A1").Select
Range("A1").Value = c1
Do Until nxt = c1
Sheets("Sheet1").Select
Cells.FindNext(After:=ActiveCell).Activate
nxt = ActiveCell.Address
Sheets("Sheet2").Select
ActiveCell.Offset(1, 0).Select
ActiveCell.Value = nxt
Loop
ActiveCell.Value = ""
End Sub
کلان چند فرض را مطرح می کند. ابتدا فرض می شود که شما در حال جستجوی اطلاعات در کاربرگ به نام Sheet1 هستید. دوم، فرض می کند که می خواهید لیستی از آدرس ها را در کاربرگ به نام Sheet2 قرار دهید. در نهایت، فرض می کند که مقدار "qrs" را در Sheet1 جستجو می کنید. در صورت تمایل می توان تمامی این عناصر ماکرو را تغییر داد.
برای چیزی که کمی انعطاف پذیرتر است، ماکرو زیر را در نظر بگیرید. فرض بر این است که شما قبلاً تمام سلول هایی را که حاوی مقدار مورد نظر شما هستند انتخاب کرده اید. (به عبارت دیگر، شما باید مراحل 1 تا 3 از مراحل را نزدیک ابتدای این نکته انجام دهید.) سپس می توانید ماکرو را اجرا کنید.
Sub CopyFindAllSelection()
Dim outcell As Range
Dim c As Range
Set outcell = Range("Sheet2!A1")
For Each c In Selection
outcell.Value = c.Address
Set outcell = outcell.Offset(1, 0)
Next
End Sub
نتیجه این است که آدرس سلول های انتخاب شده در کاربرگ Sheet2 قرار می گیرد. این ماکرو کمی انعطاف پذیرتر است زیرا به شما امکان می دهد هر چیزی را در هر کاربرگ پیدا کنید. تنها بخش "هارد کد شده" کاربرگ (Sheet2) است که آدرس ها در آن قرار می گیرند.