مل اغلب می خواهد یک کاراکتر را به ابتدای هر چیزی که در محدوده ای از سلول ها است، از قبل معطوف کند. به عنوان مثال، ممکن است بخواهد یک حرف به ابتدای متن اضافه کند (بنابراین «123» به «A123» و «xyz» به «Axyz» می شود) یا ممکن است بخواهد یک آپستروف اضافه کند (بنابراین «123» به «123» می شود. " و "xyz" به "xyz" تبدیل می شود). مل نمی داند که آیا می توان این کار را با استفاده از Find and Replace انجام داد.
پاسخ کوتاه این است که نمی تواند. قابلیت های Find and Replace در اکسل نسبت به Word محدودتر است، جایی که شما می توانید برای جستجوی عبارات و استفاده از متن "Find What" در چیزی که جایگزین شده است، استفاده کنید. (اینها فقط دو نمونه از قابلیت هایی هستند که در Excels Find and Replace وجود ندارند.)
پس یک پاسخ احتمالی این است که داده های خود را در Word کپی کنید، از Find and Replace برای ایجاد تغییرات استفاده کنید و سپس داده ها را دوباره کپی کنید. البته، خطر از دست دادن قالب بندی خود در سفر رفت و برگشت، از دست دادن مقداری دقت و تبدیل تمام نتایج فرمول خود به مقادیر ثابت را دارید. برای بسیاری از کاربران، این خطرات قابل قبول نیستند.
گزینه دیگر استفاده از قابلیت های الحاق اکسل است. برای مثال، اگر مقادیری که می خواهید از قبل در ستون A قرار بگیرند (با A1 شروع می شوند)، از فرمولی مانند ستون B استفاده می کنید:
="A" & A1
نتیجه حرف A را از قبل به هر چیزی که در A1 است تعلیق می کند. این برای هر چیزی که از قبل در انتظار است به جز آپستروف کار می کند. تلاش برای پیش انتقال آپاستروف به 123 یا xyz ختم می شود، اما آپوستروف در سلول قابل مشاهده است. نتیجه در اکسل مانند تایپ یک آپاستروف به دنبال 123 یا یک آپاستروف به دنبال xyz نیست. (در مورد تایپ، آپوستروف نشان می دهد که محتوای سلول باید به عنوان متن در نظر گرفته شود و آپوستروف فقط در نوار فرمول قابل مشاهده است، نه در خود سلول.)
اگر واقعاً می خواهید مقادیر یک سری از سلول ها را تغییر دهید (که تمایل به استفاده از Find and Replace نشان می دهد)، پس تنها کاری که می توانید انجام دهید استفاده از یک ماکرو برای ایجاد تغییرات است. اگر فقط می خواهید سلول هایی را که با یک مقدار تنظیم شده (مانند 123) با یک حرف (مثل A) شروع می شوند، از قبل آماده کنید، یک ماکرو ساده کافی است.
Sub Prepend1()
ToFind = "123"
ToFindLength=Len(ToFind)
ToPrepend = "A"
For Each rcell In Selection
If LCase(Mid(rcell.Value, 1, ToFindLength)) = LCase(ToFind) Then
rcell.Value = ToPrepend & rcell.Value
End If
Next
End Sub
توجه داشته باشید که متغیر ToFind حاوی متن آغازینی است که می خواهید از قبل به آن بپیوندید و متغیر ToPrepend حاوی چیزی است که می خواهید قبل از آن رشته ظاهر شود. در این مثال، هنگامی که محدوده ای از سلول ها را انتخاب می کنید و ماکرو را اجرا می کنید، هر چیزی که با 123 شروع می شود (مانند "123" یا "12345" یا "123D27X") حرف A را به جلوی سلول اضافه می کند.
با این حال، وقتی می خواهید حرف را به جلوی هر سلول در محدوده اضافه کنید، چنین ماکرویی کمکی نمی کند. در این صورت شما به رویکرد متفاوتی نیاز دارید.
Sub Prepend2()
Dim rng As Range
Dim c As Range
Dim ToPrepend As String
ToPrepend = "A"
Process only text and number constants
Set rng = Selection.SpecialCells(xlCellTypeConstants, 3)
For Each c In rng
c.Value = ToPrepend & c.Value
Next c
End Sub
این ماکرو زیرمجموعه ای از سلول هایی را که قبل از اجرای آن انتخاب کرده اید (فقط سلول هایی حاوی متن و مقادیر عددی) می گیرد و سپس محتویات متغیر ToPrepend را به ابتدای سلول اضافه می کند. اگر می خواهید آنچه را که از قبل معلق است تغییر دهید، به سادگی مقدار متغیر را تغییر دهید. (لازم به ذکر است که اگر ToPrepend را به آپوستروف تغییر دهید، سلول هایی که آپوستروف از قبل به آنها تعلیق شده است دقیقاً به گونه ای رفتار می کنند که گویی تایپ کرده اید و پس از آن مقدار سلول آپوستروف می شود.)