Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  114 115 116 117 118 119 120 121 122   další » ... 302

To Vaše makro nieje vhodne urobené. Ide bunku po bunke, teda pomaly. Keďže nemám súbory, tak som sa len pokúsil uhádnuť, čo v tom makre robíte, a prerobiť to, aspoň z časti na čo najviac hromadných vecí, aby to bolo rýchlejšie (oblasti, polia). Každopádne to skúste VÝHRADNE NA KÓPII DÁT! Naozaj potrebujete kopírovať formáty buniek ? Pretože ak sú dáta rovnakého typu vo všetkých stĺpcoch a v celých stĺpcoch, tak sa formáty nemusia kopírovať, ale predformátuje sa ten stĺpec. Z toho vyplýva, že by sa mohlo vynechať pomalé kopírovanie, a urobiť to celé cez rýchle polia. A najlepšie by asi bolo, aby dáta vydolovalo PowerQuery. Tam by ale bolo asi potrebné urobiť v PowerQuery cyklus, a v tom M-code nie som zatiaľ taký zbehlý. Bude ale potrebné priložiť nejaké zdrojové ukážkové súbory.
Vyskúšajte.

Typ dát v jednotlivých stĺpcoch? Rozsah dát? Dizajn formu? Čo znamená "výsledky jednotlivých sloupců" ??? Každý stĺpec sa má vo výsledku radiť samostatne (teda nie celý riadok B:H ak je zhoda v E)? Príloha? ...

Sub HL()
Dim Cesta As String, Bunka As String
With Worksheets("Souhrn")
Cesta = Replace(Replace(.Range("Q2").Value, "[", ""), "]", "")
Bunka = Replace(Replace(.Range("O2").Value, "[", ""), "]", "")
.Range("N2").Hyperlinks.Add Anchor:=.Range("N2"), Address:=Cesta, SubAddress:=Bunka, TextToDisplay:="Link"
End With
End Sub

Toto je len ukážka. Rovno v tom makre čo máte, počítajte pozíciu bunky (asi cyklom alebo neviem ako to máte) v .Cells() a vkladajte.

Maticový

To bude takto. Vy ste nenarazil na obmedzenie dĺžky vzorca, lebo žiaden vzorec nevkladáte. Chýba "=". Vy vkladáte hodnotu, ktorá môže byť ešte dlhšia (32KB), lenže ste narazil na maximálny počet znakov v riadku VBA editora. Ak spojíte 2 také premenné alebo na konci pridáte " _" a budete pokračovať na novom riadku, tak to tam vašim "nevzorcovým" spôsobom kľudne vložíte - ako hodnotu.
Samozrejme ten Váš plný riadok musíte najskôr o niečo skrátiť aby tam to " _" vošlo.

Samotný vzorec VBA má obmedzenie 255 znakov. Mne ide teraz ako pokus max 258, ale to je tým, že nevieme ako presne interne interpretuje VBA dvojité úvodzovky "" a =.

Riešením by mohlo byť použitie definovaných názvov, ktoré môžete vytvárať v makre, a po použití ich zmazať. Ale netestoval som...

Áno šlo by to, stačí pridať pár riadkov. Stálo by za to, to skúsiť aj cez ten ArrayList alebo Evaluate. Každopádne, ako tak na to pozerám, zase sa potvrdzuje že výkonná časť kódu je rovnako dlhá ako obslužná (kontrola riadkov, načítanie dát, zápis dát, msgbox, mazanie starých výsledkov ...), a to ešte nieje urobené, ako blbuvzdorné, pototm tej omáčky bude pomaly viac ako výkonného kódu. :)

lugr napsal/a:

Dobrý den elninoslov,

snažím se aplikovat Vaše super makro do mé tabulky, ale nedaří se mi to. Možná je to tím, že jsou mezi daty mezery.Příloha: 46106_duplicity.zip (423kB, staženo 5x)

Tu máte 2 rôzne varianty. Všetky duplicity, a aj jedinečné duplicity.

Tu máte prerobené načítanie dát zo súboru GPS. Súbor nemusíte otvárať, makro pripraví potrebné vzorce na dolovanie dát zo zatvoreného súboru, a iba tých ktoré požadujete do tabuľky. Akurát neviem čo potom s nimi. Ako sa spracovávajú v tej sumárnej tabuľke, keď je za deň X jázd, ale iba 1 riadok, čo sa má kam zapisovať pri tankovaní atď.

Dám len nástrel riešenia, odchádzam. Keď to nedáte, tak možno keď prídem Vám to tam zakomponujem.
Sub pokus()
Dim Text As String, S() As String, Litrov As Single, Suma As Single
Text = "2.1.2020 Tankování Litrů: 32,45, Cena za l : 1,24 EUR, Cena celkem: 40,37 EUR"
S = Split(Replace(Text, ",", "."), ": ")
Litrov = Val(Split(S(1), ". ")(0))
Suma = Val(Split(S(3), " EUR")(0))
End Sub

Dá sa to aj maticovými vzorcami...

Pošlite súbor Excelu, nie obrázok. Nemám predstavu takto dobrú predstavu ako vyzerajú a kde sú dáta. Zmažte nepotrebné a citlivé dáta, len zachovajte danú časť makra a vymyslené údaje na miestach presne kde sú, a kde potom majú byť. Celé Know-how nepotrebujem :)
Nevidím problém, prečo by to nemalo ísť.

Power Query sa mi zdá na toto celkom dobré riešenie, bez makra. Na PQ je perfektný odborník "mepexg", ale toto podľa mňa zvládnete aj Vy. Skúste si to zatiaľ bez parametru umiestnenia.
Nový súbor - Údaje - Získať údaje - Zo súboru - Zo zošita - vyberte ho - Importovať - označte zdroj.xlsx (budú pod ním všetky listy) - Upraviť - v hlavičke stĺpca Data je dvojšípka - OK - označte posledné 3 stĺpce a dajte [Domov - Odstrániť stĺpce] - Zavrieť a načítať.
A potom si už iba vedľa dajte cez KT vypísať jedinečné položky z prvého stĺpca, tak, že v KT zrušíte všetky označenia, súčty a pod...

A ten parameter umiestnenia - vzorcom treba zistiť aktuálne umiestnenie súboru a z neho zdroja. Toto musí byť objekt Tabuľka, nie iba tabuľka. To môžete opísať z môjho v prvom riadku PQ kódu, ku ktorému sa dostanete takto:
-stojte na PQ dotaze - Dotaz - Upraviť - Rozšírený editor - upravíte Váš prvý riadok.

Ten koniec má byť takto:
With Sheets("Sammelliste").Cells(Radek, 2).Resize(, 11) ' Cílové buňky
.Formula = Zdroj & "B3" ' Zdrojové buňky
.Value = .Value
End With

Môžete použiť Application.Transpose() namiesto cyklu. Má to iba obmedzenie na 32768 položiek. Veľkosť poľa zistíte pomocou Ubound() a Lbound(), prípadne veľkosť oblasti pomocou Rows.Count a Columns.Count. Skúste priložiť príklad v súbore.

CountIf nie, ale Match áno. Skúste mu dať zožrať Date, dostanete chybu. Nemusí to byť Double, môže to byť CLng(), len ja som zvyknutý viac na Double, keďže môže obsahovať aj čas.


Strana:  1 ... « předchozí  114 115 116 117 118 119 120 121 122   další » ... 302

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Helios iNuvio

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.

On-line nástroje