Pøeskoèit navigaci | Pøeskoèit na novinky
     

Jste zde: Úvodní stránka » excel » vba-teorie-zaklady » Operator-Like-Excel-VBA
Microsoft Excel logo

Opertor Like - Excel VBA

Videokurzy Excel

Ve spoluprci se SEDUO jsem vytvoil nkolik videokurz:

Jak vyut opertor Like pi porovnvn v Excel VBA?

vodem

V Excel lze vyut opertor Like (mon znte z databz a ppadn jinch programovacch jazyk). J se v tomto lnku zamm jak opertor Like funguje v Excel VBA (napklad v podmnkch). Pro pehlednost a monost roziovn lnku je rozdlen na jednotliv kapitoly:


Trocha teorie k Like

Opertor Like v Excel VBA umon porovnvat etzce (texty) proti paternu (vzoru). Like v prohledvanm etzci (textu) zjiuje zda obsahuje poadavan znaky (ty kter mte v paternu). Ppadn zda etezec je v poadovanm "formtu" (obsahuje slice na patinch pozicch).

Pro sprvnou funkci je poteba umt napsat patern (mon vm bude pipomnat regulrn vraz, mte sten pravdu, jen Like je "omezen").

Pro sprvn pouit je poteba znt, co kter znak um:

  • * - odpovd libovolnmu potu znak
  • ? - odpovd prv jednomu znaku
  • # - odpovd slenmu znaku
  • - odpovd znaku(m) zadanm mezi zvorkami
  • - - odpovda rozsahu znaku kdy mnus je pro rozsah a-c (psmena mezi a a c a je poteba vloit do hranatch zvorek [a-c]
  • ! - negace - !b neobsahuje b

Pokud vm chyb znaky pro zatek, konec atd. (co maj regulrn vrazy), mte smlu (muste pout je). Like poslou, pokud vm sta "zkladn", neboli jednodu kontrola znak, mete pout opertor like (lpe a rychleji se nape). Pro pokroilej prci u s opertorem like nevystate a budete se muset poohldnout po regulrnch vrazech a vyut napklad RegExp.

Vcemn relularn vrazy se daj brt jako dal jazyk, take mte o zbavu postarno ;)


Poznmka: Ukzky pracuj s standartnm nastavenm, nebo-li Option Compare Binary.

Zkladn ukzka

Prvn jednoduch ukzka:

' Potebuji zjistit, zda text obsahuje A (velk a kdekoliv v textu) MsgBox ("A123C" Like "*A*") ' True pokud obsahuje

Zafunguje i tato druh ukzka:

' Potebuji zjistit, zda text zan A (velk psmeno A na zatku textu) MsgBox ("A123C" Like "A*") ' True pokud obsahuje

Ale co kdy A nebude na zatku

' Potebuji zjistit, zda text zan A (velk na zatku textu) MsgBox ("BA123C" Like "A*") ' False - sice A v kdu je ale nen prvn

Te je pln jedno kde A bude proto je patern *A*

' Potebuji zjistit, zda text obsahuje A (velk a kdekoliv v textu) MsgBox ("BA123C" Like "*A*") ' True

Rozliuje velk a mal psmena:

' Potebuji zjistit, zda text obsahuje A (mal a kdekoliv v textu) MsgBox ("BA123C" Like "*a*") ' False - nen mal a ' Tip - nen penastaven: Option Compare

Pokroilej ukzky

K testm mete vyut napklad MsgBox:

MsgBox ("123-345" Like "###[-]###") MsgBox ("123-345" Like "###[-.]###") MsgBox ("abcpesabc" Like "*pes*") MsgBox ("abcpesabc" Like "pes*") MsgBox ("pas" Like "p?s") MsgBox ("pas" Like "p??s") MsgBox ("A4C" Like "A#C") MsgBox ("ABC" Like "A??C") MsgBox ("A123C" Like "A*C") MsgBox ("1B3" Like "1[A-Z]3") MsgBox ("123" Like "1[!A-Z]3") MsgBox ("1B3" Like "1[!A-Z]3") MsgBox ("a" Like "[a,c,k]") MsgBox ("b" Like "[a,c,k]") MsgBox ("b" Like "[!a,c,k]") MsgBox ("bb" Like "*b*") MsgBox ("bb" Like "*!b*")

Ukzka vsledku

Opertor Like v Excel VBA

Testy s Debug.Print

Pokud mte rdi Debug.Print, mete tak testovat tak:

Debug.Print "JakNaExcel" Like "*Excel*" Debug.Print "JakNaExcel" Like "*Google*"

Vsledek v Immediate je jasn

True False

UDF - neboli vlastn funkce pro testy

Pokud si chcete vytvoit vlastn funkci, pro hrtky mete

Public Function JeLike(Text As String, Pattern As String) As Boolean ' aneb co se kontrolovalo v MsgBoxu ppadn Debug.Print JeLike = Text Like Pattern End Function

Nsledn pak sta do buky zadat vai vlastn funkci. Samozejm, e se mete odkazat na buky ve kterch budete mt prohledvan texty a paterrny, ale to ji nechm na vs.

=JeLike("Ahoj"; "A*")

Poznmka, vm, e funkce jde vylepit a zdokonalit, ale pro pokudy naprosto dostauje. Pokud dostaovat nebude, pozorn ten si sm uprav a vylep. Svm vsledkem pak me pochlubit v komentch.

Option compare

Pkaz (jak budou porovnvany etzce) bude popsn samostatn o ostatnmi pkazy tkajc se Option *. Dkuji za tip Petrovi (kdyby nhodou nkomu kdy nefungovali, z dvodu jinho nastaven).

Binary

Vchoz hodnota porovnvn

Option Compare Binary

pklad azen znak:

0 < 9 < A < B < C < D < Z < a < z < < < < <

Text

Nutno nastavit

Option Compare Text

pklad azen znak:

0 < 9 < (A=a) < ( = ) < (B=b) < (E=e) < (=) < (Z=z)

Tip

Chcete-li testovat a hrt si s parametrem Text (Binary) v Option Compare:

If "a" = "A" Then ' zle testovat i "a" < "A" MsgBox ("Ano") Else MsgBox ("Ne") End If

Dal pouit jinde:

StrComp("JakNaExcel", "jaknaexcel", vbBinaryCompare) ' 1 StrComp("JakNaExcel", "jaknaexcel", vbTextCompare) ' 0

Vyuit opertoru Like

Praktick pouit opertoru Like naleznete v podmnkch if then else ppadn v konstrukci Select Case.

Microsoft Excel VBA - stahuj logo

Ke staen

Soubor soubor ve formtu *.xlsm soubor v pprav.


Èlánek byl aktualizován: 19.09.2020 11:07

Odmìna

Ušetøil vám tento web èas, peníze? Pomohl vyøešit problém? Jste ochotni poskytnout symbolickou odmìnu na další rozvoj? Vybrte si formu odmìny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se vìnuji od roku 2000 (od 2004 na této doménì) - V roce 2017 jsem od Microsoft získal prestižní ocenìní MVP (zatím jsem jediný z ÈR v kategorií Excel). Své vìdomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, uèím na MUNI. Tento web již tvoøím pøes 15 let. Zdarma je zde pøes 1.000 návodu, tipù a trikù, vèetnì pøes 250 rùzných šablon, sešitù.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil

" ; echo "google_adtest=\"on\"; " ; echo "" ; echo "TEST REKLAMNIHO SYSTEMU" ; } else { echo "" ; } ?>

Komente zatm nejsou

Mete bt prvnmi co zanechaj smyslupln koment.



" ; echo "google_adtest=\"on\"; " ; echo "" ; echo "TEST REKLAMNIHO SYSTEMU" ; } else { echo "" ; } ?>



Sdlejte

Pomohl Vm nvod?
Sdlejte na Facebooku, G+
LinkedIn...

Nov lnky


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Strnky o MS Office (Excel) produktu spolenosti Microsoft. Neslou jako technick podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lask 2004 - 2020 |