Zkusím vytvořit obdobu souborů.
Ano, jedná se o souvislou oblast dat, nejsou přerušena prázdnými řádky ani sloupci.
ScreenUpdating mám prozatím v originálu zakomentovaný, funkce pro uložení prozatím obsahuje i ladící procedury (proto její volání),
Ano, zapisování hodnot lze v některých případech ukládat v poli, ve většině však ne - nejsou souvislé oblasti.
Proměnné jsou definovány, jen sem do ukázky nebyly definice vloženy.
Zdravím,
potřeboval bych nasměrovat, jak zrychlit zpracování makra. Bohužel nemohu uvést konkrétní příklad.
Sešit1 obsahuje zdrojové hodnoty
Sešit2 obsahuje doplňkové hodnoty
Funkcí SVYHLEDAT byly doposud ručně dotahovány data do sešitu1 do desítek sloupců ze sešitu2 (nepohodlné).
i = 2
While Cells(i, "B") <> Empty
row = Najdi_Data(wrkb_1, Cells(i, "B"))
If row = Empty Then
value = "#NENÍ_K_DISPOZICI"
Call Uloz_Data(i, "D", value)
Call Uloz_Data(i, "E", value)
Call Uloz_Data(i, "F", value)
Call Uloz_Data(i, "G", value)
Call Uloz_Data(i, "S", value)
Else
Call Uloz_Data(i, "D", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "D"))
Call Uloz_Data(i, "E", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "E"))
Call Uloz_Data(i, "F", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "B"))
Call Uloz_Data(i, "G", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "C"))
Call Uloz_Data(i, "S", Workbooks(wrkb_1).Worksheets("List1").Cells(row, "F"))
End If
i = i + 1
Wend
Private Sub Uloz_Data(row, col, value)
Cells(row, col) = value
End Sub
Private Function Najdi_Data(filename, value)
wrkb_act = ActiveWorkbook.Name
If Not Intersect(Cells(2, 2), Range("B:B")) Is Nothing Then
With Workbooks(filename).Worksheets("List1")
Set Nalezeno = .Cells.Find(what:=value, after:=Cells(2, 2), LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False)
End With
If Not Nalezeno Is Nothing Then Application.Goto Nalezeno, True
End If
If Not Nalezeno Is Nothing Then
Najdi_Data = Nalezeno.row
End If
Workbooks(wrkb_act).Activate
End Function
Při stovkách řádků lze použít, ovšem při tisících řádků je již časově náročné.
Jak lze optimalizovat a zrychlit toto makro?
Děkuji za rady.
Asi jste nečetl odkazy, které jsem uvedl, že?
Stačí si upravit funkci pro Vaše potřeby.
Obdoba již zde byla řešena.
Požadavek na součet a počet nekladných čísel a pak i kladných >0.
http://wall.cz/index.php?m=topic&id=28314
http://wall.cz/index.php?m=topic&id=27787
P.S.
To, že má někdo titul před jménem a třeba i za jménem ještě neznamená, že dokáže logicky uvažovat.
Navíc škola před blbostí nechrání.
PŘEZ pomocnou tabulku
je správně
PŘES pomocnou tabulku (neboli pomocí pomocné tabulky)
Ještě, že je ten češtin tak ohebný.
Osobně spíše tipuji, že kopírujete funkci z řádku.
Pokud by jste kopíroval buňku se vzorcem, "přepočet" vzorce by se provedl automaticky, pokud je relativně odkazováno.
Průzkumník je na to moc složitý?
Také můžete použít jiný vhodný souborový manažer, buď free nebo placený.
Nějak mi nedocházejí souvislosti, proč mazat obrázky z disku pomocí Excelu.
A to nepomohl ani Google???
i s příkladem
oficiální podpora MS
Pokud ani tohle nepomůže, tak už asi nic...
Např. pomocí pomocného sloupce, nebo makrem.
Co to je rozsah buněk? Je to jeden sloupec, dva a více sloupců?
Škoda, že takovíto tazatelé NIKDY nevloží přílohu s požadavkem a ukázkou toho co chtějí...
To ze zoufalství ... Po reakcích zadavatele a jeho "přesnému" zadání to pro něj snad bude k něčemu, když neví jak to zapsat.
Pro mne by to nebylo řešením...
Tak jste to zjednodušil...
Ze zadání je jasné pouze oblast kopírování (ta se předpokládám může měnit) a to, že se má sloupec A zkopírovat do sloupce A a sloupec B se má zkopírovat do sloupce F.
Asi jste nečetl příspěvek Vovky, že?
Pokud je jedno co se zbylými 4 sloupci výběru, pak si opravdu spusťte makro a kopírujte sloupec po sloupci, makro vypněte a podívejte se na výsledek.
Tam budete v první řadě vědět jak to máte zapsat.
Doufám, že je to dostatečně jasné.
Ono by stačilo, kdyby zadavatel reagoval na doplňující dotazy a ne v každém novém příspěvku měnil požadavky oproti původnímu zadání.
Nejprve chce aby se přehodily sloupce,
pak chce aby se přehodily bez kopírování,
pak chce aby se vybraná oblast kopírovala od A1 - tedy tomu rozumím tak, že se vše kopíruje tak jak je bez jakékoliv změny.
Prostě a jednoduše nevím co vlastně zadavatel požaduje.
Honza123456 napsal/a:
... Co je myšleno "způsobem změny v uspořádání sloupců?" ...
Když se Vám to podařilo, proč zde není příloha jak se to podařilo?
Jenže by jste potřeboval co? Přehodit sloupce jak, kolik, v jakém pořadí, případně jakým pravidlem je přehazovat, ...
Určitě Vám může někdo poradit, ale musí vědět co poradit...
Pak jste změnil přílohu.
Ve funkci použijte buňku Gx jako textovou hodnotu:
CONCANTENATE(), HODNOTA.NA.TEXT() nebo PROČISTIT() - lokalizovaná verze funkcí.
Sloupec Cx totiž převádíte do textového formátu funkcí PROČISTIT(Bx).
Nesprávné použité argumenty funkce.
Pozorně si přečtěte popis k funkci ($B$4:$D$5 je špatně) a také nezapomeňte, že v některých případech převádíte číslo na text. Tedy ve sloupci G musíte mít textové hodnoty.
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.