Ešte ma napadlo upraviť to tak, aby sa nepoužíval pomocný skrytý list. A pridal som Vám aj to tlačítko. Takže si vyberte, či tlačítko alebo zmena v bunke má vyvolať hľadanie. Ak tlačítko, tak zmažte procedúru Worksheet_Change v makre.
Nie je to len čisto Váš názor - ale aj môj. Už sme dvaja. Tiež si myslím, že to je čisto len cielená komercia...
Ja som Vám urobil riešenie na inom princípe.
Zadajte do bunky A1 v zošite Hľadaj.xlsm, čo sa má hľadať, a v E Vám vypíše hodnoty buniek F2 zo zošitou, v ktorých sa vyhľadávaná hodnota nachádza v rozsahu C5:C19 na liste BOM. Tak ako ste chcel.
Len si v makre najskôr zmente
Cesta = "z:\Hľadaj v zošitoch\"
na Vašu cestu (s koncovým lomítkom)
Teraz je to urobené tak, že sa spustí hľadanie pri zmene v bunke A1, ale lepšie by bolo asi toto makro priradiť tlačítku. To si už snáď dorobíte.
??? Už v predošlom dotaze som doporučoval prílohu.
Aký priemer ? Ako sa dá vypočítať priemer z údajov typu "01-A-001" ? Podľa mňa pletiete stĺpec "Kód" so stĺpcom "Výroba".
Príloha by to ako tak objasnila, včetne toho, kde máte aké vzorce.
Zvýraznenie môžete urobiť Podmieneným formátovaním, napr. takto:
-Vytvorený nový Definovaný názov "Check", vzorec si pozrite, odkrokujte.
-tento "Check" sa dá ako podmienka pre Podmienené formátovanie.
A preto je vhodné dávať prílohu...
Ešte ma napadlo, že ak budú kódy rovnaké, tak VLOOKUP zlyhá a ukáže na prvý. Potom to vyriešiť zmenou vzorca na druhú maticu. Potom je to OK.
A čo takéto niečo ? Urobil som Vám to tak, že je to nastavené najviac na 20 hodnôt v Hárok2, a dynamicky (akékoľvek množstvo) na Hárok1.
Tu som Vám urobil makro s rekurzívnou funkciou vyhľadania všetkých súborov xls a xlsx v zadanom adresári (a podadresároch). Každý otvorí, urobí RefreshAll na všetky pripojenia, uloží a zatvorí.
Treba to overiť na skúšobnej kópii Vašich dát, pretože to robím iba teoreticky. Funguje to na lokálnom disku aj na sieti.
Dnes som sa hral
Ak by ste to chcel mať s dynamicky počítanou oblasťou, a dynamickým orámovaním, tak napr. takto.
Žiaľ ak to budete chcieť tlačiť, tak to je problém, kvôli hrubému orámovaniu, ktoré inak ako takto (a makrom) nieje možné asi urobiť. V podmienenom formátovaní ide iba tenké, a preto musí byť nastavené na celú oblasť do r. 2020 hrubé orámovanie, a potom sa podmieneným formátovaním ruší podľa potreby, a to má za následok tlač prázdnych strán.
Taká vizuálna drobnosť, to komplikuje
Do F1 toho súboru, čo som Vám poslal minule, dajte:
=IF(hyplnk(E1)="";"";HYPERLINK(hyplnk(E1)))
a do Module1 pridajte túto funkciu:
Function HYPLNK(C As String) As String
Dim Cesta As String, Subor As String
With ThisWorkbook
Cesta = .Path & "\Files\"
Subor = Dir(Cesta & "*.pdf") 'Ak má ísť o hociaký typ súboru tak : Subor = Dir(Cesta & "*")
On Error Resume Next
While Subor <> vbNullString
If InStr(Subor, C) > 0 Then HYPLNK = Cesta & Subor: Exit Function
Subor = Dir()
Wend
End With
End Function
V bunke F1 bude teraz vždy hyperlink na prvý súbor, ktorý obsahuje zadaný reťazec v E1. Ak taký nieje, nebude tam nič.
Inak mali by ste sa rozhodnúť, čo tam má byť, veď to stále meníte. Ak nechcete už otvárať všetky súbory, tak to tlačítko aj s procedúrou zmažte, a nechajte len Hyperlink na prvý nájdený súbor.
Tiež som rozmýšľal načo to asi je. Napadá ma napr. že odošle niekam niečo mimo Excel, a čaká nejakú dobu na spracovanie, netuším...
Neviem či ide upravovať zošit počas Application.Wait alebo Sleep, píšem z tabletu, nemám ako overiť.
Skúste:
Parameter je String "HH:MM:SS"
Sub Pauza(T As String) ' "00:00:01"
Application.Wait (Now + TimeValue(T))
End Sub
Sub pokus()
Call Pauza("00:00:05")
MsgBox ("Po pauze")
End Sub
alebo:
Na začiatok Modulu : (jeden riadok bude označený červeným, podľa x86/x64 verzie Office - to je OK, ale 2007 tuším x64 ani nebola)
#If Win64 Then
Public Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As LongLong)
#Else
Public Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
#End If
Sub pokus()
Sleep (5000)
MsgBox ("Po pauze")
End Sub
Napr.
Poviem Vám, nič jednoduché. Teda aspoň pre mňa. Najskôr som sa pokúšal urobiť čo najviac cez maticové vzorce, ale keďže sa jedná o slovník, tak je predpoklad veľkého množstva riadkov. Urobil som to najskôr celé maticami, aj zlúčenie textu (s obmedzením na 10 položiek), ale ten prepočítavací čas bol obrovský na testovaných 23 stĺpcoch po 10 000 riadkov...
Takže moje terajšie riešenie, je také, že sa vytvoria matice iba na 2 stĺpce, a iba na potrebný počet riadkov (čím bude viac riadkov, tým to dlhšie bude trvať). Tieto matice počítajú potrebné bunky a ich priradenie, sú v skrytom liste "Temp". Aby tie matice stále neprepočítavali dopĺňané hodnoty do slovníku v RealTime, tak by som ešte aktivoval ten riadok v kóde, ktorý ich zmaže po načítaní hodnôt z nich. Vyskúšajte.
Keď matice urobia svoju úlohu a načítajú sa z nich data, ostatné sa udeje v makre.
Nechce sa mi to vysvetľovať a popisovať. Možno inokedy.
Použitie:
-Na list data si dajte slovník (stĺpec A má smerodajný počet riadkov - obmedzený zatiaľ na 10 000).
-Môžu by aj medzery, počítal som s tým.
-Stlačte tlačítko, a výsledky máte na liste "Syn-Hom"
-Ak je treba, pred stlačením tlačítka uložte súbor.
Dajte mi určite vedieť, čo a ako...
PS: Ak mi dáte reálny slovník, možno skúsim niekedy aj riešenie kompletne v makre, bez matíc, a uvidíme čo bude lepšie na 10 000 riadkoch.
Prepracovaná verzia. Pre oba listy sú v ich vlastných udalostiach Worksheet_SelectionChange konštanty OD, ktoré označujú riadok v zošite, od ktorého (vrátane) sa vyfarbuje.
Reflektovania zaškrtnutia niektorého z CheckBoxov sú z predošlej verzie zachované.
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.