

Excel vyhledávání
Je možné, aby podle vzoru v buňce B3 vyhledalo buď podle ID nebo Jména a přijmení abych ručně zadal ID nebo to Jméno:
=IFERROR(KDYŽ(JE.PRÁZDNÉ(B3);INDEX(TabulkaData[ID] ;POZVYHLEDAT(D3;TabulkaData[Jméno a příjmení];0));B3);"")
Děkuji
Ano, je to možné. Musíš si nejprve otestovat, zda vyhledávací pole obsahuje číslo, pak budeš hledat dle ID, jinak budeš hledat dle jména a příjmení
Aha, proč to řešíš pod jiným jménem v jiném vláknu? Už jsem Ti tam poslal fungující makro.
To to je sešit bez makra bez makra.
Protože nevím jak to makro k tomu přidat.
Vytvoření nebo odstranění makra
Přidání tlačítka a přiřazení makra v sešitu
Stačí?
Je to bez makra pouze vzorec.
Je možné, aby podle vzoru v buňce B3 vyhledalo buď podle ID nebo Jména a přijmení abych ručně zadal ID nebo to Jméno:
=IFERROR(KDYŽ(JE.PRÁZDNÉ(B3);INDEX(TabulkaData[ID] ;POZVYHLEDAT(D3;TabulkaData[Jméno a příjmení];0));B3);"") potřebuji to jen upravit víše uvedený vzorec bohužel nevím jak zkoušel jsem to a nic nefunguje.
No, podle mě Ti to funguje - když zadám ID, vyhledá to ID. Když ID vymažu a zadám jméno, vyhledá to jméno. Tak v čem je teda problém?
A vůbec - nechceš to řešit dohromady s tím makrem? Respektive prvně jeden způsob (třeba s makrem), pak druhej (bez makra)?
Když do B3 zadám 1 prostě číslo tak to vyhledá, ale pokud zadám do stejné buňky jméno už to nevyhledá.
Aby to vyhledalo podle jména musí to zadat do buňky D3.
Což je zbytečné mít dvě buňky. Stačí jedna na obě jen nevím jak upravit ten vzorec.
upravil jsem to s využitím funkce JE.ČÍSLO a kombinací podmínek logickou funkcí NEBO. Vzorec v B2 pak vypadá takto (mě funguje):
Můžete to prosím upravit tak aby pokud je prázdná buňka to neukazovalo 0 jen prázdnou buňku.
???
... mi to funguje, když je B3 prázdná, nikde nulu nevidím: WSUk.
Posílám obrázky.
Dělá to nule.
Aha, už rozumím. Pro příště - musíš napsat přesně, kde to co dělá nebo nedělá.
Máš dvě možnosti:
1. Obalit vzorce v buňkách C6 až P6 podmínkou:
2. Nastavit formátování v Excelu tak, aby nuly nebyly vidět: Zobrazení nebo skrytí nulových hodnot (několik možných způsobů).
Pokud to udělám víše uvedeným vzorcem už to nejde vyhledat podle jména ale jen podle čísla.
Dělám to také výše uvedeným vzorcem a funguje mi oboje vyhledávání: t0Lb.
Asi jsi něco někam napsal blbě. Co ta druhá varianta?
Díky udělal jsem to znova a jde to. Tak jak má.
Ten stejný vzor, ale s makrem
Makro je dobré vyhledává jak podle ID i Jména, ale pouze do 2 ID 3 už to nenajde.
Potřebuji to hledat i dál ne jen do 2 v datech.
Pokud Počet fotek je uvedeno číslo vyhledá to i 10000 ale pokud Počet fotek není tak to nevyhledá nic ani ID 1 nebo 2.
Mělo to vyhledat a pokud v dané buňce není záznam tak buňka má byt prázdná ať už se jedná počet fotek nebo datum ....
Sub Makro2()
Dim WsData As Worksheet, WsVyhl As Worksheet
Dim VyhlCo As String
Dim VyhlKde As Integer, VyhlSloupec As Integer
Dim VyhlRadek As Integer, AktRadek As Integer
Dim PocetFotek As Integer
Application.ScreenUpdating = False
Set WsVyhl = ThisWorkbook.Worksheets("Vyhledávání")
Set WsData = ThisWorkbook.Worksheets("Data")
VyhlCo = WsVyhl.Range("D2") ' Vyhledat co
VyhlKde = WsVyhl.Range("D3") ' Vyhledat kde (0 = ID, 1 = JMÉNO)
VyhlRadek = 0 ' Předpokládám, že nic nenaleznu
PocetFotek = 0 ' Počet fotek vynuluji
AktRadek = 4 ' Aktuální řádek v datech
WsData.Activate
If VyhlKde = 0 Then ' Vyhledání v poli ID
VyhlSloupec = 2
Else ' Vyhledání v poli JMÉNO
VyhlSloupec = 4
End If
Do
If VyhlCo = WsData.Cells(AktRadek, VyhlSloupec).Value Then
VyhlRadek = AktRadek ' Našel jsem shodu na aktuálním řádku
PocetFotek = WsData.Cells(AktRadek, 10).Value
Exit Do ' Končím cyklus
End If
AktRadek = AktRadek + 1 ' Není shoda, jdu na další řádek
Loop While AktRadek < 10000 ' Opakuji až do řádku 10 000
If (VyhlRadek > 0) And (PocetFotek > 0) Then ' Našel jsem, počet fotek je nenulový
WsData.Range(Cells(VyhlRadek, 2), Cells(VyhlRadek, 16)).Select ' Vyberu řádek
Else ' Nenalezeno, vyberu první (prázdný) řádek
WsData.Range(Cells(1, 2), Cells(1, 16)).Select
End If
Selection.Copy ' Vybraný řádek zkopíruji na vyhledávací list
WsVyhl.Activate
WsVyhl.Range("B6").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
WsVyhl.Range("D2").Select
Application.ScreenUpdating = True
End Sub
OK.
Ten další příspěvek s makrem smaž, necpi ho 2x do různejch témat - aneb nedělej v tom ještě větší bordel, než už jsi udělal
Makro funguje dobře.
Akorát
když to jméno napíšu malým písmem nevyhledá to musí se začáteční písmenu musí byt velké.
Dalo by seto upravit tak abych nemusel klikat na to Vyhledat! Zrovna to vyhledalo.
Popřípadě když zadám jméno a bude v seznamu 2x aby to vyhledalo obě.
Přeposílám vzor.
Třeba něco takového vzor Vz02 akorát se všemi mýma daty co je ve vzoru Vz01
Pokud tak můžu něco málo zaplatit.
Díky moc
Prosím pomozte se vzorem ještě s tím to.
Moc Děkuji
Chjo neviem ze co mas teraz este ale v tom makre je nejake
If VyhlCo = WsData.Cells(AktRadek, VyhlSloupec).Value
a chces aby to nerozlisovalo pismena, tak si obe strany porovnavania prevedies na male alebo velke pismena predsa.
If UCase(VyhlCo) = Ucase(WsData.Cells(AktRadek, VyhlSloupec).Value)
preco si nedas to slovo do google jak som ti pisal v inej otazke?
A co sa tyka toho vyhladavania bez tlacitka tak uz ti bolo pisane v inom threade mas pouzit Worksheet_Change mas tam aj link s vysvetlenim, neviem preco si to neprecitas ani nezadas to slovo do google a necitas dalej ine najdene vysledky.
Ides do editora tych VBA makier (vraj alt+f11), poklikas na ten svoj prvy list (v lavom stlpci v editore makier kdesi vidis aj listy), lebo chces aby sa to spustalo pre zmeny v tom tvojom prvom liste, a tam potom do kodu pre ten list napises
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Makro2() alebo sem skopiruj obsah toho makra
Application.EnableEvents = True
End Sub