Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  35 36 37 38 39 40 41 42 43   další » ... 289

Ak je dotaz ako funkcia, nedá sa krokovať a pozrieť medzivýsledky alebo ladiť. Ja to robím tak, že si ladím na normálnom dotaze, a ten po overení funkčnosti s pevným parametrom prevediem na funkciu. Takže ak si chcete pozrieť ako táto funkcia pracuje so súborom, prerobte si ju opäť na dotaz s pevným parametrom:
let
Soubor = File.Contents("E:\Download\test2\PRE_9-A _02_024_34A221014.TXT"),
Zdroj = Csv.Document(Soubor,2,{2,23},null,1250),
#"Nahradená hodnota" = Table.ReplaceValue(Zdroj," "," ",Replacer.ReplaceText,{"Column2"}),
#"Rozdeliť stĺpec podľa oddeľovača" = Table.SplitColumn(#"Nahradená hodnota", "Column2", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Teplota nastavená", "T_Eff", "Teplota", "Vlhkost", "Vlhkost nastavená", "Door"}),
#"Zmenený typ pomocou miestneho nastavenia" = Table.TransformColumnTypes(#"Rozdeliť stĺpec podľa oddeľovača", {{"Column1", type datetime}, {"Teplota nastavená", type number}, {"T_Eff", type number}, {"Teplota", type number}, {"Vlhkost", type number}, {"Vlhkost nastavená", type number}}, "en-GB"),
#"Filtrované riadky" = Table.SelectRows(#"Zmenený typ pomocou miestneho nastavenia", each [Door] <> null),
#"Pridané vlastné" = Table.AddColumn(#"Filtrované riadky", "Tolerance teploty MIN", each [Teplota nastavená]-5),
#"Pridané vlastné1" = Table.AddColumn(#"Pridané vlastné", "Tolerance teploty MAX", each [Teplota nastavená]+5),
#"Pridaný podmienený stĺpec" = Table.AddColumn(#"Pridané vlastné1", "Time in spec start", each if [Teplota] >= [Tolerance teploty MIN] then [Column1] else null),
PosledniTeplota = Table.Last(#"Pridaný podmienený stĺpec")[Teplota],
PosledniVlhkost = Table.Last(#"Pridaný podmienený stĺpec")[Vlhkost],
#"Seskupené řádky" = Table.Group(#"Pridaný podmienený stĺpec", {"Teplota nastavená", "Vlhkost nastavená", "Tolerance teploty MIN", "Tolerance teploty MAX"}, {{"Teplota MIN", each List.Min([Teplota]), type number}, {"Teplota MAX", each List.Max([Teplota]), type number}, {"Vlhkost MIN", each List.Min([Vlhkost]), type number}, {"Vlhkost MAX", each List.Max([Vlhkost]), type number}, {"Začátek předehřevu", each List.Min([Column1]), type datetime}, {"Konec předehřevu", each List.Max([Column1]), type datetime}, {"Teplota in spec start", each List.Min([Time in spec start]), type nullable datetime}}),
#"Přidané: Vlastní2" = Table.AddColumn(#"Seskupené řádky", "Total time", each [Konec předehřevu]-[Začátek předehřevu]),
#"Přidané: Vlastní3" = Table.AddColumn(#"Přidané: Vlastní2", "Time in Spec", each [Konec předehřevu]-[Teplota in spec start]),
#"Přidané: Vlastní4" = Table.AddColumn(#"Přidané: Vlastní3", "Náběh teploty", each [Teplota in spec start]-[Začátek předehřevu]),
#"Přidané: Vlastní5" = Table.AddColumn(#"Přidané: Vlastní4", "Poslední teplota", each PosledniTeplota),
#"Přidané: Vlastní6" = Table.AddColumn(#"Přidané: Vlastní5", "Poslední vlhkost", each PosledniVlhkost)
in
#"Přidané: Vlastní6"

Vymeňte si len názov súboru a môžete krokovať. Tie posledné hodnoty sa uložia do premenných vo funkcii Table.Last. a použijú sa následne po zlúčení riadkov. Je to tam pekne vidieť.

No a čo sa týka tej chyby. Skúsim vymyslieť, ako odhaliť, ktorý súbor robí neplechu. Musíme ho nájsť, aby sme ošetrili aj takú eventualitu. Alebo spustite to makro, a keď makro spadne, tak prečítajte hodnotu Files(i). Tam je názov súboru.

EDIT:
POZOR! Fórum maže viac ako 1 medzeru za sebou. Takže v tomto riadku
#"Nahradená hodnota" = Table.ReplaceValue(Zdroj," "," ",Replacer.ReplaceText,{"Column2"}),za Zdroj sú v prvých úvodzovkách 2 medzery, v druhých úvodzovkách 1 medzera !!!

Urobil som pokus. Vaše súbory som si zduplikoval tak, aby bolo načítaných 25000 súborov (38750 je to aj so súbormi Default). Musí sa na to pozrieť odborník na PQ, lebo to trvá strašne dlho. Urobil som na pokus aj makro, posúďte sám:

PowerQuery : 150 s
Makro         :   43 s

No ja som posldné hodnoty riešil v tej funkcii fncGetSoubor:
(Soubor as binary) => let
Zdroj = Csv.Document(Soubor,2,{2,23},null,1250),
#"Nahradená hodnota" = Table.ReplaceValue(Zdroj," "," ",Replacer.ReplaceText,{"Column2"}),
#"Rozdeliť stĺpec podľa oddeľovača" = Table.SplitColumn(#"Nahradená hodnota", "Column2", Splitter.SplitTextByDelimiter(" ", QuoteStyle.Csv), {"Teplota nastavená", "T_Eff", "Teplota", "Vlhkost", "Vlhkost nastavená", "Door"}),
#"Zmenený typ pomocou miestneho nastavenia" = Table.TransformColumnTypes(#"Rozdeliť stĺpec podľa oddeľovača", {{"Column1", type datetime}, {"Teplota nastavená", type number}, {"T_Eff", type number}, {"Teplota", type number}, {"Vlhkost", type number}, {"Vlhkost nastavená", type number}}, "en-GB"),
#"Filtrované riadky" = Table.SelectRows(#"Zmenený typ pomocou miestneho nastavenia", each [Door] <> null),
#"Pridané vlastné" = Table.AddColumn(#"Filtrované riadky", "Tolerance teploty MIN", each [Teplota nastavená]-5),
#"Pridané vlastné1" = Table.AddColumn(#"Pridané vlastné", "Tolerance teploty MAX", each [Teplota nastavená]+5),
#"Pridaný podmienený stĺpec" = Table.AddColumn(#"Pridané vlastné1", "Time in spec start", each if [Teplota] >= [Tolerance teploty MIN] then [Column1] else null),
PosledniTeplota = Table.Last(#"Pridaný podmienený stĺpec")[Teplota],
PosledniVlhkost = Table.Last(#"Pridaný podmienený stĺpec")[Vlhkost],

#"Seskupené řádky" = Table.Group(#"Pridaný podmienený stĺpec", {"Teplota nastavená", "Vlhkost nastavená", "Tolerance teploty MIN", "Tolerance teploty MAX"}, {{"Teplota MIN", each List.Min([Teplota]), type number}, {"Teplota MAX", each List.Max([Teplota]), type number}, {"Vlhkost MIN", each List.Min([Vlhkost]), type number}, {"Vlhkost MAX", each List.Max([Vlhkost]), type number}, {"Začátek předehřevu", each List.Min([Column1]), type datetime}, {"Konec předehřevu", each List.Max([Column1]), type datetime}, {"Teplota in spec start", each List.Min([Time in spec start]), type nullable datetime}}),
#"Přidané: Vlastní2" = Table.AddColumn(#"Seskupené řádky", "Total time", each [Konec předehřevu]-[Začátek předehřevu]),
#"Přidané: Vlastní3" = Table.AddColumn(#"Přidané: Vlastní2", "Time in Spec", each [Konec předehřevu]-[Teplota in spec start]),
#"Přidané: Vlastní4" = Table.AddColumn(#"Přidané: Vlastní3", "Náběh teploty", each [Teplota in spec start]-[Začátek předehřevu]),
#"Přidané: Vlastní5" = Table.AddColumn(#"Přidané: Vlastní4", "Poslední teplota", each PosledniTeplota),
#"Přidané: Vlastní6" = Table.AddColumn(#"Přidané: Vlastní5", "Poslední vlhkost", each PosledniVlhkost)

in
#"Přidané: Vlastní6"

No a dotaz test iba vyvoláva funkciu pre každý súbor:
let
Zdroj = Folder.Files(Excel.CurrentWorkbook(){[Name="tblCesta"]}[Content]{0}[Cesta]),
#"Filtrované řádky" = Table.SelectRows(Zdroj, each [Extension] = ".TXT" and not Text.Contains([Name], "Default") and [Attributes]?[Hidden]? <> true),
#"Rozdělit sloupec oddělovačem" = Table.SplitColumn(#"Filtrované řádky", "Name", Splitter.SplitTextByEachDelimiter({"-"}, QuoteStyle.Csv, false), {"prefix", "Name"}),
#"Rozdělit sloupec oddělovačem1" = Table.SplitColumn(#"Rozdělit sloupec oddělovačem", "Name", Splitter.SplitTextByDelimiter("_", QuoteStyle.Csv), {"předehřev", "Name.2", "Nastavený čas", "Batch"}),
#"Nahradená hodnota" = Table.ReplaceValue(#"Rozdělit sloupec oddělovačem1",".TXT","",Replacer.ReplaceText,{"Batch"}),
#"Vyvolat vlastní funkci1" = Table.AddColumn(#"Nahradená hodnota", "Extrakce", each fncGetSoubor([Content])),
#"Odebrané sloupce" = Table.RemoveColumns(#"Vyvolat vlastní funkci1",{"Content", "prefix", "Name.2", "Date accessed", "Date created", "Extension", "Attributes", "Folder Path"}),
#"Rozbalené Extrakce" = Table.ExpandTableColumn(#"Odebrané sloupce", "Extrakce", {"Teplota nastavená", "Vlhkost nastavená", "Tolerance teploty MIN", "Tolerance teploty MAX", "Teplota MIN", "Teplota MAX", "Vlhkost MIN", "Vlhkost MAX", "Začátek předehřevu", "Konec předehřevu", "Total time", "Time in Spec", "Náběh teploty", "Poslední teplota", "Poslední vlhkost"}),
#"Přejmenované sloupce" = Table.RenameColumns(#"Rozbalené Extrakce",{{"Date modified", "Datum modifikace"}}),
#"Stĺpce so zmeneným poradím" = Table.ReorderColumns(#"Přejmenované sloupce",{"Batch", "předehřev", "Nastavený čas", "Datum modifikace", "Začátek předehřevu", "Konec předehřevu", "Teplota nastavená", "Teplota MIN", "Teplota MAX", "Vlhkost nastavená", "Vlhkost MAX", "Vlhkost MIN", "Tolerance teploty MIN", "Tolerance teploty MAX"}),
#"Pridaný podmienený stĺpec" = Table.AddColumn(#"Stĺpce so zmeneným poradím", "Pravda/Nepravda", each DateTime.Date([Datum modifikace]) = DateTime.Date([Konec předehřevu]))
in
#"Pridaný podmienený stĺpec"


EDIT:
Priložte ten súbor, v ktorom nejde previesť tie čísla a hádže chyby.

POZOR! Fórum maže viac ako 1 medzeru za sebou. Takže v tomto riadku
#"Nahradená hodnota" = Table.ReplaceValue(Zdroj," "," ",Replacer.ReplaceText,{"Column2"}),za Zdroj sú v prvých úvodzovkách 2 medzery, v druhých úvodzovkách 1 medzera !!!

Skúsim aj ja kluci. Riešenie od veny som nevidel, tak dúfam, že som sa nezamotal :)
Musím s tým PQ robiť viac...

Maticový vzorec (Ctrl+Shift+Enter), príklad pre Tabuľku:
=TEXTJOIN(", ";TRUE;IF(SUBTOTAL(3;OFFSET(Tabuľka1[Stĺpec1];ROW(Tabuľka1[Stĺpec1])-MIN(ROW(Tabuľka1[Stĺpec1]));;1));Tabuľka1[Stĺpec1];""))
=TEXTJOIN(", ";PRAVDA;KDYŽ(SUBTOTAL(3;POSUN(Tabuľka1[Stĺpec1];ŘÁDEK(Tabuľka1[Stĺpec1])-MIN(ŘÁDEK(Tabuľka1[Stĺpec1]));;1));Tabuľka1[Stĺpec1];""))

Neviem, či správne rozumiem.
Vy potrebujete systém 1 súbor = 1 riadok?
Pomocou zlúčenia zistím Min/Max hodnoty teplôt, vlhkosti, času. Nastavenie teploty a vlhkosti je naprieč súborom rovnaké?
Vy potrebujete kontrolovať každý riadok poľa [Teplota] voči minimu a maximu z tohto poľa [Teplota]+-tolerancia 5?.
Identifikátor Batch je jedinečný naprieč súbormi? Teda nikdy nie je rovnaké Batch v názvoch viacerých súborov?

EDIT:
Sorry, nereloadlo mi stránku, inak by som zistil, že veny už pridal riešenie.

A ktorý z tých stĺpcov obsahuje rozhodujúci maximálny dátumočas ? (Začátek předehřevu / Konec předehřevu / Datum modifikace / Trplota in spec start)

Výborný nápad. Premýšľal som ako sa zbaviť toho jedného hľadania...

Napr. (to sa dá nakombinovať viacero textových funkcií)
=REPLACE(A1;SEARCH(" ";A1);LEN(A1);MID(A1;SEARCH(" ";A1)+1;2)&"Test_Q")
=NAHRADIT(A1;HLEDAT(" ";A1);DÉLKA(A1);ČÁST(A1;HLEDAT(" ";A1)+1;2)&"Test_Q")

Pr.
Private Sub CommandButton1_Click()
On Error Resume Next
With Worksheets("List1")
Intersect(.UsedRange, .Range("B:C").Resize(Rows.Count - 3).Offset(3, 0)).SpecialCells(xlCellTypeVisible).Select
If Err.Number <> 0 Then MsgBox "Nic.", vbInformation
End With
On Error GoTo 0
End Sub

Ak by ste pre e-shop menil napr. počet vlastností DATA produktu, teda umiestnenie stĺpcov, tak by akákoľvek verzia vzorca počítajúca s číslom stĺpca absolútne (či už COLUMN()=4 ale ISEVEN()/ISODD(), ktorá zisťuje párnosť/nepárnosť aktuálneho stĺpca) prestala okamžite fungovať. Preto som to prerobil tak, že párnosť/nepárnosť sa neurčuje z aktuálneho stĺpca, ale z rozdielu medzi aktuálnym stĺpcom a referenčným stĺpcom. Musíte dbať len na jedinú vec. Aby tie počítané stĺpce išli hneď za referenčným stĺpcom. Teda teraz je referenčný stĺpec napr. U. Tak všade vo vzorci bude $U2. ak aj pridáte napr. 3 stĺpce pred stĺpec U, všetko ostane fungovať, lebo sa počíta rozdiel medzi aktuálnym stĺpcom a referenčným, a referenčný sa automaticky zmení po pridaní sám z U na X. Že sa zmení nepárny na párny nehrá úlohu.
=IF($U2="";"";IF(ISODD(COLUMN()-COLUMN($U2));$E2&", "&IF(COLUMN()-COLUMN($U2)=1;"";TRUNC((COLUMN()-COLUMN($U2)+1)/2)&" ")&"produktový obrázek.";REPLACE($U2;LEN($U2)-3;1;TEXT(TRUNC((COLUMN()-COLUMN($U2)+2)/2);"-00."))))
=KDYŽ($U2="";"";KDYŽ(ISODD(SLOUPEC()-SLOUPEC($U2));$E2&", "&KDYŽ(SLOUPEC()-SLOUPEC($U2)=1;"";USEKNOUT((SLOUPEC()-SLOUPEC($U2)+1)/2)&" ")&"produktový obrázek.";NAHRADIT($U2;DÉLKA($U2)-3;1;HODNOTA.NA.TEXT(USEKNOUT((SLOUPEC()-SLOUPEC($U2)+2)/2);"-00."))))

To je zase niečo iné, ak má byť každý druhý stĺpec iný výsledok. Každopádne takýto "všemocný" vzorec to rieši:
=IF($C2="";"";IF(ISEVEN(COLUMN());$B2&", "&IF(COLUMN()=4;"";TRUNC((COLUMN()-2)/2)&" ")&"produktový obrázek.";REPLACE($C2;LEN($C2)-3;1;TEXT(TRUNC((COLUMN()-1)/2);"-00."))))
=KDYŽ($C2="";"";KDYŽ(ISEVEN(SLOUPEC());$B2&", "&KDYŽ(SLOUPEC()=4;"";USEKNOUT((SLOUPEC()-2)/2)&" ")&"produktový obrázek.";NAHRADIT($C2;DÉLKA($C2)-3;1;HODNOTA.NA.TEXT(USEKNOUT((SLOUPEC()-1)/2);"-00."))))

V tom prípade sa dá urobiť aj jednoduchší vzorec, keď vieme, že je tam vždy koncovka ".jpg". Len nerozumiem tomu, čo spomínate o tom ručnom doplnení

vytvořím i druhou buňku s názvem /upload/product-photo/obrazek-02.jpg

a potom neviem, čo má určiť v ktorom riadku bude koľko obrázkov.
V prípade potreby upresnite.

Ale to je predsa niečo iné, ako ste popísal. Každopádne to nebude problém. Ale keďže sa jedná o časti url adresy, tak viete že tam bude vždy adresa obrázku? Teda bude tam prípona oddelená bodkou, alebo tam môže byť iný link? Obrázok bude vždy jpg (nie jpeg, png, gif, ...)? Ak tam môže byť aj iný typ obrázku, dá sa použiť na identifikáciu bodka? Teda nemôže nastať situácia, že bude adresa aj na inom mieste obsahovať bodku? Ten prvý link v A vždy obsahuje text BEZ čísla pred príponou? Alebo aj tam sa môže vyskytnúť nejaké číslo, ktoré sa má v nasledujúcom stĺpci už navýšiť o 1? Alebo sa bez ohľadu na ukončenie nejakým číslom iba pripíše ďalší text s číslom stĺpca za neho? Tie čísla majú byť vždy dvojciferné?

Riešenie na jeden z tých mnou načrtnutých prípadov môže byť napr. toto:
=IFERROR(REPLACE($A2;SEARCH("@";SUBSTITUTE($A2;".";"@";LEN($A2)-LEN(SUBSTITUTE($A2;".";""))));1;TEXT(COLUMN();"-00."));"")
=IFERROR(NAHRADIT($A2;HLEDAT("@";DOSADIT($A2;".";"@";DÉLKA($A2)-DÉLKA(DOSADIT($A2;".";""))));1;HODNOTA.NA.TEXT(SLOUPEC();"-00."));"")

nájde to poslednú bodku v názve, pričom ich môže byť viac, nahradí ju textom "-00.", pričom to 00 značí dvojciferné číslo stĺpca. Je jedno akú to bude mať príponu, tá ostáva, keď nenájde bodku nič nevypíše, a je mu jedno či A obsahuje pred príponou číslo. Len v A nesmie byť znak @, lebo ten používa ako zástupný znak na hľadanie poslednej bodky. Prípadne zvoliť iný paznak, ktorý určo v A nebude.

OT: Prosím neskloňujte môj nick. "elninoslav" - nie netreba mi zvolávať na slávu 5
To "slov" na konci je Slovensko. Kedysi v minulom tisícročí, keď som si zakladal prvé nicky tak som používal "Elnino", nikto také nemal. No neskôr taký istý blbý nápad dostali aj iní. Tak som si pridal "Slov". Rozdiel je veľký, a to v skloňovaní - je krkolomné (a Vy ste ešte zamenil "o" za "a") "elninovi" vs. "elninoslovovi". Mňa to neuráža, to aby ste si nemyslel, len mi to príde také divné. Láme sa mi pri tom jazyk. Kľudne použite iba "Elnino" - to sa dá skloňovať.

???
=IFERROR(REPLACE($A$1;SEARCH(".jpg";$A$1)-2;2;TEXT(ROW()+1;"00"));"")
=IFERROR(NAHRADIT($A$1;HLEDAT(".jpg";$A$1)-2;2;HODNOTA.NA.TEXT(ŘÁDEK()+1;"00"));"")

prípadne
=IFERROR(LEFT($A$1;SEARCH(".jpg";$A$1)-3)&TEXT(ROW()+1;"00")&".jpg";"")
=IFERROR(LEFT($A$1;HLEDAT(".jpg";$A$1)-3)&HODNOTA.NA.TEXT(ŘÁDEK()+1;"00")&".jpg";"")

alebo
=IF($A$1="";"";LEFT($A$1;LEN($A$1)-6)&TEXT(ROW()+1;"00")&".jpg")
=KDYŽ($A$1="";"";ZLEVA($A$1;DÉLKA($A$1)-6)&HODNOTA.NA.TEXT(ŘÁDEK()+1;"00")&".jpg")


Strana:  1 ... « předchozí  35 36 37 38 39 40 41 42 43   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

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

Řazení podle času v kategoriích

Marekh • 12.7. 9:55

Porovnávací Tabulka

Jess • 8.7. 20:49

Vzorec pro zkopírování obsahu buňky.

veny • 6.7. 8:28