Excel მონაცემთა დადასტურება რეგულარული გამონათქვამების გამოყენებით (Regex)

  • გააზიარეთ ეს
Michael Brown

გაკვეთილი გვიჩვენებს, თუ როგორ უნდა გავაკეთოთ მონაცემთა ვალიდაცია Excel-ში რეგულარული გამონათქვამების გამოყენებით მორგებული RegexMatch ფუნქციის დახმარებით.

როდესაც საქმე ეხება მომხმარებლის შეყვანის შეზღუდვას Excel-ის სამუშაო ფურცლებში, მონაცემთა ვალიდაცია შეუცვლელია. გსურთ დაუშვათ მხოლოდ რიცხვები ან თარიღები მოცემულ უჯრედში? ან შეზღუდოს ტექსტის მნიშვნელობები კონკრეტულ სიგრძეზე? ან იქნებ აკრძალოს დრო მოცემულ დიაპაზონში? პრობლემა არ არის, ეს ყველაფერი მარტივად შეიძლება გაკეთდეს წინასწარ დაყენებული ან მორგებული ვალიდაციის კრიტერიუმებით. მაგრამ რა მოხდება, თუ მსურს დაუშვას მხოლოდ მოქმედი ელ.ფოსტის მისამართები ან სტრიქონები, რომლებიც ემთხვევა კონკრეტულ ნიმუშს? ვაი, ეს შეუძლებელია. რეგექსი შენ ამბობ? ჰმ... ამან შეიძლება იმუშაოს!

    როგორ გავაკეთოთ Excel მონაცემთა ვალიდაცია Regex-ით

    სამწუხაროდ, Excel-ის არცერთ მახასიათებელს არ აქვს რეგექსის მხარდაჭერა და მონაცემთა ვალიდაცია არ არის გამონაკლისი. იმისათვის, რომ შეძლოთ უჯრედების შეყვანის დადასტურება რეგულარული გამონათქვამების გამოყენებით, ჯერ უნდა შექმნათ მორგებული Regex ფუნქცია. კიდევ ერთი გართულება ის არის, რომ VBA მომხმარებლის მიერ განსაზღვრული ფუნქციები არ შეიძლება უშუალოდ მონაცემთა ვალიდაციისთვის - თქვენ დაგჭირდებათ შუამავალი დასახელებული ფორმულის სახით.

    ზემოხსენებულის გათვალისწინებით, მოდით მოკლედ გამოვყოთ გადასადგმელი ნაბიჯები. Excel-ში მონაცემების დასადასტურებლად რეგექსის გამოყენებით:

    1. შექმენით მორგებული Regex ფუნქცია, რომელიც ამოწმებს შეესაბამება თუ არა შეყვანის მნიშვნელობა რეგულარულ გამონათქვამს.
    2. განსაზღვრეთ სახელი თქვენი Regex ფორმულისთვის.
    3. დააკონფიგურირეთ მონაცემთა ვალიდაციის წესი დასახელებული ფორმულის საფუძველზე.
    4. დააკოპირეთვალიდაციის პარამეტრები იმდენ უჯრედზე, რამდენიც გსურთ.

    გეგემებათ გეგმა? შევეცადოთ მისი განხორციელება პრაქტიკაში!

    Excel-ის მონაცემთა ვალიდაცია მორგებული რეგულარული გამონათქვამების გამოყენებით

    ეს მაგალითი ეხება ძალიან გავრცელებულ შემთხვევას - როგორ დაუშვათ მხოლოდ კონკრეტული ნიმუშის მნიშვნელობები.

    0>დავუშვათ, რომ თქვენ ინახავთ რამდენიმე SKU კოდს თქვენს სამუშაო ფურცელში და გსურთ დარწმუნებული იყოთ, რომ მხოლოდ მოცემული ნიმუშის შესაბამისი კოდები მოხვდება სიაში. იმ პირობით, რომ თითოეული SKU შედგება სიმბოლოების 2 ჯგუფისგან, რომლებიც გამოყოფილია დეფისით, პირველი ჯგუფი მოიცავს 3 დიდ ასოს, ხოლო მეორე ჯგუფი - 3 ციფრის, შეგიძლიათ ასეთი მნიშვნელობების ამოცნობა ქვემოთ მოცემული რეგექსის გამოყენებით.

    ნიმუში. : ^[A-Z]{3}-\d{3}$

    გთხოვთ, შენიშნოთ, რომ სტრიქონის დასაწყისი (^) და დასასრული ($) დამაგრებულია, ასე რომ, სხვა სიმბოლოები არ არის ნიმუში შეიძლება შეიტანოს უჯრედში.

    1. დაამატეთ მორგებული Regex Match ფუნქცია

    დაიწყეთ RegExpMatch ფუნქციის ჩასმა თქვენს სამუშაო წიგნში. კოდი უკვე დაწერილია ჩვენი Excel გურუების მიერ, ასე რომ თქვენ უბრალოდ უნდა დააკოპიროთ ის ზემოთ მიბმული გვერდიდან და ჩასვათ თქვენს VBA რედაქტორში.

    აქ არის ფუნქციის სინტაქსი თქვენი მითითებისთვის:

    RegExpMatch(ტექსტი , ნიმუში, [შემთხვევა_შემთხვევა])

    სად:

    • ტექსტი (აუცილებელია) - წყაროს სტრიქონი (ჩვენს კონტექსტში - დადასტურებული უჯრედი).
    • ნიმუში (აუცილებელია) - რეგულარული გამოხატულება შესატყვისად.
    • შემთხვევა_შემთხვევა (არასავალდებულო) - შესატყვისი ტიპი. TRUE ან გამოტოვებული - შემთხვევა-მგრძნობიარე; FALSE - რეგისტრირებულია.

    რჩევა. თუ ჩვენი Ultimate Suite-ის მომხმარებელი ხართ, მაშინ შეგიძლიათ გააკეთოთ Regex მონაცემთა Validation Excel-ში VBA კოდის დამატების გარეშე თქვენს სამუშაო წიგნებში. უბრალოდ გამოიყენეთ მორგებული AblebitsRegexMatch ფუნქცია, რომელიც შედის ჩვენს Regex Tools-ში.

    2. შექმენით დასახელებული ფორმულა

    თქვენს სამიზნე სამუშაო ფურცელში აირჩიეთ უჯრედი A1 (მიუხედავად მისი შინაარსისა და არ აქვს მნიშვნელობა რომელი უჯრედის დადასტურებას აპირებთ), დააჭირეთ Ctrl + F3 სახელების მენეჯერის გასახსნელად და განსაზღვრეთ სახელი. ამ ფორმულისთვის:

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

    ან შეგიძლიათ შეიყვანოთ რეგექსი რომელიმე უჯრედში (ამ მაგალითში A2) და მიაწოდოთ $A$2 მეორე არგუმენტს:

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

    იმისთვის რომ ფორმულმა სწორად იმუშაოს, დარწმუნდით, რომ გამოიყენეთ შედარებითი მითითება ტექსტის არგუმენტისთვის (A1) და აბსოლუტური მითითება ნიმუშისთვის ($A$2).

    იმის გათვალისწინებით, რომ ჩვენი ფორმულა გამიზნულია SKU ნომრების დასადასტურებლად, ჩვენ მას შესაბამისად ვასახელებთ: Validate_SKU .

    მნიშვნელოვანი შენიშვნა! ფორმულის განსაზღვრისას, გთხოვთ, ორჯერ შეამოწმოთ, რომ პირველი არგუმენტი ეხება ამჟამად არჩეულ უჯრედს , წინააღმდეგ შემთხვევაში ფორმულა არ იმუშავებს. მაგალითად, თუ ფურცელზე არჩეულია უჯრედი A1, ჩადეთ A1 პირველ არგუმენტში (ჩვენი რეკომენდაციების მიხედვით); თუ არჩეულია B2, მაშინ გამოიყენეთ B2 პირველი არგუმენტისთვის და ა.შ. ერთი. არ აქვს მნიშვნელობა რომელ კონკრეტულ მითითებას იყენებთ, სანამ ის ემთხვევა ამჟამად არჩეულ უჯრედს.

    ეტაპობრივადინსტრუქციები, იხილეთ როგორ შევქმნათ დასახელებული ფორმულა Excel-ში.

    3. დააყენეთ მონაცემთა ვალიდაცია

    აირჩიეთ პირველი შესამოწმებელი უჯრედი (ჩვენს შემთხვევაში A5) და შექმენით მონაცემთა გადამოწმების მორგებული წესი დასახელებული ფორმულის საფუძველზე. ამისათვის გააკეთეთ შემდეგი:

    1. დააწკაპუნეთ მონაცემები ჩანართზე > მონაცემთა დადასტურება .
    2. დაშვება ჩამოსაშლელი სია, აირჩიეთ მორგებული .
    3. შეიყვანეთ ქვემოთ მოცემული ფორმულა შესაბამის ველში.

      =Validate_SKU

    4. გააუქმეთ არჩევანი ცარიელის იგნორირება , წინააღმდეგ შემთხვევაში თქვენი წესი არ იმუშავებს.

    სურვილისამებრ, შეგიძლიათ აკრიფოთ მორგებული შეცდომის შეტყობინება, რომელიც გამოჩნდება უჯრედში არასწორი მონაცემების შეყვანისას.

    თუ ფიქრობთ, რომ გჭირდებათ დეტალური ნაბიჯები, გადადით: როგორ დააყენოთ პირადი მონაცემთა დადასტურება Excel-ში.

    4. დააკოპირეთ მონაცემთა ვალიდაცია სხვა უჯრედებში

    დადასტურების პარამეტრების მეტ უჯრედებში დასაკოპირებლად, ეს არის ის, რაც უნდა გააკეთოთ:

    1. აირჩიეთ უჯრედი მონაცემთა ვალიდირებით და დააჭირეთ Ctrl + C. დააკოპირეთ იგი.
    2. აირჩიეთ სხვა უჯრედები, რომელთა გადამოწმებაც გსურთ, დააწკაპუნეთ მათზე მარჯვენა ღილაკით, დააწკაპუნეთ განსაკუთრებული ჩასმა და აირჩიეთ 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. შეიყვანეთ ზემოაღნიშნული რეგექსი B2-ში.
    2. აირჩიეთ უჯრედი A1 და განსაზღვრეთ სახელი სახელწოდებით Validate_Email , რომელიც ეხება:

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

    3. უჯრედისთვის B5, გამოიყენეთ მონაცემთა მორგებული ვალიდაცია ქვემოთ მოცემული ფორმულის გამოყენებით. აუცილებელია, რომ იგნორირება ცარიელი ოფცია უნდა იყოს მოხსნილი.

      =Validate_Email

      გარდა ამისა, შეგიძლიათ დააკონფიგურიროთ მორგებული შეცდომის შეტყობინება, რომელიც მომხმარებელს სთხოვს შეიყვანოს სწორი ელფოსტის მისამართი.

    4. დააკოპირეთ წესი ქვემოთ მოცემულ უჯრედებში.

    თუ დადასტურებულ უჯრედში შეყვანილი ელფოსტის მისამართი არ ემთხვევა რეგექსის ნიმუშს, შემდეგი გაფრთხილება იქნება pop-up:

    პაროლების დადასტურება რეგულარული გამონათქვამების გამოყენებით

    პაროლის ვალიდაციისთვის regex-ის გამოყენებისას, პირველი, რაც უნდა გადაწყვიტოთ არის ზუსტად ის, თუ რა უნდა შეამოწმოს თქვენმა ჩვეულებრივმა გამონათქვამმა. აქ არის რამოდენიმე მაგალითი, რამაც შესაძლოა სწორ გზაზე დაგაყენებთ.

    პაროლი უნდა შედგებოდეს მინიმუმ 6 სიმბოლოსგან და შეიძლება შეიცავდეს მხოლოდ ასოებს (დიდი ან პატარა) და ციფრებს:

    ნიმუში : ^[A-Za-z0-9]{6,}$

    პაროლი უნდა შედგებოდეს მინიმუმ 6 სიმბოლოსგან და შეიცავდეს მინიმუმ ერთ ასოს დაერთი ციფრი:

    ნიმუში : ^(?=.*[A-Za-z])(?=.*\d)[A-Za-z\d]{6 ,}$

    პაროლი უნდა შედგებოდეს მინიმუმ 6 სიმბოლოსგან და შეიცავდეს მინიმუმ ერთ დიდ ასოს, ერთ პატარა ასოს და ერთ ციფრს:

    ნიმუში : ^(?= .*[A-Z])(?=.*[a-z])(?=.*\d)[A-Za-z\d]{6,}$

    პაროლი უნდა იყოს მინიმუმ 6 სიმბოლო გრძელი და შეიცავს მინიმუმ ერთ ასოს, ერთ ციფრს და ერთ სპეციალურ სიმბოლოს:

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

    დადგენილი ნიმუშით, შეგიძლიათ გადახვიდეთ მონაცემთა დადასტურების დაყენებაზე:

    1. შეიყვანეთ თქვენი პაროლის რეგექსი C2-ში.
    2. აირჩიეთ უჯრედი A1 და შექმენით დასახელებული ფორმულა სახელწოდებით Validate_Password :

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

    3. C5 უჯრედისთვის შექმენით მორგებული ვალიდაციის წესი ქვემოთ მოცემული ფორმულით. არ დაგავიწყდეთ ცარიელის იგნორირება მონიშვნის მოხსნა.

      =Validate_Password

    4. დააკოპირეთ წესი იმდენ უჯრედში, რამდენიც გსურთ.

    ახლა, შეგიძლიათ უსაფრთხოდ დაამატოთ ახალი პაროლები სიაში. თუ შეყვანის სტრიქონი არ ემთხვევა რეგექსს, შემდეგი გაფრთხილება შეგახსენებთ, რა სახის მნიშვნელობებია მიღებული:

    Regex მონაცემთა ვალიდაცია არ მუშაობს

    თუ Regex მონაცემთა ვალიდაცია არ მუშაობს თქვენს Excel-ში , სავარაუდოდ, ეს გამოწვეულია ერთ-ერთი შემდეგი მიზეზის გამო.

    RegExpMatch ფუნქცია აკლია

    სანამ გამოიყენებთ მონაცემთა ვალიდაციას, დარწმუნდით, რომ ჩადეთ RegExpMatch ფუნქციის კოდი თქვენს სამუშაო წიგნში.

    12>არასწორი რეგულარულიexpress

    იმისათვის, რომ დარწმუნდეთ, რომ თქვენი რეგექსი მუშაობს ისე, როგორც მოსალოდნელია, შეგიძლიათ შეიყვანოთ RegExpMatch ფორმულა ზოგიერთ უჯრედში და შეამოწმოთ შედეგები. დამატებითი ინფორმაციისთვის იხილეთ Excel-ის რეგულარული გამოხატვის შესატყვისი მაგალითებთან.

    თქვენი რეგულარული გამონათქვამების გასაანალიზებლად და გამართვისთვის შეგიძლიათ გამოიყენოთ უფასო ონლაინ რეგექსის ტესტირების სერვისები, როგორიცაა RegEx101 ან RegExr.

    არასწორი დასახელებული ფორმულა.

    მონაცემთა ვალიდაციის წარუმატებლობის ძალიან გავრცელებული მიზეზი არის Regex სახელად ფორმულა, რომელიც მიუთითებს არასწორ უჯრედზე. ყველა მაგალითში, ჩვენ გირჩევთ განვსაზღვროთ ფორმულა, რომელიც ეხება A1:

    =RegExpMatch(A1, regex)

    ეს მუშაობს მხოლოდ იმ შემთხვევაში, თუ უჯრედი A1 აქტიურია სახელის განსაზღვრისას და გამოყენებულია შედარებითი მითითება ($ ნიშნის გარეშე).

    იდეა ისაა, რომ ფორმულაში (A1) მითითებული ფარდობითი მითითება ავტომატურად შეიცვლება დადასტურებული უჯრედის ფარდობითი პოზიციიდან გამომდინარე. სხვა სიტყვებით რომ ვთქვათ, უჯრედი A1 არჩეულია მხოლოდ მოხერხებულობისა და თანმიმდევრულობისთვის. ფაქტობრივად, შეგიძლიათ აირჩიოთ უჯრედი B1 და მიმართოთ B1, აირჩიეთ უჯრედი C1 და მიმართოთ C1 და ა.შ. მთავარი ის არის, რომ აღნიშნული უჯრედი უნდა იყოს აქტიური უჯრედი .

    იმისათვის, რომ შეამოწმოთ სწორია თუ არა თქვენი დასახელებული ფორმულა, აირჩიეთ რომელიმე უჯრედი თქვენს სამუშაო ფურცელში, გახსენით დაასახელეთ მენეჯერი და ნახეთ რომელ უჯრედზე მიუთითებს ფორმულა. თუ ის ეხება ამჟამად არჩეულ უჯრედს, ფორმულა სწორია. წინააღმდეგ შემთხვევაში, თქვენ უნდა შეცვალოთ მითითება პირველ არგუმენტში.

    სკრინშოტშიქვემოთ მონიშნულია უჯრედი A7, რაც ნიშნავს, რომ დასახელებულ ფორმულას უნდა ჰქონდეს A7 პირველ არგუმენტში. მეორე არგუმენტი ($A$2) ეხება რეგექსს - ეს მინიშნება უნდა დარჩეს მუდმივი, ამიტომ ის იკეტება $ ნიშნით.

    არჩეულია ცარიელი ვარიანტის იგნორირება

    მონაცემთა ვალიდაციის მორგებული წესის დაყენებისას მნიშვნელოვანია გააუქმოთ ველი ცარიელის იგნორირება . წინააღმდეგ შემთხვევაში, წესი არ იმუშავებს შემდეგი მიზეზის გამო:

    თუ შესატყვისი ვერ მოიძებნა, RegExpMatch ფუნქცია დააბრუნებს FALSE-ს. თუ არჩეულია ცარიელის იგნორირება , FALSE უტოლდება ცარიელს და იგნორირებულია.

    ალტერნატიული გამოსავალი ცალსახად აცხადებს, რომ ფორმულა უნდა დაბრუნდეს TRUE:

    =RegExpMatch(…)=TRUE

    ასე უნდა გავაკეთოთ მონაცემთა დადასტურება Excel-ში რეგულარული გამონათქვამების გამოყენებით. მადლობას გიხდით, რომ წაიკითხეთ და მოუთმენლად ველი თქვენს ნახვას ჩვენს ბლოგზე მომავალ კვირას!

    სავარჯიშო სამუშაო წიგნი ჩამოსატვირთად

    Regex Data Validation მაგალითები (.xlsm ფაილი)

    მაიკლ ბრაუნი არის ტექნოლოგიის ერთგული ენთუზიასტი, რომელსაც აქვს გატაცება პროგრამული ინსტრუმენტების გამოყენებით რთული პროცესების გამარტივებისთვის. ტექნოლოგიურ ინდუსტრიაში ათწლეულზე მეტი გამოცდილებით, მან დახვეწა თავისი უნარები Microsoft Excel-სა და Outlook-ში, ასევე Google Sheets-სა და Docs-ში. მაიკლის ბლოგი ეძღვნება თავისი ცოდნისა და გამოცდილების სხვებს გაზიარებას, ადვილად მისაწვდომ რჩევებსა და გაკვეთილებს პროდუქტიულობისა და ეფექტურობის გასაუმჯობესებლად. მიუხედავად იმისა, გამოცდილი პროფესიონალი ხართ თუ დამწყები, მაიკლის ბლოგი გთავაზობთ ღირებულ შეხედულებებსა და პრაქტიკულ რჩევებს ამ აუცილებელი პროგრამული ხელსაწყოებიდან მაქსიმალური სარგებლობის მისაღებად.