اعتبار سنجی داده های اکسل با استفاده از عبارات منظم (Regex)

  • این را به اشتراک بگذارید
Michael Brown

این آموزش نشان می‌دهد که چگونه می‌توان اعتبار داده‌ها را در اکسل با استفاده از عبارات منظم با کمک تابع RegexMatch سفارشی انجام داد.

وقتی صحبت از محدود کردن ورودی کاربر در کاربرگ‌های اکسل می‌شود، اعتبارسنجی داده‌ها به میان می‌آید. ضروری است. آیا می خواهید فقط اعداد یا تاریخ ها را در یک سلول مشخص مجاز کنید؟ یا مقادیر متن را به طول خاصی محدود کنید؟ یا شاید زمان‌های خارج از محدوده معین را غیرممکن کنید؟ مشکلی نیست، همه اینها را می توان به راحتی با معیارهای اعتبارسنجی از پیش تعیین شده یا سفارشی انجام داد. اما اگر بخواهم فقط آدرس های ایمیل معتبر یا رشته هایی را که با یک الگوی خاص مطابقت دارند مجاز کنم، چه؟ افسوس که این امکان پذیر نیست. Regex شما می گویید؟ هوم… ممکن است کار کند!

    چگونه می توان اعتبارسنجی داده اکسل را با Regex انجام داد

    متأسفانه، هیچ یک از ویژگی های داخلی اکسل از regex پشتیبانی نمی کند، و اعتبارسنجی داده ها وجود ندارد استثنا. برای اینکه بتوانید ورودی سلول را با استفاده از عبارات منظم تأیید کنید، ابتدا باید یک تابع Regex سفارشی ایجاد کنید. عارضه دیگر این است که توابع تعریف شده توسط کاربر VBA نمی توانند مستقیماً به اعتبارسنجی داده ها ارائه شوند - شما به یک واسطه به شکل فرمول نامگذاری شده نیاز دارید.

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

    1. یک تابع Regex سفارشی ایجاد کنید که بررسی می‌کند آیا مقدار ورودی با یک عبارت معمولی مطابقت دارد یا خیر.
    2. یک نام برای فرمول Regex خود تعریف کنید.
    3. یک قانون اعتبارسنجی داده را بر اساس فرمول نامگذاری شده پیکربندی کنید.
    4. کپی کنیدتنظیمات اعتبارسنجی به تعداد سلول‌هایی که می‌خواهید.

    به نظر می‌رسد یک طرح است؟ بیایید سعی کنیم آن را در عمل پیاده سازی کنیم!

    تأیید اعتبار داده اکسل با استفاده از عبارات منظم سفارشی

    این مثال به یک مورد بسیار رایج می پردازد - چگونه فقط مقادیر یک الگوی خاص را مجاز کنیم.

    0> فرض کنید برخی از کدهای SKU را در کاربرگ خود نگه دارید و می خواهید مطمئن شوید که فقط کدهایی که با یک الگوی داده شده مطابقت دارند وارد لیست می شوند. به شرط اینکه هر SKU از 2 گروه کاراکتر جدا شده با خط فاصله تشکیل شده باشد، گروه اول شامل 3 حرف بزرگ و گروه دوم - 3 رقم، می توانید چنین مقادیری را با استفاده از regex زیر شناسایی کنید.

    Pattern : ^[A-Z]{3}-\d{3}$

    لطفاً توجه داشته باشید که شروع (^) و انتهای ($) رشته لنگر است، بنابراین هیچ کاراکتری به جز در الگو را می توان در یک سلول وارد کرد.

    1. یک تابع Regex Match سفارشی اضافه کنید

    با درج تابع RegExpMatch در کتاب کار خود شروع کنید. کد قبلاً توسط استادان اکسل ما نوشته شده است، بنابراین شما فقط باید آن را از صفحه پیوند بالا کپی کنید و در ویرایشگر VBA خود جایگذاری کنید.

    در اینجا نحو تابع برای مرجع شما آمده است:

    RegExpMatch(text , pattern, [match_case])

    Where:

    • Text (الزامی) - یک رشته منبع (در زمینه ما - یک سلول معتبر).
    • Pattern (الزامی) - یک عبارت منظم برای مطابقت.
    • Match_case (اختیاری) - نوع مطابقت. درست یا حذف شده - مورد-حساس؛ FALSE - حساس به حروف بزرگ نیست.

    نکته. اگر از کاربران Ultimate Suite ما هستید، می‌توانید اعتبارسنجی داده Regex را در اکسل بدون افزودن کد VBA به کتاب‌های کاری خود انجام دهید. فقط از یک تابع سفارشی AblebitsRegexMatch موجود در ابزار Regex ما استفاده کنید.

    2. یک فرمول با نام ایجاد کنید

    در کاربرگ هدف خود، سلول A1 را انتخاب کنید (صرف نظر از محتویات آن و مهم نیست که کدام سلول را واقعاً می خواهید تأیید کنید)، Ctrl + F3 را فشار دهید تا Name Manager باز شود و یک نام تعریف کنید. برای این فرمول:

    =RegExpMatch(Sheet1!A1, "^[A-Z]{3}-\d{3}$")

    یا می توانید regex را در سلولی وارد کنید (در این مثال A2) و $A$2 را به آرگومان دوم وارد کنید:

    =RegExpMatch(Sheet1!A1, Sheet1!$A$2)

    برای اینکه فرمول به درستی کار کند، حتماً از یک مرجع نسبی برای آرگومان text (A1) و مرجع مطلق برای pattern ($A$2) استفاده کنید.

    با توجه به اینکه فرمول ما برای اعتبار سنجی اعداد SKU است، نام آن را بر این اساس می گذاریم: Validate_SKU .

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

    برای گام به گامدستورالعمل‌ها، لطفاً به نحوه ساخت فرمول نام‌گذاری شده در اکسل مراجعه کنید.

    3. تنظیم Data Validation

    اولین سلولی را که باید بررسی شود (در مورد ما A5) انتخاب کنید و یک قانون اعتبارسنجی داده سفارشی بر اساس فرمول نامگذاری شده ایجاد کنید. برای این کار، موارد زیر را انجام دهید:

    1. برروی داده برگه > Data Validation کلیک کنید.
    2. در Allow فهرست کشویی، Custom را انتخاب کنید.
    3. فرمول زیر را در کادر مربوطه وارد کنید.

      =RegExpMatch(…)=TRUE

    4. گزینه نادیده گرفتن خالی را بردارید، در غیر این صورت قانون شما کار نخواهد کرد.

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

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

    4. کپی کردن اعتبار داده‌ها در سلول‌های بیشتر

    برای کپی کردن تنظیمات اعتبارسنجی در سلول‌های بیشتر، این کاری است که باید انجام دهید:

    1. سلول دارای اعتبارسنجی داده را انتخاب کنید و Ctrl + C را فشار دهید تا آن را کپی کنید.
    2. سلول های دیگری را که می خواهید اعتبارسنجی کنید انتخاب کنید، روی آنها کلیک راست کنید، Paste Special را کلیک کنید و گزینه Validation را انتخاب کنید.
    3. روی OK کلیک کنید.

    اطلاعات بیشتر را می‌توانید در نحوه کپی کردن اعتبارسنجی داده‌ها پیدا کنید.

    اکنون، هر بار که فردی سعی می‌کند یک SKU نامعتبر را در هر یک از سلول‌های تأیید شده وارد کند، موارد زیر پیام هشدار ظاهر می شود:

    تأیید اعتبار ایمیل با Regex

    برای انجام اعتبار سنجی ایمیل، شروع کنیدبا نوشتن یک عبارت منظم که با آدرس ایمیل مطابقت دارد.

    الگوی : ^[\w\.\-]+@[A-Za-z0-9]+[A-Za -z0-9\.\-]*[A-Za-z0-9]+\.[A-Za-z]{2,24}$

    برای توضیح دقیق نحو، لطفاً Regex را برای مطابقت با آدرس‌های ایمیل معتبر ببینید.

    و اکنون، معیارهای اعتبار سنجی را با انجام مراحل آشنا مشخص کنید:

    1. Regex فوق را در B2 وارد کنید.
    2. سلول A1 را انتخاب کنید و نامی به نام Validate_Email تعریف کنید که به:

      =RegExpMatch(Sheet1!A1, Sheet1!$B$2)

    3. برای سلول B5، اعتبارسنجی داده سفارشی را با استفاده از فرمول زیر اعمال کنید. ضروری است که گزینه Ignore blank از حالت انتخاب خارج شود.

      =Validate_Email

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

    4. قانون را در سلول های زیر کپی کنید.

    اگر آدرس ایمیلی که در یک سلول معتبر وارد می کنید با الگوی regex مطابقت نداشته باشد، هشدار زیر پاپ آپ:

    تأیید گذرواژه ها با استفاده از عبارات معمولی

    هنگام استفاده از regex برای اعتبارسنجی رمز عبور، اولین چیزی که باید تصمیم بگیرید این است که دقیقاً چه عبارت معمولی شما باید بررسی شود. در اینجا چند نمونه وجود دارد که ممکن است شما را در مسیر درست قرار دهد.

    یک رمز عبور باید حداقل 6 کاراکتر داشته باشد و فقط می تواند شامل حروف (بزرگ یا کوچک) و اعداد باشد:

    الگوی : ^[A-Za-z0-9]{6,}$

    یک رمز عبور باید حداقل 6 کاراکتر داشته باشد و حداقل شامل یک حرف ویک رقمی:

    الگوی : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6 ,}$

    یک رمز عبور باید حداقل 6 کاراکتر داشته باشد و حداقل شامل یک حرف بزرگ، یک حرف کوچک و یک رقم باشد:

    Pattern : ^(?= .*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$

    یک رمز عبور باید حداقل 6 کاراکتر باشد طولانی و شامل حداقل یک حرف، یک رقم و یک کاراکتر خاص:

    Pattern : ^(?=.*[A-Za-z])(?=.*\d )(?=.*[@$!%*#?&_-])[A-Za-z\d@$!%*#?&_-]{6,}$

    با ایجاد الگو، می‌توانید به راه‌اندازی Data Validation بروید:

    1. Regex رمز عبور خود را در C2 وارد کنید.
    2. سلول A1 را انتخاب کنید و فرمولی به نام ایجاد کنید. Validate_Password :

      =RegExpMatch(Sheet1!A1, Sheet1!$C$2)

    3. برای سلول C5، یک قانون اعتبارسنجی سفارشی با فرمول زیر ایجاد کنید. به خاطر داشته باشید که کادر چک نادیده گرفتن خالی را بردارید.

      =Validate_Password

    4. قانون را به تعداد سلول‌هایی که می‌خواهید کپی کنید.

    اکنون، می‌توانید با خیال راحت رمزهای عبور جدید را به لیست اضافه کنید. اگر رشته ورودی با regex مطابقت نداشته باشد، هشدار زیر به شما یادآوری می کند که چه نوع مقادیری پذیرفته می شوند:

    Regex Data Validation کار نمی کند

    اگر Regex Data Validation در Excel شما کار نمی کند. ، به احتمال زیاد به دلیل یکی از دلایل زیر است.

    عملکرد RegExpMatch وجود ندارد

    قبل از اعمال اعتبارسنجی داده ها، حتماً کد تابع RegExpMatch را در کتاب کار خود وارد کنید.

    12> منظم نادرستexpress

    برای اطمینان از اینکه regex شما همانطور که انتظار می رود کار می کند، می توانید فرمول RegExpMatch را در برخی از سلول ها وارد کنید و نتایج را بررسی کنید. برای اطلاعات بیشتر، لطفاً مطابقت عبارات معمولی Excel با مثال‌ها را ببینید.

    برای تجزیه و تحلیل و اشکال‌زدایی عبارات معمولی خود، می‌توانید از سرویس‌های تست regex آنلاین رایگان مانند RegEx101 یا RegExr استفاده کنید.

    فرمول نام‌گذاری نادرست

    یک دلیل بسیار رایج برای شکست اعتبار داده ها، فرمولی به نام Regex است که به یک سلول اشتباه اشاره می کند. در تمام مثال‌ها، توصیه می‌کنیم فرمولی با اشاره به A1 تعریف کنید:

    =RegExpMatch(A1, regex)

    این فقط در صورتی کار می‌کند که سلول A1 فعال باشد هنگام تعریف یک نام و یک مرجع نسبی (بدون علامت $) استفاده می شود.

    ایده این است که یک مرجع نسبی مشخص شده در فرمول (A1) به طور خودکار بر اساس موقعیت نسبی سلول تأیید شده تغییر می کند. به عبارت دیگر، سلول A1 فقط برای راحتی و ثبات انتخاب شده است. در واقع می توانید سلول B1 را انتخاب کنید و به B1 مراجعه کنید، سلول C1 را انتخاب کنید و به C1 مراجعه کنید و .... نکته کلیدی این است که سلول مرجع باید سلول فعال باشد.

    برای بررسی اینکه آیا فرمول نام شما صحیح است، هر سلولی را در کاربرگ خود انتخاب کنید، نام مدیر را بگذارید و ببینید فرمول به کدام سلول اشاره دارد. اگر به سلول انتخاب شده فعلی اشاره دارد، فرمول درست است. در غیر این صورت، باید مرجع را در آرگومان اول تغییر دهید.

    در تصویردر زیر، سلول A7 انتخاب شده است، به این معنی که فرمول نامگذاری شده باید A7 را در آرگومان اول داشته باشد. آرگومان دوم ($A$2) به regex اشاره دارد - این مرجع قرار است ثابت بماند، بنابراین با علامت $ قفل می شود.

    گزینه نادیده گرفتن خالی انتخاب شده است

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

    اگر مطابقت پیدا نشد، تابع RegExpMatch FALSE را برمی گرداند. با انتخاب گزینه Ignore blank ، FALSE معادل خالی است و نادیده گرفته می شود.

    یک راه حل جایگزین به صراحت بیان می کند که فرمول باید TRUE را برگرداند:

    =RegExpMatch(…)=TRUE

    اینگونه است که می توان اعتبارسنجی داده ها را در اکسل با استفاده از عبارات منظم انجام داد. من از شما سپاسگزارم که خواندید و مشتاقانه منتظر دیدار شما در وبلاگ ما در هفته آینده هستم!

    کتاب کار را برای دانلود تمرین کنید

    نمونه های اعتبارسنجی داده های Regex (فایل xlsm.)

    <3

    مایکل براون یک علاقه‌مند به فناوری است که علاقه زیادی به ساده‌سازی فرآیندهای پیچیده با استفاده از ابزارهای نرم‌افزاری دارد. او با بیش از یک دهه تجربه در صنعت فناوری، مهارت های خود را در Microsoft Excel و Outlook و همچنین Google Sheets و Docs تقویت کرده است. وبلاگ مایکل اختصاص داده شده است تا دانش و تخصص خود را با دیگران به اشتراک بگذارد و نکات و آموزش هایی را برای بهبود بهره وری و کارایی ارائه دهد. چه یک حرفه ای با تجربه باشید و چه مبتدی، وبلاگ مایکل، بینش های ارزشمند و توصیه های عملی را برای استفاده حداکثری از این ابزارهای نرم افزاری ضروری ارائه می دهد.