سام تعداد زیادی آدرس در یک کاربرگ دارد. در آن آدرسها، او باید مطمئن شود که تمام جهتهای قطبنما (NE، SE، NW و SW) همه بزرگ هستند. بسیار مفید خواهد بود اگر سام بفهمد که چگونه میتواند هر یک از این جهتهای کوچک (یا حروف مختلط) را که فقط در انتهای یک سلول با حروف بزرگ آنها ظاهر میشوند، تغییر دهد. او نمی تواند فقط به دنبال فضایی به دنبال "ne" باشد، زیرا این امر باعث تغییر نیوتن به نیوتن می شود، بنابراین او متعجب است که چگونه می تواند مطمئن شود که جایگزینی تنها زمانی رخ می دهد که حروف در انتهای یک سلول ظاهر شوند.
هیچ راهی برای انجام این کار با استفاده از ابزارهای Find and Replace در اکسل وجود ندارد. این بدان معناست که برای انجام کار باید از یک فرمول یا یک ماکرو استفاده کنید. از فرمول ها می توان برای اطمینان از بزرگ بودن دو کاراکتر آخر یک سلول استفاده کرد:
=LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2))
اما مشکل چنین فرمولی عدم تبعیض است. تا زمانی که هر سلولی که روی آن استفاده می شود دارای جهت قطب نما مانند دو کاراکتر آخر آن باشد، مشکلی وجود ندارد. اما اگر برخی از سلول ها جهت قطب نما را نداشته باشند، به سرعت با مشکل مواجه می شوید. در این صورت باید فرمول آخرین کاراکترها را بررسی کنید:
=IF(RIGHT(A1,3)=" ne", LEFT(A1,LEN(A1)-2) & "NE",
IF(RIGHT(A1,3)=" se", LEFT(A1,LEN(A1)-2) & "SE",
IF(RIGHT(A1,3)=" nw", LEFT(A1,LEN(A1)-2) & "NW",
IF(RIGHT(A1,3)=" sw", LEFT(A1,LEN(A1)-2) & "SW", A1))))
این فرمول سه کاراکتر آخر را بررسی میکند تا ببیند آیا فضایی به دنبال آنها، ne، se، nw یا sw وجود دارد. اگر اینطور باشد، آن دو کاراکتر آخر با حروف بزرگ ساخته می شوند. اگر به روشی متفاوت به آن نگاه کنید، فرمول را می توان کوتاه کرد:
=IF(OR(RIGHT(A1,3)=" ne", RIGHT(A1,3)=" se", RIGHT(A1,3)=" nw",
RIGHT(A1,3)=" sw"), LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2)), A1)
با استفاده از آرایه ای از جهت های قطب نما در فرمول می توانید آن را حتی بیشتر کوتاه کنید:
=IF(OR(RIGHT(A1,3)={" ne"," se"," sw"," nw"}),
LEFT(A1,LEN(A1)-2) & UPPER(RIGHT(A1,2)), A1)
اگر ترجیح می دهید از فرمول استفاده نکنید، می توانید به راحتی یک ماکرو ایجاد کنید که بررسی و تبدیل را برای شما انجام دهد:
Sub CapDirections()
For Each RCell In Selection
CText = UCase(Right(RCell.Value, 3))
If CText = " NE" Or CText = " SE" _
Or CText = " SW" Or CText = " NW" Then
RCell.Value = Left(RCell.Value, _
Len(RCell.Value) - 3) + CText
End If
Next
End Sub
برای استفاده از ماکرو کافیست سلول های حاوی آدرس ها را انتخاب کرده و سپس آن را اجرا کنید. بررسی می کند که آیا یکی از چهار نقطه قطب نما در انتهای مقدار سلول قرار دارد یا خیر، و اگر اینطور است، مطمئن می شود که جهت قطب نما بزرگ است.
باید توجه داشته باشید که این راه حل ها بر اساس وجود چهار جهت قطب نمای ممکن در آدرس های شما هستند. اگر آدرسهای شما جهتهای قطبنمای وسیعتری دارند (مانند N یا SSE)، قطعاً میخواهید از یک راهحل مبتنی بر کلان استفاده کنید زیرا بررسی سریع برای یک فرمول بسیار پیچیده میشود.