Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno Tabulka vyhledávání

Ahoj te, můžete mě, prosím pomoci s makrem manželka by potřebovala tabulku kde bude zapisovat údaje klientů, protože jich má hodně tak aby to vyhledávalo bohužel si dál si nevím rady.
zkouším to jak se dá, ale nejde mě to. Tak jsem si řekl, že napíši sem i když manželka moc nevěří, že by stým někdo pomohl ale já jo snad se někdo najde v dnešní době a pomůže.

Chtěl bych Vás požádat o pomoc mám Excel a makro na vyhledávání posílám přílohu

Za 1. Vyhledává to jen do K6 a nejde vyhledávat v buňkách L6 až P6

Za 2. Vyhledává to se sešitu Data pouze do 10 v poli zadám 11 a už to nevyhledá potřeboval bych to, aby to
vyhledávalo aspoň do 10000 nebo neomezeně.

Za 3. Pokud v buňce počet fotek není hodnota je možné, aby to nepsalo nic ani tu nulu.

Za 4. Je možné to napsat tak, aby to vyhledalo podle ID i podle Jména a příjmení. Př. zadám: Ka a ono to vyhledá.

Tak Vám moc Děkujeme,

Lukáš Macek

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Můžete prosím poslat tak jak to má byt v příloze. Zkouším to jak napsal MM... ale nejde mě to. Díky…
LM 29.08.2016 22:27
LM
Co zkousis. OMG. Cele makro: Sub Makro2() ' ' Makro2 Makro ' nahrané Záznamom makra ' Application.…
MM.. 29.08.2016 22:30
MM..
A teraz napises ze chces pre stlpce K - P to same co pre pocet fotek, s tou 0. Kukaj na to jak som t…
MM.. 29.08.2016 22:34
MM..
Děkuji, ale nenapíšu to jsem zvládl sám. Akorát nemůžu přijít nato aby to vyhledávalo podle jména.…
LM 30.08.2016 08:42
LM
Musíš si někde nastavit, jestli to má hledat podle ID nebo jména. Např. pro to vyhradíš buňku D3, do…
Machr55 30.08.2016 09:26
Machr55
Můžu tě poprosit abys to upravil a poslal vzor. Pokud bys chtěl můžu poslat nějakou částku za to. Dě…
LM 30.08.2016 09:54
LM
Jednoduchý nástřel, fungující makro: Sub Makro2() Dim WsData As Worksheet, WsVyhl As Worksheet Dim…
Machr55 30.08.2016 10:28
Machr55
Můžeš to poslav v příloze nefunguje mě to. Vyhledá to jen ID 1 nebo to prví jméno to další ne. Pokud…
Etkin 30.08.2016 10:52
Etkin
Tady to máš: www.uschovna.cz Vyhledá to jen ID 1 nebo to prví jméno to další ne. Doplň si do dat u…
Machr55 30.08.2016 11:13
Machr55
Ještě jednou když dám do vyhledávacího pole 2 vyhledá to, ale pokud zadám 3 a větší nenajde to nic.…
LM 30.08.2016 11:28
LM
Ještě jednou: Doplň si do dat u více lidí počet fotek a bude to hledat i další záznamy (podmínka na…
Machr55 30.08.2016 16:19
Machr55
Byl to jen příklad Počet fotek pokud je 0 tak má byt prázdná buňka ale pokud je prázdná buňka i OP n…
LM 30.08.2016 16:37
LM
No tvl, to chceš upravovat donekonečna? ::) Člověk musí mít instinkt čmuchacího psa, aby z toho pops…
Zdenál 30.08.2016 19:22
Zdenál
Nechápu raději pokud by to šlo tak vzor.
LM 30.08.2016 19:58
LM
Daj si tie slova do google a najdes vzor. Ja uz mam dost :D Alebo si pockaj na Machr55, mozno on est…
MM.. 30.08.2016 21:43
MM..
Jak bez maker ukaž??? Chytráku to se radí když to umíš.
LM 31.08.2016 10:53
LM
Ved som ti napisal jak. Aspon cist umis? Za 5minut mas vsetky informacie ktore potrebujes staci si z… poslední
MM.. 31.08.2016 15:07
MM..

Co zkousis. OMG.

Cele makro:

Sub Makro2()
'
' Makro2 Makro
' nahrané Záznamom makra

'
Application.ScreenUpdating = False
    Range("B6").Select
    ActiveCell.FormulaR1C1 = "=R[-4]C[2]"
    Range("C6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,2,0)"
    Range("D6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,3,0)"
    Range("E6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,4,0)"
    Range("F6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,5,0)"
    Range("G6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,6,0)"
    Range("H6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,7,0)"
    Range("I6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,8,0)"
    Range("J6").Select
    ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,9,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,9,0))"
    Range("K6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,10,0)"
    Range("L6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,11,0)"
    Range("M6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,12,0)"
    Range("N6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,13,0)"
    Range("O6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,14,0)"
    Range("P6").Select
    ActiveCell.FormulaR1C1 = "=VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,15,0)"
    Range("B6").Select
    Range(Selection, Selection.End(xlToRight)).Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Application.CutCopyMode = False
    Range("D2:E2").Select
Application.ScreenUpdating = True
End Sub

Skopiruj a vloz si namiesto toho co mas.

Musíš si někde nastavit, jestli to má hledat podle ID nebo jména. Např. pro to vyhradíš buňku D3, do níž zapíšeš buď 0 (= hledat podle ID) nebo 1 (= hledat podle jména). Makro pak samozřejmě musíš větvit dle hodnoty této buňky.
Ale pozor na minimálně dva problémy:
1. Když budeš hledat podle jména, nedostaneš tímto postupem do výsledků hodnoty polí, ležící vlevo od sloupce Jméno.
2. Při hledání podle jména to najde jen první záznam, který bude vyhovovat podmínce (to samé platí i pro hledání dle ID? ale tam je to očekávané chování, ID by mělo být jedinečné). Pokud bys chtěl vypsat všechny záznamy, vyhovující zadanému jménu, musel bys makro zcela předělat.

Osobně bych to makro úplně předělal - neřešil bych to zápisem vzorců do buněk, ale v makru bych přímo vyhledal řádek na listu DATA (buď podle ID nebo podle JMÉNA - dle hodnoty signální buňky) a ten pak zkopíroval na vyhledávací list. Tím bych měl vyřešenej první problém. Pak by bylo možné - v závislosti třeba na nastavení další signální buňky - buď hledání ukončit nebo v něm pokračovat a vracet všechny záznamy, vyhovující podmínce (vyřešen 2. problém).

Obávám se ale, že tyto úpravy jsou zcela nad Tvé možnosti. Pokud bys chtěl více proniknout do tajů Excelu a programování ve VBA, zcela bezkonkurenční jsou tyto stránky: Kurz Excel VBA - on-line a zdarma

Můžu tě poprosit abys to upravil a poslal vzor.
Pokud bys chtěl můžu poslat nějakou částku za to.
Děkuji

Současné makro:

Sub Makro2()
'
' Makro2 Makro
' nahrané Záznamom makra

'
Application.ScreenUpdating = False
Range("B6").Select
ActiveCell.FormulaR1C1 = "=R[-4]C[2]"
Range("C6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,2 ,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,2,0) )"
Range("D6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,3 ,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,3,0) )"
Range("E6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,4 ,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,4,0) )"
Range("F6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,5 ,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,5,0) )"
Range("G6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,6 ,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,6,0) )"
Range("H6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,7 ,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,7,0) )"
Range("I6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,8 ,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,8,0) )"
Range("J6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,9 ,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,9,0) )"
Range("K6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,1 0,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,10, 0))"
Range("L6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,1 1,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,11, 0))"
Range("M6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,1 2,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,12, 0))"
Range("N6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,1 3,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,13, 0))"
Range("O6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,1 4,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,14, 0))"
Range("P6").Select
ActiveCell.FormulaR1C1 = "=IF(ISBLANK(VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,1 5,0)),"""",VLOOKUP(R[-4]C4,Data!R4C2:R10000C16,15, 0))"
Range("B6").Select
Range(Selection, Selection.End(xlToRight)).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("D2:E2").Select
Application.ScreenUpdating = True
End Sub

Jednoduchý nástřel, fungující makro:

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

Makro vyhledává dle hodnoty v buňce D3:
0 = hledá dle ID
1 = hledá dle jména
Omezení
- Musí být zadáno celé jméno, přesně jako na listu data.
- Vyhledá vždy jen první záznam.
Pokud nic nenajde, nebo najde záznam s 0 fotkami, vymaže řádek s nálezem.

Tady to máš: www.uschovna.cz

Vyhledá to jen ID 1 nebo to prví jméno to další ne.

Doplň si do dat u více lidí počet fotek a bude to hledat i další záznamy (podmínka na nenulový počet fotek).

Pokud není v buňce záznam tak to nevyhledá

V jaké buňce? Jaký záznam? Musíš být konkrétní.

Počet fotek 0 už to žádný záznam nenajde...

Tak jsi to snad chtěl, nebo ne?

... nebo pokud datum narození to samé.

Co jako má být s datumem? Vůbec s ním v makru nepracuji.

A vynulovat vše pokud to nenajde nic.

To už dělá.

Ještě jednou:

Doplň si do dat u více lidí počet fotek a bude to hledat i další záznamy (podmínka na nenulový počet fotek).

Když zadáš číslo 3, makro zjistí, že položka č.3 má v datech nevyplněný počet fotek a jedním z Tvých požadavků bylo:

Za 3. Pokud v buňce počet fotek není hodnota je možné, aby to nepsalo nic ani tu nulu.

Ujasni si, co vlastně chceš.

Byl to jen příklad Počet fotek pokud je 0 tak má byt prázdná buňka ale pokud je prázdná buňka i OP nebo pohlaví ...... má byt na místo 0 prázdná buňka.
Tak jsem to myslel. Podle tvé opravy to funguje. OK
A když to jméno napíšu malým písmem nevyhledá to musí se to psát velkým písmem.
Dalo by seto upravit tak abych nemusel klikat na to Vyhledat!
Díky moc

Daj si tie slova do google a najdes vzor. Ja uz mam dost :D Alebo si pockaj na Machr55, mozno on este nema dost :D

P.S: inac cele to bola hovadina v tom ze sa to dalo robit aj bez makier, keby sa tie vzorce (trochu zmenene) z toho vcerajsieho makra napisali rovno do buniek, a bolo by to aj interaktivne bez tlacitka. Vcera som sa hodinu divil naco tam kto cpal to makro a tlacitko a dnes ze ci to nejde bez tlacitka :D

Ved som ti napisal jak. Aspon cist umis? Za 5minut mas vsetky informacie ktore potrebujes staci si zadat 1 slovo do googlu. Napr. to vlookup.
P.S. a makra ani excel nerobim a ani som sa s tym "umim" nenarodil, len na rozdiel od podaktorych nie som lenivy si najst za minutu informacie, aby som ti odpovedal co mas robit. Ale uz sa mi nechce, ptz tebe sa tiez nechce a potrebujes to ty a ne ja.

Zpět do poradny Odpovědět na původní otázku Nahoru