Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
jak hledat pomocí VBA a při (ne)nalezení provést akci
Potřebuji najít v zadaném sloupci hledanou hodnotu (případně jení část). Pokud je nalezeno ať se provede požadovaná akce. V našem případě se zobrazí hláška.
Sub NajdiPozadavanouHodnotu()
' *********************************************
' * office.lasakovi.com
' *********************************************
' Makro co hledá ve sloupci A
' omezeno na prvních 5 buněk
HledanaHodnota = InputBox("Zadej hledanou hodnotu:")
For I = 1 To 5
rozsah = "A" & I
With Range(rozsah)
Set FoundCell = .Cells.Find(what:=HledanaHodnota, _
after:=.Cells(.Cells.Count), _
LookIn:=xlFormulas, _
Lookat:=xlPart, _
searchorder:=xlByRows, _
searchdirection:=xlNext, _
MatchCase:=False)
End With
If FoundCell Is Nothing Then
MsgBox "Nenalezeno :("
' tady proveď požadavanou akci nebo
' tady to smaž je jen pro ověření
Else
MsgBox "Nalezeno :) " & FoundCell.Address
' tady proveď požadavanou akci nebo
' tady to smaž je jen pro ověření
End If
Next I
End Sub
Tak a víme, která buňka obsahuje hledaný výraz.
Článek byl aktualizován: 19.09.2020 11:07
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.
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ů.
Přidáno: 05.11.11 15:18
Pro hledání řetězce nebo části řetězce používám funkci InStr. Funkce prohledá text a porovná jej se zadáním a vrátí pozici, kde se řetězec nachází. Pokud text nenalezne, vrátí nulu: Sub HledejHodnotu() r = ActiveSheet.UsedRange.Rows.Count HledanaHodnota = InputBox("Zadej hledanou hodnotu:") PocetNalezeni = 0 For i = 1 To r If InStr(Cells(i, 6), HledanaHodnota) <> 0 Then 'něco udělej PocetNalezeni = PocetNalezeni + 1 End If Next i If PocetNalezeni = 0 Then MsgBox "Nebylo nalezeno nic, co by obsahovalo " & HledanaHodnota If PocetNalezeni <> 0 Then MsgBox "Bylo nalezeno " & PocetNalezeni & " výskytů " & HledanaHodnota End Sub Takto zapsaná funkce je Case Sensitive, pokud ji napíšeme takto: ... If InStr(1, Cells(i, 6), HledanaHodnota, 1) <> 0 Then 'něco udělej PocetNalezeni = PocetNalezeni + 1 End If ... pak velká písmena ignoruje...
Přidáno: 26.03.12 08:52
Dobrý den, potřeboval bych vědět, zda se dá v Excelu přenést do (jakékoli) buňky (systémový)údaj o velikosti souboru (sešitu)tak, aby tento údaj mohl být dále využíván.
Přidáno: 30.03.12 19:56
Odpovím si sám :-) - dá. Např. takto: velikostsouboru = "C:\PROGRAMY\ZKOUŠKA.xlsm" Range("l3").Value = FileLen(velikostsouboru)
Přidáno: 19.06.12 14:20
Dobrý den. Potřeboval bych poradit. Mám excelovský soubor 2010 čítající něco přes 10 000 stránek. Na stránce je vždy jedna tabulka s daty s tím, že některé další stránky mezi těmi s tabulkami jsou prázdné. Potřeboval bych vytisknout jen ty stránky s tabulkami a ty prázdné netisknout. Mohl by mi někdo poradit, jak na to? Předem děkuji.
Přidáno: 21.06.12 12:12
To Mirah: Využít VBA.
Přidáno: 19.07.12 22:29
Dobrý den, potřebuji vyhledat v tabulce zadanou hodnotu a následně celý řádek tabulky, případně více řádků obsahující danou hodnotu, překopírovat jinam byť je hodnota na jakékoliv pozici v řádku. Díky
Přidáno: 20.07.12 11:27
To Jan Bartoš: Nutno použít VBA kód (makro).
Přidáno: 25.04.13 09:48
Dobrý den, chtěl bych se zeptat zda je mozno pres VBA naprogramovat nejaky kod, ktery by nasel v XML souboru pozadovane udaje. Napr. v sloupci A by byli jmena od A2 az A10. A ve sloupci B by se vypsalo zda je jmeno v souboru nebo neni. Dik moc za jakoukoliv radu
Přidáno: 25.04.13 16:07
To Mika Patenen: Načíst XML a pak jen hledat viz kód výše. Info např zde http://msdn.microsoft.com/en-us/library/office/dd819387%28v=office.12%29.aspx#odc_xl2007__EditingExcelOOXMLDatawithVBA_FindingDatainaWorksheet
Přidáno: 07.07.14 16:37
Dobrý den, při skrývání sloupců/řádků funkce Find nenalézá? Také mi Find najde datum pouze když hledaná hodnota má typ "String". Jinak ji z nějakého důvodu ignoruje. Lze tato omezení nějak obejít? Děkuji za odpověď, Veronika
Přidáno: 14.12.14 18:13
Dobrý den, prosím, nemohl by mi někdo pomoc dát dohromady ve VBA předpis pro vyhledávání - něco jako je funkce vlookup, ale když chci najít více hodnot a vypsat je pod sebe do sloupečku? příklad: budu mit v sloupci A seznam zaku a v sloupci B z jake jsou tridy formou 1.A, 1.B,..... S tim, ze z jedne tridy muze byt vice zaku. A ja kdyz zadam do nejake bunky na dalsim liste 1.A tak potrebuji, aby mi to vyhodilo do bunek pod sebe vsechny ty zaky z te tridy. Děkuji, Z.
Přidáno: 17.12.14 09:29
To Zdenča176: Má to byť naozaj cez VBA? Ja by som to asi riešil kontingenčnou tabulkou...
Přidáno: 19.12.14 12:29
To Zdenča176: ...alebo by stačilo použiť filter
Přidáno: 07.05.15 09:54
Potreboval by som pomocou tvojho kodu najst naprikliad čast slova v jednej bunke a potom vypisat to slovo plus 4 znaky ktore po nom nasleduju. napriklad tabulka sdsd_dr253_gg suyd_dr263_gf sdsd_dr86_gg suyd_dr263_dg sdsd_dr791_gg suyd_dr284_gfg hladam "dr" a ten mi vypiše vedla do stlpca s niekolkimi znakmmi naviac "dr253_"
Přidáno: 26.05.15 08:28
Dobrý den, mám ve sloupci písmena z rozsahu (a-z;A-Z). V každém řádku je jen jedno. Potřebuji ve VBA najít jaké je použito jako poslední, a do předem definované buňky zapsat následující znak (písmeno).
Přidáno: 15.12.15 15:08
Zdravím, mám na Listu 1 pár údajů jako číslo zakázky, výrobek číslo atp. ve sloupci J mám seznam 5 textových hodnot přičemž jedna je Vyřešeno-Oprávněná Reklamace, pokud člověk zatrhne tuto hodnotu chtěl bych aby se celý řádek (číslo zakázky, výrobek číslo...atp) zapsal na další list věděl někdo jak na to ? (v konečné fázi úplně nejlepší by bylo aby se řádek po zvolení v seznamu hodnoty vyřešeno propsal na další list a nešel upravovat, až třeba po zvolení jiné hodnoty ze seznamu by zase šel upravit (aby např když člověk zapomene nějákou hodnotu z listu zapsat třeba číslo výrobku, tak aby musel pro opravu odkliknout jinný stav než vyřešeno kvůli integritě a kompletu dat. můj mail: Depo8@seznam.cz
Přidáno: 15.01.16 18:52
Dobrý den, potřeboval bych poradit s úpravou VBA kódu pro hledání ve sloupci A, který jste uvedl. Chtěl bych, aby makro vložilo hodnoty buněk z jiného listu o x řádků níže, než byla adresa buňky, ve které byla nalezena požadovaná hodnota. Děkuji.
Přidáno: 15.01.16 19:48
Oprava. " ..který jsi uvedl." ;-)
Přidáno: 15.01.16 20:36
Omlouvám se za spam, ale po prohledávání zdejších článků jsem našel co jsem hledal. FoundCell.Offset(5,0) = ":)". Vepíše smajlika 5 řádků pod adresu hledané hodnoty v buňce. Díky za články. Posílám DONATE
Přidáno: 20.09.16 15:48
Potřebuji pomoct, když potřebuji zapsat hodnutu z jednoho listu podle dvou kritérii, jeden sloupec město další sloupec ulice. Děkuji
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
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 - 2024 |