Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  130 131 132 133 134 135 136 137 138   další » ... 289

Prvý odkaz na Google, vzorec:
=MID(CELL("filename";A1);FIND("]";CELL("filename";A1))+1;255)
=ČÁST(POLÍČKO("filename";A1);NAJÍT("]";CELL("filename";A1))+1;255)

Inak makro sa dá upraviť takto:
Function JmenoListu() As String
Application.Volatile
JmenoListu = UCase(List1.Name)
End Function

Prečo musí byť UCase ?

Do prílohy som pridal ešte zistenie názvu iného listu vzorcom aj makrom.

No môžete použiť Podmienené Formátovanie s pomocou UDF:
Function ISFILTERED(Col As Range) As Boolean
Dim i As Long, iCol As Long
Application.Volatile
iCol = Col.Column
With Col.Parent.AutoFilter
For i = 1 To .Filters.Count
If .Filters(i).On And i = iCol Then ISFILTERED = True: Exit For
Next i
End With
End Function

Alebo obdobne to jednorázovo robiť pri WorksheetChange alebo Calculate naraz vyfarbením. Ale pri tomto veľký pozor, už som to tu videl. Vy keď vyfarbíte makrom stĺpec, prídete o Vaše doterajšie farby. To by sa muselo zisťovať po jednom, ktorá bunka má akú farbu, a tieto info niekde ukladať, a potom ich po jednom naspäť vyfarbiť. S takým zošitom by ste pracovať nechcel - bol by veľmi sekaný.

Aj toto PF neviem ako bude fungovať pri početnom filtrovaní.

Na ten časovač by sa dala použiť API, deklarácia možno takto +- autobus (netestoval som na inom ako E2019 x64 + W10 x64)
#If Win64 Then
#If VBA7 Then
Declare PtrSafe Function GetTickCount Lib "kernel32" () As LongPtr
#Else
Declare PtrSafe Function GetTickCount Lib "kernel32" () As LongLong
#End If
Dim TimeMS As LongLong
#Else
Declare Function GetTickCount Lib "kernel32" () As Long
Dim TimeMS As Long
#End If

TimeMS = GetTickCount
.. kód ...
milisekundy=GetTickCount - TimeMS

ale ten tiež vracia nepravidelné hodnoty, čo je spôsobené "optimalizovaným" časovačom Windows, ktorý nieje pravidelný, a má rozptyl 10-16 ms. Vraj kvôli optimalizácii spotreby. Nikdy som sa po tom nepídil, tak neviem, či sa musí trafiť do okna 10-16 inak je 0 alebo predošlý Tick, alebo ako to je. Nepotrebujem to :)
Keď to spustím v testovacej proc, tak dáva pri najrýchlejšej niekedy 0, niekedy 10. Keď samostatne tak 170. Nedá sa na to spoľahnúť. Sú aj iné API. Ale kašle na to pes, stačí pocitovo každé tlačítko zvlášť.

Aj tak by bolo najjednoduchšie a naj user-friendly to SpecialCells...
Hawk

Skúste odstrániť diakritiku, pomlčky, dvojbodky a pod., nechať iba univerzálne písmená, a zmeniť Font na Calibri alebo Arial či Times New Roman, proste taký, ktorý viete, že je na 100% funkčný v CZ/SK.

Problémov môže byť množstvo, od Excelu po Win. Skúsil by som aj aktualizácie, pripadne naopak posledné aktualizácie odstrániť...

Ešte prípadne, si vytvorte nový zošit, kde si vyrobíte (nie kopírovaním) manuálne rovnako vysokú, širokú bunku, s rovnakým typom písma, dáte jej vlastnosť zalamovania a potom tam načisto napíšte rovnaký text. Robí to aj v tom druhom súbore ?

Takto jednoducho ? No jednoducho na jeden riadok ide v makre máločo. A navyše neefektívne pomaly. Ale dá sa to tak, že si nadefinujete Definovaný Názov "NAJDI" s rovnakým vzorcom:
=MATCH(Hárok1!$L$1&Hárok1!$M$1;Hárok1!$A:$A&Hárok1!$B:$B;0)
=POZVYHLEDAT(Hárok1!$L$1&Hárok1!$M$1;Hárok1!$A:$A&Hárok1!$B:$B;0)

z liste ho budete volať normálne :
=NAJDI
a vo VBA :
MsgBox Evaluate("=NAJDI")
Ale rýchlostne neefektívny je aj samotný vzorec, lebo počíta celé stĺpce (milión riadkov).

Ak môže byť makro dlhšie, ale rýchlejšie, dá sa aj inak.

Pr. (NoCaseSensitive):
Function NajdiFnc(Co As String, Optional Opacne As Boolean = False) As Long
Dim AB(), RA As Long, R As Long, i As Long

With List1
RA = .Cells(Rows.Count, 1).End(xlUp).Row
R = .Cells(Rows.Count, 2).End(xlUp).Row
RA = IIf(RA > R, RA, R)
AB = .Cells(1, 1).Resize(RA, 2).Value
R = Opacne And 1
For i = Array(1, RA)(R) To Array(RA, 1)(R) Step Array(1, -1)(R)
If StrComp(AB(i, 1) & AB(i, 2), Co, vbTextCompare) = 0 Then NajdiFnc = i: Exit For
Next i
End With
End Function

použitie zhora, zdola:
MsgBox NajdiFnc("AD")
MsgBox NajdiFnc("AD", True)

Urobil som nejaké úpravy a porovnávaciu procedúru. Ak to robím správne, tak najlepšie vychádza to prvé. Stúpajúcim počtom sa rozdiely vyrovnávajú. Ale nejako sa mi to nezdá, ak máte niekto overenejší nápad ako otestovať dĺžku týchto konkrétnych proc, tak ... mne sa už nece.

EDIT: A zabudli sme na najjednoduchšiu vec. Ak by sa tam nechali normálne chyby a nie "err", tak stačí toto:
On Error Resume Next
List1.Cells(5, 12).Resize(10004).SpecialCells(xlCellTypeFormulas, xlErrors).Offset(0, -1).ClearContents
On Error GoTo 0

Skúste zmazať všetky medzery a napísať ich znovu. Pri Importe textu často nieje medzera (CHAR(160)) ako medzera (CHAR(32)). Vo formáte bunky je teda rozdelenie textu zapnuté, že. Skopírujte text do Wordu a dajte si zobraziť formátovacie znaky, šupnite screen výsledku.

Použitie WorksheetFunction.Match alebo Application.Match je rýchlejšie iba za určitých okolností. Ak je málo výskytov zhody a veľa dát. Ak bude výskytov viac, tak prejdenie poľa bude podľa mňa rýchlejšie. Tam môžete urobiť cez StrComp() porovnanie na NotCaseSensitive. Ak bude dnes čas a chuť porovnám ... :)

Nie som si istý, či rozumiem, ale teda takto to nájde prvý výskyt nasledovných dvoch splnených podmienok (oboch naraz):
=MATCH(1;(G11:G41="N")*((AM11:AM41+AN11:AN41)<>2);0)
=POZVYHLEDAT(1;(G11:G41="N")*((AM11:AM41+AN11:AN41)<>2);0)

1. V stĺpci G je "N"
2. Aspoň v jednom zo stĺpcov AM alebo AN je FALSE/NEPRAVDA

Teda podmienka 2 je splnená v prípadoch : FALSE+FALSE, FALSE+TRUE, TRUE+FALSE

Ak ide v maticovom vzorci o operáciu OR/NEBO, nemôže sa použiť OR/NEBO, ale namiesto toho sa použije súčet, teda "+". A výsledok súčtu sa testuje. Keď je výsledok iný ako 0, tak je splnená aspoň jedna podmienka z OR/NEBO (výsledok je počet splnených).

Ak ani teraz nechápem zadanie, musíš asi priložiť súbor ... :)

Tu som navrhol riešenie na základe dolovania dát z HTML kódu. Kód vrátený Googlom je strašne zložitý a neprehľadný. Nedokážem s istotou zistiť, či to čo som vypozoroval je pravda. Na základe pokusov som zistil, že na rovnakú trasu vracia Google iný kód, s iným rozmiestnením výsledkov, a iným oparametrizovaním v kóde. Čo je smrť pre parsovanie textu. Ono totiž môže vrátiť výsledky, tak že to čo si myslíte nieje trasa pre auto, ale trasa vlaku, alebo dokonca čiastkový úsek trasy...
Ak sa niekomu chce nech poskúma tie vracané HTML a nájde v nich logiku a jednoznačný identifikátor ako odlíšiť správny výsledok (teda prvú navrhovanú trasu pre auto).

Príklad pre doplnené zadanie:
=IF(OR(D1="";E1="");"zadejte podmínky";IFERROR(MATCH(1;(A1:A50<>"")*(A1:A50=D1)*(B1:B50=E1);0);"nenájdené"))
=KDYŽ(NEBO(D1="";E1="");"zadejte podmínky";IFERROR(POZVYHLEDAT(1;(A1:A50<>"")*(A1:A50=D1)*(B1:B50=E1);0);"nenájdené"))


=IF(OR(D1="";E1="");"zadejte podmínky";IFERROR(MATCH(1;(A1:A50<>"")*(A1:A50>D1)*(B1:B50=E1);0);"nenájdené"))
=KDYŽ(NEBO(D1="";E1="");"zadejte podmínky";IFERROR(POZVYHLEDAT(1;(A1:A50<>"")*(A1:A50>D1)*(B1:B50=E1);0);"nenájdené"))

=IFERROR(MATCH(1;(A1:A50=D1)*(B1:B50=E1);0);"nenájdené")
=IFERROR(POZVYHLEDAT(1;(A1:A50=D1)*(B1:B50=E1);0);"nenájdené")

Prečo sa musia zadávať kódy závad vedľa do H a odtiaľ kopírovať do D, a to ešte na základe manuálne dopísaného počtu v C2 ??? Prečo sa nepíšu kódy rovno do D?

Ak sa nelíšia A8:A23 a B8:B23 voči A2 a B2, načo sa kopírujú do tabuľky, keď makro si ich prečíta z A2 a B2.

Musia sa kopírovať čísla v Řádek ? Neprišiel som na dôvod.
...

Ako plánujete potom prezerať/vyhľadávať/filtrovať data z DB? Cez KT? To potom netreba ukladať ani počet závad ani početnosť. To si KT doráta.

Či sa mýlim?

Overené:
maticový vzorec:
=SUM(IFERROR(LARGE(A2:A7;{1;2;3;4;5});0))
=SUMA(IFERROR(LARGE(A2:A7;{1;2;3;4;5});0))

nematicový vzorec
=SUMPRODUCT(IFERROR(LARGE(A2:A7;{1;2;3;4;5});0))
=SOUČIN.SKALÁRNÍ(IFERROR(LARGE(A2:A7;{1;2;3;4;5});0))

A ešte doplním možnosť, keď je počet čísel meniteľný v H1 (maticový vzorec):
=SUM(IFERROR(LARGE(A2:A7;ROW(OFFSET($A$1;;;H1)));0))
=SUMA(IFERROR(LARGE(A2:A7;ŘÁDEK(POSUN($A$1;;;H1)));0))

No a obyčajný vzorček nestačí ?
=IFERROR(VLOOKUP(A4;$L$4:$M$18;2;FALSE);"")
=IFERROR(SVYHLEDAT(A4;$L$4:$M$18;2;NEPRAVDA);"")


Strana:  1 ... « předchozí  130 131 132 133 134 135 136 137 138   další » ... 289

Uživatelské menu

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

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

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

Aktivní diskuse

vyhledání obsahu buňky

vfort • 18.7. 11:22

Názvy z řádků do sloupců Power Query

Alfan • 18.7. 10:01

Tlac 2 roznych tabuliek

loksik.lubos • 17.7. 20:43

Týden v roce

Petr92 • 16.7. 15:34

Řazení podle času v kategoriích

veny • 16.7. 11:34

špatný výpočet ze zisku - příčina?

Anonym • 12.7. 22:56

špatný výpočet ze zisku - příčina?

Jakoby • 12.7. 12:35