Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  7 8 9 10 11 12 13 14 15   další » ... 40

Přesun do posledního použitého sloupce v listu: end enter

Odstranění: shift + end enter
pravý klik, odstranit sloupce

PQ má podobné problémy s mapováním adresy.

Těch "onedrive..." má MS víc podle typu onedrivu (soukromý, korporátní, ...). Obecné řešení bude nejspíš komplikovanější. Pár řešení je na https://stackoverflow.com/questions/33734706/excels-fullname-property-with-onedrive. Něco jsem testoval, je tam dobrý základ.

Jak naznačil elnino, v džungli MS je složité lokálně najít obecnější řešení.

excel pro adresu souboru podsunuje url úložiště místo lokální adresy. Toto by mělo jít vypnout zákazem synchronizace onedrivu z prostředí mso: ikona onedrive - nastavení - office - "soubory, které otevřu, ...". Nezkoušel jsem to, nerad používám řešení závislá na lokálním nastavení (https://answers.microsoft.com/en-us/msoffice/forum/all/how-can-i-use-the-physical-addres-of-a-workbook/8d4ba24c-f2aa-4118-81b8-47e4e35d400c)

Tohle je pro powerquery:

Nástřel dotazu:


// dotaz
let
Zdroj = Excel.CurrentWorkbook(){[Name="data"]}[Content],
#"Seskupené řádky" = Table.Group(Zdroj, {"Column1"}, {{"Tab", each _, type table}}, GroupKind.Local,(x,y)=>if x[Column1] = "Material" and y[Column1] = null then 0 else 1),
#"Filtrované řádky" = Table.SelectRows(#"Seskupené řádky", each ([Column1] = "Material")),
konverze = (Tab as table) =>
let
Material = Table.SelectRows(Tab, each ([Column1] = "Material")),
Vlastní1 = Table.RemoveColumns(Material, List.Select(Table.ColumnNames(Material), each List.NonNullCount(Table.Column(Material, _)) = 0)),
#"Odebrané sloupce" = Table.RemoveColumns(Vlastní1,{"Column1", "Column9"}),
#"Leva strana" = Table.RenameColumns(#"Odebrané sloupce",List.Zip({Table.ColumnNames(#"Odebrané sloupce"), List.Transform({1 .. 4}, each "Sl. " & Text.From(_) ) } ) ),
Data = Table.SelectRows(Tab, each ([Column1] = null)),
#"Odebrané prázdné sloupce" = Table.RemoveColumns(Data, List.Select(Table.ColumnNames(Data), each List.NonNullCount(Table.Column(Data, _)) = 0)),
#"Odebrané prázdné řádky" = Table.SelectRows(#"Odebrané prázdné sloupce", each ([Column2] <> null)),
#"Prava strana" = Table.RenameColumns(#"Odebrané prázdné řádky",List.Zip({Table.ColumnNames(#"Odebrané prázdné řádky"), List.Transform({5 .. 10}, each "Sl. " & Text.From(_) ) } ) ),
#"Přidané: Vlastní" = Table.AddColumn(#"Leva strana", "Vlastní", each #"Prava strana"),
#"Rozbalené Vlastní" = Table.ExpandTableColumn(#"Přidané: Vlastní", "Vlastní", Table.ColumnNames(#"Přidané: Vlastní"[Vlastní]{0}))
in
#"Rozbalené Vlastní",

KonverzeTabulky = Table.TransformColumns(#"Filtrované řádky", {"Tab", konverze} ),
#"Rozbalené Tab" = Table.ExpandTableColumn(KonverzeTabulky, "Tab", Table.ColumnNames(KonverzeTabulky[Tab]{0})),
#"Odebrané sloupce" = Table.RemoveColumns(#"Rozbalené Tab",{"Column1"})
in #"Odebrané sloupce"


Poznámky:

Dotaz čte data z oblasti "Data". (Pokud by se četlo z jiného sešitu, lze číst list).

Table.Group vyhodnocuje data lokálně, to umožňuje rozdělit tabulku na oblasti se stejným materiálem.

Funkce pro konverzi je deklarována v dotazu. (Podobné funkce je většinou snažší napřed naklikat pro jeden řádek, pak změnit na funkci.)

Doplňte si vhodná jména sloupců.

Použijte vlastnosti dokumentu. (je to stejné i v excelu, powerpointu, ...)

Soubor/informace/vlastnosti/upřesnit vlastnosti

Vyberte vhodné k použití, případně vytvořte vlastní. Přes propojení do ovládacích prvků se dají aktualizovat i z dokumentu.

Potom není nutné žádné vyhledávaní, struktura souboru pro tento účel není důležitá, dá se snadno vyhledávat i z průzkumníka ... Makro si jednoduše "sahne" do vlastností a vypíše potřebné.

Stačí

=SUMA(SOUČIN.MATIC(--(A2:E5="M");TRANSPOZICE(A1:E1)))

Poznámku o relacích M:N v příspěvku jsem zaznamenal.

Tak ještě jednou možnosti:

a) Upravit strukturu dat (třeba v PQ) a relací M:N se zbavit.

b) Nebo použít virtuální relace pomocí měřítek. Tento přístup je univerzální, jen trochu pracnější. Umožní zohlednit více vazeb. Příklad je uveden výše.

c) A/nebo použít funkci CROSSFILTER k vytvoření relace M:N. V excelu (na rozdíl od jiných implementací) nelze takovou relaci do datového modelu zadat.
Funkce ale umožňuje takovou relaci ve vzorci vytvořit. Je to v běžných případech často jednodušší, než vytváření univerzálního filtru.

Vše se týká datového modelu a výstupu do KT.

Má to snad být něco takového:

=SUMA(List1:List5!A1)

???

Jinak, pokud funkce nevyžaduje odkaz na pole, lze rozsahy i z různých listů skládat do jednoho pole.

např.
=ZVOLIT({1\2}; List2!C1:C6;List3!C1:C6)

složí dva sloupce vedle sebe do jednoho pole.

Možná se dá také použít KT nebo vytvářet souhrn pomocí powerquery.

"skvělý příklad"...
Ty tabulky mají pro spojení je pole Id a ani jednu společnou hodnotu.

Tak tedy obecně.

1. Tabulky převést na tabulky
2. vytvořit kt z jedné tabulky, zatrhhnout "přidat do datového modelu.
3. na data z následujících tabulek je možné se potom odkazovat pomocí virtuálních relací.

Např. pokud budu předpokládat, že pole Id tabulky spojuje, pak např. na prodej se lze dotázat měřítkem:


prodej_rel:=var akt_id = distinct(Tabulka1[id])
return calculate(sum(Tabulka2[prodej]);CONTAINSROW(akt_id;Tabulka2[id] ))


Vhodnější je (např. pomocí power query) dát tabulkám aspoň náznak struktury databáze.

Nechce se mi to zkoumat. Makro je zbytečné.

Podmíněný formát:

Vzorec: =max(C2:C4)>1
formát: červené pozadí

Spíš bych přidal druhý sloupec "datum" a vložil bych filtr "časovou osu". (analýza KT, filtr, vložit časovou osu).
(první datum se v kt automaticky převádí na text, proto ta kopie)

Add manipulace s časem v ose - makro, převést čas na desetinné číslo a vložit do osy.

Pokud jen v excelu, v pomocném sloupci lze kumulativně sčítat tankování. Pokud se má sečíst spotřeba od posledního tankování, tak od kumulativního tankování lze odečíst kum tankování u předchozího ano (viz funkce xlookup, umí hledat od posledního řádku k prvnímu).

Podle dat také funguje

Dim r As Range
Set r = Range("J:J")

r.NumberFormat = "General"
Range("G:G").FormulaLocal = Range("G:G").Value


Nebo lépe:

Sub Makro1()

Dim r As Range
Dim r1 As Range
Dim v() As Variant
Dim i1 As Long
Dim i2 As Long

' vybrat jen texty
Set r = Range("J:J").SpecialCells(xlCellTypeConstants, 2)
For Each r1 In r.Areas
v = r1.Value

For i1 = LBound(v, 1) To UBound(v, 1)
For i2 = LBound(v, 2) To UBound(v, 2)
If IsNumeric(v(i1, i2)) Then v(i1, i2) = CDbl(v(i1, i2))
Next i2
Next i1
r.NumberFormat = "General"
r.Value = v
Next r1
End Sub

Jaké odkazy - do vlastního sešitu, do jiného souboru, do adresáře, někam (onedrive, sharepoint,...), internet, ...

Jsou odkazy v buňce viditelné, nebo jsou schované pod textem?

V čem je problém?
Neumíš načíst samotný hypertextový odkaz?
Neumíš načíst odkaz z tabulky?

Obecná rada/řešení:

Pokud umíš načíst data ze zadaného odkazu, tak vytvoř dotaz, který to provede a přeměň ho na funkci. Odkaz musí být parametrem této funkce.

Potom načti tabulku a na sloupec s odkazem použij Table.TransformColumn, kde transformující funkcí bude ta právě vytvořená.

Taky jde použít průměr:

=PRŮMĚR(FILTER(A4:A2884;--(A4:A2884>0,5)*(--(B4:B2884=E2) + (B4:B2884=F2))*(C4:C2884=G2)))


Strana:  1 ... « předchozí  7 8 9 10 11 12 13 14 15   další » ... 40

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