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)))
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.