Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  128 129 130 131 132 133 134 135 136   další » ... 286

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);"")

Sub Vymaz_Err()
Dim PrvniRadekDat As Long, PoslRadekDat As Long, Radku As Long, SloupecDat As Integer, Data(), i As Long, rngErr As Range

PrvniRadekDat = 5
SloupecDat = 9

With ThisWorkbook.Worksheets("DATA")
PoslRadekDat = .Cells(.Rows.Count, SloupecDat).End(xlUp).Row
If PoslRadekDat < PrvniRadekDat Then MsgBox "Žádná data.", vbInformation: Exit Sub
Radku = PoslRadekDat - PrvniRadekDat + 1
ReDim Data(1 To Radku, 1 To 1)
If Radku = 1 Then Data(1, 1) = .Cells(PrvniRadekDat, SloupecDat).Value Else Data = .Cells(PrvniRadekDat, SloupecDat).Resize(Radku).Value
For i = 1 To Radku
If Data(i, 1) = "err" Then
If rngErr Is Nothing Then Set rngErr = .Cells(PrvniRadekDat + i - 1, SloupecDat - 1) Else Set rngErr = Union(rngErr, .Cells(PrvniRadekDat + i - 1, SloupecDat - 1))
End If
Next i
If Not rngErr Is Nothing Then rngErr.ClearContents
End With
End Sub

Je to možné. Tak tu je návrh na UDF (funguje aj maticovo aj v PF):
Function CHECK_FORMULA(RNG As Range) As Variant
Dim x As Integer, y As Long, arr() As Boolean
If Not TypeName(RNG) = "Range" Then
CHECK_FORMULA = CVErr(xlErrRef)
Else
If RNG.Cells.Count = 1 Then
CHECK_FORMULA = RNG.HasFormula
Else
ReDim arr(1 To RNG.Rows.Count, 1 To RNG.Columns.Count)
For x = 1 To UBound(arr, 2)
For y = 1 To UBound(arr, 1)
arr(y, x) = RNG.Cells(y, x).HasFormula
Next y
Next x
CHECK_FORMULA = arr
End If
End If
End Function

Overuje to existenciu vzorca v bunkách. Rovnako som žlté podfarbenie dal na PF, nie ručne.

Obojsmerne. Snáď som neurobil hrubku...

=IF(OR(B3="";D3="");"";VLOOKUP(B3;$I$3:$M$6;MATCH(D3;$J$2:$M$2;0)+1;FALSE))
=KDYŽ(NEBO(B3="";D3="");"";SVYHLEDAT(B3;$I$3:$M$6;POZVYHLEDAT(D3;$J$2:$M$2;0)+1;NEPRAVDA))

Prvý riadok píšem vždy SK vzorec, druhý CZ vzorec (SK má rovnaké názvy funkcií ako EN, ale EN má oddeľovače parametrov "," a v SK/CZ je to ";").

Tak pridajte do SUMPRODUCT/SOUČIN.SKALÁRNÍ ešte jednu podmienku:
=SUMPRODUCT((Tabulka1[[Model]:[Model]]=$G3)*(MONTH(Tabulka1[[Datum prodeje]:[Datum prodeje]])=COLUMN(A$1))*(Tabulka1[[Datum prodeje]:[Datum prodeje]]<>0))
=SOUČIN.SKALÁRNÍ((Tabulka1[[Model]:[Model]]=$G3)*(MĚSÍC(Tabulka1[[Datum prodeje]:[Datum prodeje]])=SLOUPEC(A$1))*(Tabulka1[[Datum prodeje]:[Datum prodeje]]<>0))

Inak hodnoty z KT sa v tomto prípade dajú získať aj cez =GETPIVOTDATA("Model";$M$3;"Model";"AA";"mesiace";1)
=ZÍSKATKONTDATA("Model";$M$3;"Model";"AA";"mesiace";1)

(v CZ to bude asi "měsíce")

Ale žiaľ, keď zmažem nejaký dátum zo zdroja a dám Refresh KT, tak ju rozmrdá. Nesmie tam byť prázdny dátum, a funguje OK. Neviem či to tak robí len u mňa (E2019 verzia 1808 zostava 10730.20102, W10 x64 Pro SK verzia 1809 zostava 17763.195), overovať sa mi to nechce.

Do H3 a natiahnuť:
=SUMPRODUCT((Tabulka1[[Model]:[Model]]=$G3)*(MONTH(Tabulka1[[Datum prodeje]:[Datum prodeje]])=COLUMN(A$1)))
=SOUČIN.SKALÁRNÍ((Tabulka1[[Model]:[Model]]=$G3)*(MĚSÍC(Tabulka1[[Datum prodeje]:[Datum prodeje]])=SLOUPEC(A$1)))

Alebo KT.

Ale to sa asi nedá použiť na zatvorený súbor. Ak je súbor otvorený, poznáme meno listu a adresu bunky, tak to funguje takto:
txt = ExecuteExcel4Macro("GET.NOTE(""[pok2.xlsm]Hárok1!R2C2"")")

Keďže sa súbor nesmie otvoriť, môže sa rozzipovať ? Ak áno, tak:
-skopírovať súbor do tempu, premenovať na *.zip, rozbaliť (všetko vo VBA samozrejme)
-ak súbor obsahuje komentáre, tak v podzložke "xl" budú súbory "comments1.xml", "comments2.xml",...
-z nich sa dá vyčítať autor, bunka, text a formát textu
-v podzložke xl\worksheets\_rels\ je v každom sheetXY.xml ... uvedený názov "commentsXY.xml" ktorý mu patrí. V listoch v ktorých niesú komenty, tento odkaz nieje.
-všetko parsovať buď klasicky cez text alebo cez Nodes v Microsoft.XMLDOM.
-na záver by sa extrahovaná zložka aj kópia súboru mázli.


Strana:  1 ... « předchozí  128 129 130 131 132 133 134 135 136   další » ... 286

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