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

Vishwajeet یک سری از شماره قطعات در یک ستون دارد. این شماره های قطعه باید از یک الگوی خاص پیروی کنند (۲ عدد، ۵ حرف، ۴ عدد، ۱ حرف، ۱ عدد، ۱ حرف و ۱ عدد). او متعجب است که آیا راهی وجود دارد که به راحتی تشخیص دهیم کدام یک از سلول های ستون با این الگو متفاوت است؟

بسته به ماهیت واقعی داده هایتان، راه هایی وجود دارد که می توانید به این کار نزدیک شوید. به عنوان مثال، می توانید از فرمولی مانند این در یک ستون کمکی استفاده کنید:

=AND(LEN(A1)=15,ISNUMBER(--LEFT(A1,2)),ISTEXT(MID(A1,3,5)),
ISNUMBER(--MID(A1,8,4)),ISTEXT(MID(A1,12,1)),ISNUMBER(--
MID(A1,13,1)),ISTEXT(MID(A1,14,1)),ISNUMBER(--RIGHT(A1,1)))

فرمول (که بسیار طولانی است) بسته به اینکه الگو درست باشد یا نه، True یا False را برمی گرداند. با این حال، فرمول مشکل دارد. نمادهای استفاده شده به جای حروف (مانند علامت دلار یا ستاره) و برخی از نمادهای استفاده شده به جای اعداد (مانند نقطه یا علامت درصد) را نمی گیرد. دلیل آن این است که تابع ISTEXT نمادها را متن در نظر می گیرد و تابع ISNUMBER چیزی شبیه "1.23" را به عنوان یک عدد تجزیه می کند.

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

=AND(LEN(A1)=15,ISNUMBER(SUM(SEARCH(MID(A1,{1,2,8,9,10,11,
13,15},1),"0123456789"),SEARCH(MID(A1,{3,4,5,6,7,12,14},1),
"ABCDEFGHIJKLMNOPQRSTUVWXYZ"))))

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

اگر لازم است الگوهای شماره قطعه را کمی بررسی کنید، ممکن است بخواهید از یک ماکرو برای بررسی استفاده کنید. در زیر یک تابع کوتاه تعریف شده توسط کاربر است که از عملگر Like استفاده می کند تا ببیند آیا از الگو پیروی می شود یا خیر.

Function CheckPattern(rCell As Range) As Boolean
    Dim sPattern As String

    sPattern = "##[A-Z][A-Z][A-Z][A-Z][A-Z]####[A-Z]#[A-Z]#"

    CheckPattern = rCell.Value Like sPattern
End Function

به استفاده از متغیر sPattern توجه کنید. زمانی که عملگر Like مقایسه خود را انجام می دهد، این الگویی است که باید دنبال شود. هر رخداد نماد # به این معنی است که هر رقمی می تواند در این موقعیت باشد. هر وقوع [AZ] به این معنی است که موقعیت می تواند یک حرف در محدوده A تا Z باشد.

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

https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/like-operator

این سایت در واقع برای ویژوال بیسیک است نه VBA، اما این صفحه خاص از اطلاعات به خوبی در VBA کار می کند.

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

=CheckPattern(A1)

این فرض را بر این می گذارد که شماره قطعه در سلول A1 است، همانطور که تمام فرمول های دیگر ارائه شده در این نکته وجود دارد.

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

پاسخ شما

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

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

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

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

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

23.2k سوال

8.5k پاسخ

608 دیدگاه

9.7k کاربر

161 نفر آنلاین
0 عضو و 161 مهمان در سایت حاضرند
بازدید امروز: 12735
بازدید دیروز: 27627
بازدید کل: 15187559
...