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

Operátor Like - Excel VBA

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak využít operátor Like při porovnávání v Excel VBA?

Úvodem

V Excel lze využít operátor Like (možná znáte z databází a případně jiných programovacích jazyků). Já se v tomto článku zaměřím jak operátor Like funguje v Excel VBA (například v podmínkách). Pro přehlednost a možnost rozšiřování článku je rozdělen na jednotlivé kapitoly:


Trocha teorie k Like

Operátor Like v Excel VBA umožní porovnávat řetězce (texty) proti paternu (vzoru). Like v prohledávaném řetězci (textu) zjišťuje zda obsahuje požadavané znaky (ty které máte v paternu). Případně zda řetezec je v požadovaném "formátu" (obsahuje číslice na patřičných pozicích).

Pro správnou funkci je potřeba umět napsat patern (možná vám bude připomínat regulární výraz, máte částečně pravdu, jen Like je "omezený").

Pro správné použití je potřeba znát, co který znak umí:

  • * - odpovídá libovolnému počtu znaků
  • ? - odpovídá právě jednomu znaku
  • # - odpovídá číslenému znaku
  • - odpovídá znaku(ům) zadaným mezi závorkami
  • - - odpovída rozsahu znaku kdy mínus je pro rozsah a-c (písmena mezi a až c a je potřeba vložit do hranatých závorek [a-c]
  • ! - negace - !b neobsahuje b

Pokud vám chybí znaky pro začátek, konec atd. (co mají regulární výrazy), máte smůlu (musíte použít je). Like poslouží, pokud vám stačí "základní", neboli jednodušší kontrola znaků, můžete použít operátor like (lépe a rychleji se napíše). Pro pokročilejší práci už s operátorem like nevystačíte a budete se muset poohlédnout po regulárních výrazech a využít například RegExp.

Víceméně relularní výrazy se dají brát jako další jazyk, takže máte o zábavu postaráno ;)


Poznámka: Ukázky pracují s standartním nastavením, nebo-li Option Compare Binary.

Základní ukázka

První jednoduchá ukázka:

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

Zafunguje i tato druhá ukázka:

' Potřebuji zjistit, zda text začíná A (velké písmeno A na začátku textu) MsgBox ("A123C" Like "A*") ' True pokud obsahuje

Ale co když A nebude na začátku

' Potřebuji zjistit, zda text začíná A (velké na začátku textu) MsgBox ("BA123C" Like "A*") ' False - sice A v kódu je ale není první

Teď je úplně jedno kde A bude proto je patern *A*

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

Rozlišuje velká a malá písmena:

' Potřebuji zjistit, zda text obsahuje A (malé a kdekoliv v textu) MsgBox ("BA123C" Like "*a*") ' False - není malé a ' Tip - není přenastaven: Option Compare

Pokročilejší ukázky

K testům můžete využít například 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*")

Ukázka výsledku

Operátor Like v Excel VBA

Testy s Debug.Print

Pokud máte rádi Debug.Print, můžete také testovat také:

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

Výsledek v Immediate je jasný

True False

UDF - neboli vlastní funkce pro testy

Pokud si chcete vytvořit vlastní funkci, pro hrátky můžete

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

Následně pak stačí do buňky zadat vaši vlastní funkci. Samozřejmě, že se můžete odkazat na buňky ve kterých budete mít prohledávané texty a paterrny, ale to již nechám na vás.

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

Poznámka, vím, že funkce jde vylepšit a zdokonalit, ale pro pokudy naprosto dostačuje. Pokud dostačovat nebude, pozorný čtenář si sám upraví a vylepší. Svým výsledkem pak může pochlubit v komentářích.

Option compare

Příkaz (jak budou porovnávany řetězce) bude popsán samostatně o ostatními příkazy týkající se Option *. Děkuji za tip Petrovi (kdyby náhodou někomu kódy nefungovali, z důvodu jiného nastavení).

Binary

Výchozí hodnota porovnávání

Option Compare Binary

příklad řazení znaků:

0 < 9 < A < B < C < D < Z < a < z < Á < á < Ě < ě < Ř

Text

Nutno nastavit

Option Compare Text

příklad řazení znaků:

0 < 9 < (A=a) < (Á = á) < (B=b) < (E=e) < (Ě=ě) < (Z=z)

Tip

Chcete-li testovat a hrát 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ší použití jinde:

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

Využití operátoru Like

Praktické použití operátoru Like naleznete v podmínkách if then else případně v konstrukci Select Case.

Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor soubor ve formátu *.xlsm soubor v přípravě.


Článek byl aktualizován: 11.05.2019 05:58

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


Komentáře zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.







Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2019 | 872

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.