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

تونی دارای یک دسته داده در یک کاربرگ است که از ارقام و کاراکترهای دیگر تشکیل شده است. به عنوان مثال، او ممکن است یک سلول حاوی "1234567Blue" داشته باشد. تونی می خواهد بتواند موقعیت شخصیتی را که در آن اولین کاراکتر غیر رقمی رخ می دهد، تشخیص دهد. در مثال متن "1234567Blue" تونی می خواهد راهی برای تشخیص اینکه اولین کاراکتر غیر رقمی در موقعیت 8 است.

دو راه اصلی برای به دست آوردن ارزش مورد نظر وجود دارد. اولین مورد استفاده از فرمول آرایه برای محاسبه موقعیت است. فرمول آرایه زیر (وارد شده با استفاده از Ctrl+Shift+Enter) در اکثر موارد کار خواهد کرد:

=MATCH(TRUE,ISERROR(VALUE(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))),0)

تنها مواردی که این فرمول آرایه کار نمی کند این است که سلول A1 خالی باشد یا حاوی یک مقدار کاملاً عددی باشد. اگر لیست شما ممکن است حاوی این نوع داده باشد (یا اصلاً داده ای نداشته باشد)، باید از یک فرمول آرایه کمی طولانی تر استفاده کنید:

=IF(LEN(A1)=0,0,MIN(IF(1*ISNUMBER(1*MID(A1,ROW(INDIRECT("A1:A"&
LEN(A1))),1))=0,ROW(INDIRECT("A1:A"&LEN(A1))),LEN(A1)+1)))*
(ISNUMBER(A1)=FALSE)

به یاد داشته باشید که این فرمول یک آرایه واحد است که با استفاده از Ctrl+Shift+Enter وارد می شود. مواردی را که A1 فاقد نویسه های غیر رقمی است (مانند یک سلول خالی یا مقداری مانند "123") به درستی مدیریت می کند.

یکی دیگر از فرمول های آرایه ممکن که باید موقعیت مورد نظر را برگرداند، موارد زیر است. این یکی باید سلول های خالی و مقادیر کاملاً عددی را به خوبی مدیریت کند، اما از فرمول آرایه ارائه شده قبلی کوتاه تر است:

=IFERROR(MATCH(1,ISERR(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)*1)*1,),)

البته، راه دیگری که می توانید موقعیت اولین کاراکتر غیر رقمی را پیدا کنید، ایجاد یک تابع تعریف شده توسط کاربر است. راه های مختلفی برای پیاده سازی چنین ماکرو وجود دارد. یکی از ساده ترین راه ها برای پیاده سازی ماکرو این است که به سادگی از طریق هر کاراکتری در هر چیزی که به ماکرو منتقل می شود، قدم بگذارید. وقتی کاراکتری پیدا شد که خارج از محدوده کد ASCII برای ارقام (48 تا 57) است، پس می دانید که موقعیت اول را پیدا کرده اید. ماکرو زیر راهی برای انجام این نوع تکنیک نشان می دهد:

Function FirstNonDigit(str As String)
    Dim iChar As Integer
    Dim iPos As Integer
    Dim J As Integer

    Application.Volatile
    iPos = 0
    For J = 1 To Len(str)
        iChar = Asc(Mid(str, J, 1))
        If iChar <= 47 Or iChar >= 58 Then
            iPos = J
            Exit For
        End If
    Next J
    FirstNonDigit = iPos
End Function

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

=FirstNonDigit(A1)

اگر سلولی که به آن ارجاع می دهید خالی باشد یا فقط حاوی اعداد باشد، تابع مقدار 0 را برمی گرداند.

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

پاسخ شما

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

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

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

سوالات مشابه

برای دسترسی راحت به مطالب سایت ، اپلیکیشن سایت را نصب کنید
و لطفا بعد از نصب امتیاز دهید. با تشکر از حمایت شما
0 دوستدار 0 امتیاز منفی
0 پاسخ 93 visibility
ارسال شده در 29 آذر 1401 موضوع: شبکه های کامپیوتری توسط: بی نام
0 دوستدار 0 امتیاز منفی
0 پاسخ 38 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 20 visibility
ارسال شده در 27 تیر 1402 موضوع: آفیس توسط: Admin
0 دوستدار 0 امتیاز منفی
0 پاسخ 37 visibility
0 دوستدار 0 امتیاز منفی
0 پاسخ 40 visibility

24.3k سوال

9.6k پاسخ

614 دیدگاه

11.2k کاربر

137 نفر آنلاین
0 عضو و 137 مهمان در سایت حاضرند
بازدید امروز: 1359
بازدید دیروز: 25180
بازدید کل: 20338717
...