Příspěvky uživatele


< návrat zpět

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

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

Pokud tedy máte novější verzi a nechcete pokaždé tabulku řadit, lze použít třeba:

=INDEX(SORT(FILTER(D2:G7;D2:D7=E11);4;-1);1;{3\2})

Matice jsou automatické. Předpokladem je datum-čas ve sloupci G (stačí ve sloupci G nahradit "-" za nic).

V čem to chcete dělat? (verze)

Jen text:

countif(oblast;"*")

2.jak označit v makru více řádků, když v nich kdekoliv mám označeno více buňek.


'zapamatuju si vybrané buňky
dim vybrano as range
Set vybrano = Selection

' vybarvim řádek, kde je nějaká vybraná buňka
vybrano.EntireRow.Interior.Color = vbRed


kopírovat celé tyto řádky/2,5,7,10/, nebo třeba do jiného listu

Dim i As Long
Dim area As Range
Dim list2 As Worksheet

'každý řádek zkopíruje do List2
set list2 = Worksheets("List2")
i = 1
For Each area In vybrano.EntireRow.Areas
With area
list2.Cells(i, 1).Resize(.Rows.CountLarge, .Columns.CountLarge).Value = .Value
i = i + .Rows.CountLarge
End With
Next area

Tahle má asi nejmenší režii:

=A2:INDEX(List1!$D:$D;MAX(KDYŽ(List1!$A:$D<>"";ŘÁDEK(List1!$D:$D);1)))

Vzorec je maticový, ake výrazy v názvech se automatiky vyhodnocují maticově.

Tohle už je volatilní:

=List1!$A$2:POSUN(List1!$D$1;MAX(KDYŽ(List1!$A:$D<>"";ŘÁDEK(List1!$D:$D)));0)

nebo rovnou

=POSUN(List1!$A$2;;;MAX(KDYŽ(List1!$A:$D<>"";ŘÁDEK(List1!$D:$D)));4)

ps.

Když budeš něco podobného ladit, dej ctrl-g a vzorec zapisuj do pole odkaz...

Vzorce jsou šílený. Budu předpokládat, že to není recese. Není vidět, jak velká data budeš zpracovávat a kolik výpočtů k tomu budeš potřebovat.

Max a min - na to jsou funkce:
=MAX(DATA!$D$3:$D147)

Datum a čas výskytu maxima:
=HODNOTA.NA.TEXT(SUMA(INDEX(DATA!$B$3:$C147;POZVYHLEDAT(C2;DATA!$D$3:$D147;0);0)); "d.m.rrrr - hh.mm.ss")

Hledáme jednou, sečteme nalezený datum a čas a převedeme na text.

Výskyty jednoduše:
=HODNOTA.NA.TEXT(SUMA(--(DATA!$D$2:$D147=C2));"(\ 0\x\ )")

Jinak pokud už máš funkce sumif, countif, tak je můžeš použít. I v případě zadání celého sloupce je jejich režie poměrně malá (na rozdíl od jiných funkcí -- sum, max, součin.skalární, ..., které zpracovávají všechny buňky)

V opačném případě se vyplatí udržovat odkazy ručně nebo použít šílenosti typu d3:index(d:d;pozvyhledat(1000000000;d3:d65535)).


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

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