Ahoj, tak jak jsem slíbil, posílám návrh.
S pozdravem
M@
Zkuste to takto:
Public Sub hledej()
Dim retezec As String
retezec = InputBox("Hledaný výraz", "Hledej")
Dim radek As Single
radek = 2
For Each cell In Range("A:A")
If InStr(1, cell.Value, retezec, vbTextCompare) > 0 Then
List1.Rows(cell.Row).Copy
List2.Rows(radek).PasteSpecial xlPasteAll
radek = radek + 1
End If
Next
End Sub
zkopíruje to celý řádek a prohledávání už není definováno výběrem, ale sloupcem A.
M@
Ahoj,
co třeba vzorec:
=HYPERTEXTOVÝ.ODKAZ("C:\Tabulka\"&C1&".pdf";C1)
šlo by to? :-)
M@
Ahoj, zkus sem hodit nějaká ta data a já zkusím zabádat :-), neříkám, že hned ale zkusím to :-). Vypadá to jako pokus o nahrazení SQL dotazu v excelu.
M@
Ahoj, tak já to teda zkusím popsat :-).
retezec = hledaná hodnota
radek = pocatecni radek listu dva kam se budou zapisovat hodnoty je-li podminka splnena
For each cell in selection = smyčka která prejede buňku po buňce v označené oblasti buňek (místo selection lze nastavit konkrétní range).
Instr = funkce pro vyhledání textového řetězce v textu
1 = počáteční znak odkud prohledávat
cell.value = prohledávaný text
retezec = viz výše
vbTextCompare = porovnávání textu
funkce Instr v případě nalezení řetězce v textu vrátí číslo odpovídající prvnímu nalezenému výskytu (pozice prvního znaku řetězce v prohledávaném textu), proto > 0, kdyby bylo =0 zanmená, že ho nenašel.
následující řádek zapíše do listu 2, sloupce 1 na řádek = radek hodnotu prohledávané buňky je-li splněna podmínka výše.
Je-li zapsáno přičte jeden řádek, do kterého bude v příštím cyklu smyčky zapisovat, bude-li splněna podmínka.
End if = konec podmínky
Next = jdi na další buňku výběru
S pozdravem
M@
Jeden příklad:
Public Sub hledej()
Dim retezec As String
retezec = InputBox("Hledaný výraz", "Hledej")
Dim radek As Single
radek = 2
For Each cell In Selection
If InStr(1, cell.Value, retezec, vbTextCompare) > 0 Then
List2.Cells(radek, 1) = cell.Value
radek = radek + 1
End If
Next
End Sub
M@
Vzorec mě žádný nenapadá, leda ho vytvořit makrem, ale to by v případě 100 lisů byl problém, když by vzorec obsahoval řekněme 50x =List2!A1+List3!A1, asi by se to ani nevešlo :-), takže bych to řešil makrem a natvrdo (makro spočítá a vloží hodnotu):
Public Sub pocitej()
Dim cislo As Single
cislo = 0
For i = 1 To ThisWorkbook.Sheets.Count
If Sheets(i).Name <> "aktualni" And Sheets(i).Cells(1, 2) > 100 Then cislo = cislo + Sheets(i).Cells(1, 1)
Next
Sheets("aktualni").Cells(1, 1) = cislo
End Sub
Snad to pomůže.
M@
Ahoj,
aby číslo co vidíš bylo vidět i v řádků vzorců nebo v editaci buňky, tak by to muselo být zadáno jako text vyexportováno např. s apostrofem '3892:32:00. Takhle si to excel přebere jako datum, o kolik dní je dané číslo větší než počátek systémového data.
Pokud s tím chceš dál pracovat, tak jak to tam je, mi to přijde vyhovující - viz. příloha.
M@
Ono to zas takový monstrum jak to vypadá není :-)
Kdybych použil mezivýpočet, tak mám
vzorec 1 (označit poslední a předposlední "\"):
=DOSADIT(DOSADIT(B1;"\";"#pp";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1);"\";"#po";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1)
vzorec 2 (získat z výsledku vzorce 1 požadovanou hodnotu):
=KDYŽ(DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))<=1;"";ČÁST(B48;HLEDAT("#pp";B48;1)+3;HLEDAT("#po";B48;1)-(HLEDAT("#pp";B48;1)+3)))
což jsou krátké vzorce :-).
To monstrum vzikne tím že nechci použít mezivýpočet, tudíž ve vzorci 2 místo odkazu na výsledek (B48) musím vždy napsat celý vzorec 1, tzn. 4x.
M@
Tak jsem si řekl, že když to zvládne někdo na zahraničním foru, že to snad zvládnem taky a tak jsem si udělal rozbor toho vzorce, česky je to:
=KDYŽ(DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))<=1;"";PROČISTIT(ČÁST(DOSADIT(B1;"\";OPAKOVAT(" ";100));(DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1)*100;100)))
a došel jsem k závěru, že není až tak úplně univerzální a tak jsem si zkusil napsat vlastní vzorec, bylo to teda tak na hodinu přemýšlení :-), ale výsledek je na světě (trochu delší než ten ze zahraničního fóra):
=KDYŽ(DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))<=1;"";ČÁST(DOSADIT(DOSADIT(B1;"\";"#pp";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1);"\";"#po";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1);HLEDAT("#pp";DOSADIT(DOSADIT(B1;"\";"#pp";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1);"\";"#po";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1);1)+3;HLEDAT("#po";DOSADIT(DOSADIT(B1;"\";"#pp";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1);"\";"#po";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1);1)-(HLEDAT("#pp";DOSADIT(DOSADIT(B1;"\";"#pp";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1);"\";"#po";DÉLKA(B1)-DÉLKA(DOSADIT(B1;"\";""))-1);1)+3)))
V příloze přikládám i rozbor obou vzorců - třeba se někomu bude hodit.
S pozdravem
M@
Zas to s tou chválou nepřehánějte :-), aby mi to nestouplo do hlavy :-).
Ikdyž přiznávám, potěší to :-).
S pozdravem
M@
Ahoj, ten jeden řádek co jsem tam dopsal skoro nestojí ani za řeč :-)), rád pomůžu, když vím jak :-).
M@
Pokus č. 2 :-)
M@
Tak jo :-).
Je to v příloze.
S pozdravem
M@
Možná jsem to pochopil trochu jinak, ale nějaký nástřel v příloze :-)
M@
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
Používáte podnikový systém Helios iNuvio? Potřebujete pomoci se správou nebo vyvinout SQL proceduru? Více informací naleznete na stránce Helios iNuvio.