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

بیل ستونی از متن دارد که در آن باید تمام حروف را با عددی که نشان دهنده موقعیت حرف در الفبا است جایگزین کند. بنابراین، برای مثال، اگر سلولی حاوی "T10A22" باشد، بیل باید حروفی مانند "2010122" را جایگزین کند، جایی که T با 20 و A با 1 جایگزین می شود. هر سلول داده شده

اگر لازم است این کار را فقط یک بار (در یک کاربرگ واحد) انجام دهید، ممکن است انتخاب ستون و استفاده از Find and Replace به اندازه کافی آسان باشد. می توانید A را جستجو کنید و با 1 جایگزین کنید، B را جستجو کنید و با 2 جایگزین کنید و غیره. تنها 26 تکرار برای انجام وجود خواهد داشت، که ممکن است سخت به نظر برسد، اما می توان آن را در زمان کمتری نسبت به ایجاد یک ماکرو برای انجام تغییرات انجام داد.

همانطور که گفته شد، اگر مجبورید این کار را به طور منظم انجام دهید، بهترین راه حل شما یک ماکرو است. شما می توانید رویکرد Find and Replace را با استفاده از یک ماکرو به این صورت پیاده سازی کنید:

Sub ReplaceLetters1()
    Selection.Replace What:="A", Replacement:="1", LookAt:=xlPart, _
      SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
      ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    Selection.Replace What:="B", Replacement:="2"
    Selection.Replace What:="C", Replacement:="3"
    Selection.Replace What:="D", Replacement:="4"
    Selection.Replace What:="E", Replacement:="5"
    Selection.Replace What:="F", Replacement:="6"
    Selection.Replace What:="G", Replacement:="7"
    Selection.Replace What:="H", Replacement:="8"
    Selection.Replace What:="I", Replacement:="9"
    Selection.Replace What:="J", Replacement:="10"
    Selection.Replace What:="K", Replacement:="11"
    Selection.Replace What:="L", Replacement:="12"
    Selection.Replace What:="M", Replacement:="13"
    Selection.Replace What:="N", Replacement:="14"
    Selection.Replace What:="O", Replacement:="15"
    Selection.Replace What:="P", Replacement:="16"
    Selection.Replace What:="Q", Replacement:="17"
    Selection.Replace What:="R", Replacement:="18"
    Selection.Replace What:="S", Replacement:="19"
    Selection.Replace What:="T", Replacement:="20"
    Selection.Replace What:="U", Replacement:="21"
    Selection.Replace What:="V", Replacement:="22"
    Selection.Replace What:="W", Replacement:="23"
    Selection.Replace What:="X", Replacement:="24"
    Selection.Replace What:="Y", Replacement:="25"
    Selection.Replace What:="Z", Replacement:="26"
End Sub

برای استفاده از ماکرو، کافی است سلول هایی را که می خواهید پردازش کنید انتخاب کنید و سپس آن را اجرا کنید. همچنین می توانید از یک رویکرد متفاوت که بر حلقه For...Next متکی است، به این صورت استفاده کنید:

Sub ReplaceLetters2()
    Dim J As Integer

    Selection.Replace What:="A", Replacement:="1", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
    For J = 66 To 90
        Selection.Replace What:=Chr(J), Replacement:=J - 64
    Next J
End Sub

در حالی که اولین عملیات Replace را می‌توان در داخل حلقه For...Next قرار داد، من تصمیم گرفتم آن را جدا نگه دارم تا (حداقل برای من) حلقه ساده‌تر به نظر برسد. این یک انتخاب سبکی بیش از هر چیز دیگری است.

اگر به دلایلی نمی‌خواهید از روش .Replace استفاده کنید، می‌توانید از روش قدیمی نگاه کردن به هر شخصیت در هر چیزی که ارزیابی می‌کنید استفاده کنید. این رویکرد مورد استفاده در این تابع تعریف شده توسط کاربر است:

Function LetterToNum(c As Range) As String
    Dim sRaw As String
    Dim J As Integer

    sRaw = UCase(c)
    For J = 1 To 26
        sRaw = Replace(sRaw, Chr(J + 64), J)
    Next J
    LetterToNum = sRaw
End Function

برای استفاده از این تابع، به سادگی موارد زیر را در کاربرگ خود قرار دهید، جایی که A1 سلولی است که می خواهید تبدیل کنید:

=LetterToNum(A1)

اگر ترجیح می دهید از ماکروها استفاده نکنید، می توانید از یک فرمول نسبتا طولانی برای انجام تبدیل یک سلول استفاده کنید:

=TEXTJOIN("",FALSE, IF(ISNUMBER(VALUE(MID(A1,SEQUENCE(1,LEN(A1)),1))), MID(A1,SEQUENCE(1,LEN(A1)),1), COLUMN(INDIRECT(MID(A1,SEQUENCE(1,LEN(A1)),1) & ":" & MID(A1,SEQUENCE(1,LEN(A1)),1)))))

این فرمول فرض می کند که متنی که می خواهید تبدیل کنید در سلول A1 است. اساساً به هر کاراکتر در رشته متن نگاه می کند و تعیین می کند که آیا رقم است یا خیر. اگر چنین است، از شخصیت اصلی استفاده می کند. اگر اینطور نیست، از تابع INDIRECT برای تعیین یک ستون بر اساس حرف استفاده می کند و سپس از COLUMN برای برگرداندن یک مقدار عددی برای آن ستون استفاده می کند. سپس همه اینها با استفاده از تابع TEXTJOIN دوباره ترکیب می شوند.

اگر خواستی، با این لینک از ما حمایت کن

پاسخ شما

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

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

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

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

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

23.2k سوال

8.5k پاسخ

613 دیدگاه

10.8k کاربر

155 نفر آنلاین
1 عضو و 154 مهمان در سایت حاضرند
اعضای حاضر در سایت
بازدید امروز: 9972
بازدید دیروز: 13001
بازدید کل: 19464267
...