ایجاد سوال
dark_mode
0 دوستدار 0 امتیاز منفی
9 visibility
موضوع: آفیس توسط:

مانند بسیاری از افراد، کرک اطلاعات را در کاربرگ های اکسل کپی می کند که از مکان های دیگر سرچشمه می گیرند. اطلاعاتی که کرک معمولاً کپی می کند همه با حروف CAPS هستند، و او می خواهد آن ها را به چیزی تبدیل کند که اکسل از آن به عنوان "مورد مناسب" یاد می کند (فقط حرف اول هر کلمه بزرگ می شود). مشکل این است که تابع کاربرگ PROPER که تبدیل را انجام می دهد، به کلماتی که با حروف بزرگ نوشته شده است توجه نمی کند. بنابراین، کلماتی مانند a، an، in، و، the، و with همگی دارای سرپوش اولیه هستند. کرک نمی خواهد آن کلمات (و شاید برخی دیگر) با حروف بزرگ نوشته شوند.

راه های مختلفی برای حل این مشکل وجود دارد. یکی استفاده از یک فرمول نسبتا طولانی برای انجام تبدیل است:

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
SUBSTITUTE(SUBSTITUTE(PROPER($B$13);" A ";" a ");
" An ";" an ");" In ";" in ");" And ";" and ");
" The ";" the ");" With ";" with ")

به یاد داشته باشید، این همه یک فرمول واحد است. تبدیل حروف بزرگ را انجام می دهد، اما سپس کلمات کوچک مورد نظر (a، an، in، و، the، با) را جایگزین می کند. در حالی که این کار نسبتاً آسان است، با افزایش تعداد کلماتی که باید برای آنها جایگزین شود، کاربرد فرمول محدود می شود.

شاید یک رویکرد بهتر استفاده از یک ماکرو تابع تعریف شده توسط کاربر برای انجام تبدیل حروف برای شما باشد. تابع زیر برخی از کلمات متداول را که نباید حروف اولیه داشته باشند بررسی می کند و مطمئن می شود که حروف کوچک هستند.

Function MyProper(str As String)
    Dim vExclude
    Dim i As Integer
    vExclude = Array("a", "an", "in", "and", _
      "the", "with", "is", "at")

    Application.Volatile
    str = StrConv(str, vbProperCase)
    For i = LBound(vExclude) To UBound(vExclude)
        str = Application.WorksheetFunction. _
          Substitute(str, " " & _
          StrConv(vExclude(i), vbProperCase) _
          & " ", " " & vExclude(i) & " ")
    Next
    MyProper = str
End Function

کلمات را می توان به آرایه اضافه کرد و کد به طور خودکار اضافات را حس می کند و کلمات اضافه شده را بررسی می کند. همچنین توجه داشته باشید که کد هنگام بررسی خود، قبل و بعد از هر کلمه در آرایه یک فاصله اضافه می کند. این به این دلیل است که کدی را ندارید که در کلمات جزئی (مانند "و" در "ایستاده") یا کلمات در ابتدای جمله تغییرات ایجاد کند. شما می توانید تابع را در یک کاربرگ به این ترتیب استفاده کنید:

=MyProper(B7)

این استفاده متن اصلاح شده را بدون تنظیم متن اصلی در B7 برمی گرداند.

اگر ترجیح می دهید، می توانید از تابعی استفاده کنید که فهرست کلمات خود را از یک محدوده نامگذاری شده در ورک بوک می گیرد. تابع زیر از محدوده سلولی به نام MyList با یک کلمه در هر سلول استفاده می کند. فرض بر این است که این لیست در یک کاربرگ به نام WordList است.

Function ProperSpecial(cX As Range)
 rng = target Cell

    Dim c As Range
    Dim sTemp As String

    sTemp = Application.WorksheetFunction.Proper(cX.Value)
    For Each c In Worksheets("WordList").Range("MyList")
        sTemp = Application.WorksheetFunction.Substitute( _
          sTemp, Application.WorksheetFunction.Proper( _
          " " & c.Value & " "), (" " & c.Value & " "))
    Next c

    ProperSpecial = sTemp
End Function
اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

looks_5نام شما برای نمایش - اختیاری
حریم شخصی : آدرس ایمیل شما محفوظ میماند و برای استفاده های تجاری و تبلیغاتی به کار نمی رود
عدد چهار رقمی در تصویر را وارد کنید

برای جلوگیری از این تایید در آینده, لطفا وارد شده یا ثبت نام کنید.
اگر حساب گوگل دارید به راحتی وارید شوید

0 پاسخ وجود دارد

سوال مشابهی یافت نشد

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

88 نفر آنلاین
0 عضو و 88 مهمان در سایت حاضرند
بازدید امروز: 25771
بازدید دیروز: 22514
بازدید کل: 15172971
...