Příspěvky uživatele


< návrat zpět

Strana:  1 2 3 4 5 6 7 8 9   další » ... 40

třeba:

For i = 1 To posledniSloupec
If ws.Cells(novyRadek - 1, i).HasFormula Then
ws.Cells(novyRadek, i).Formula2 = ws.Cells(novyRadek - 1, i).Formula2
End If
Next i


nebo

For i = 1 To posledniSloupec
If ws.Cells(novyRadek - 1, i).HasFormula Then
ws.Cells(novyRadek, i).Formula2R1C1 = ws.Cells(novyRadek - 1, i).Formula2R1C1
End If
Next i


Podle toho co to má dělat.

zkus:

Sub ins()
Range("a2").FormulaLocal = "=TEXTJOIN(""; "";PRAVDA;KDYŽ(N6:AS6>0;N2:AS2;""""))"
Range("b2").Formula2Local = "=TEXTJOIN(""; "";PRAVDA;KDYŽ(N6:AS6>0;N2:AS2;""""))"
End Sub

// 1 odstranení záhlaví k Name
let
// úpravou rozsáhlé tabulky se dostanu k přibližně tomuto stavu
Zdroj = ...,
#"Přidané: Index2" = Table.AddIndexColumn(Zdroj, "Index", 0, 1, Int64.Type),
#"Radek jako table" = Table.FindText(#"Přidané: Index2", "Name"),
Vlastní1 = Table.Skip(Zdroj, #"Radek jako table"[Index]{0}),
#"Záhlaví se zvýšenou úrovní" = Table.PromoteHeaders(Vlastní1, [PromoteAllScalars=true]),
#"Odebrané sloupce" = Table.RemoveColumns(#"Záhlaví se zvýšenou úrovní",
List.Select(Table.ColumnNames(#"Změněný typ"), each Text.Start(_,6) = "Column"))
in
#"Odebrané sloupce"


// 2 redukce sloupců dle jména
let
// úpravou rozsáhlé tabulky se dostanu k přibližně tomuto stavu
Zdroj = ...,
#"Seznam jmen" = {"Rank", "St.Numb", "Name", "Start Time", "Finish Time"},
Sloupce = List.Accumulate(Table.ColumnNames(Zdroj), {}, (a, l) => if List.Count(List.Intersect({Table.Column(Zdroj, l ), #"Seznam jmen"})) > 0 then a & {l} else a),
#"Znovu Zdroj 1" = Table.SelectColumns(Zdroj, Sloupce),
#"Záhlaví se zvýšenou úrovní" = Table.PromoteHeaders(#"Znovu Zdroj 1", [PromoteAllScalars=true])
in
#"Záhlaví se zvýšenou úrovní"


Pozn. kód ... generuje chybu "Neimplementováno".

let
Zdroj = Table.FromRecords(
{
[a = 0, b = "xxx", c = "xxx", d = "xxx",e = "xxx"],
[a = 1, b = "xxx", c = "xxx", d = "xxx",e = "xxx"],
[a = 3, b = "xxx", c = "xxx", d = "Name",e = "xxx"],
[a = 4, b = "xxx", c = "xxx", d = "xxx",e = "xxx"]
}),
#"Radek jako table" = Table.FindText(Zdroj, "Name"),
#"Radek jako record" = #"Radek jako table"{0},
#"Jméno sloupce" = Record.FieldNames(#"Radek jako record"){List.PositionOf(Record.FieldValues(#"Radek jako record"), "Name")}
in
#"Jméno sloupce"


vrátí d

nebo něco jako

let
Zdroj = Table.FromRecords(
{
[a = 0, b = "xxx", c = "xxx", d = "xxx",e = "xxx"],
[a = 1, b = "xxx", c = "xxx", d = "xxx",e = "xxx"],
[a = 3, b = "xxx", c = "xxx", d = "Name",e = "xxx"],
[a = 4, b = "abc", c = "xxx", d = "xxx",e = "xxx"]
}),
jména = {"Name", "abc"},
Sloupce = List.Accumulate(Table.ColumnNames(Zdroj), {}, (a, l) => if List.Count(List.Intersect({Table.Column(Zdroj, l ), jména})) > 0 then a & {l} else a)
in
Sloupce


vrátí {b, d}

Moc to nechápu.

add najít první řádek:

Funkce Table.FindText najde první řádek, na kterém se vyskytuje hledaný text.

Pokud potřebuji jeho pozici mohu:

Nejprve přidat index funkce - Table.AddIndexColumn
pak najít text (funkce vrátí record) a číslo řádku si přečíst

nebo mohu vyhledat pozici nalezeného řádku funkcí
Table.PositionOf. tady funkce vrátí pozici

Pak odstraním předchozí řádky.
(Jsou i jiné možnosti.)

Pak první řádek dám do hlavičky a pokud znám názvy sloupců si je vyberu funkcí Table.SelectColumns.

Pokud některé sloupce chybí, je tu parametr MissingField.UseNull.

Výsledkem je tabulka se sloupci ve správném pořadí.

a nestačí

=SVYHLEDAT(A2;tabulka!$A$2:$C$6;3)

Funguje i tohle (bez "omáčky"):

Sub Makro()

ActiveSheet.Shapes("Bunka").Select
Selection.Formula = "=" & ActiveCell.Address
ActiveCell.Select
End Sub

shape : nejlépe nějaký obrázek, ale funguje i jiný. Dobrá začátek je buňku "vyfotit" a vložit do listu.

Zobrazí se to, co je ve vybrané oblasti včetně formátování a objektů nad oblastí (graf, obrázek, fotka, ...)

Ve starých verzích se nedoporučovalo překrývání = oblast by neměla zahrnovat místo, kde je obrázek, excel nezvládal rekurzi při zobrazování ...

Pokud budete mazat každý řádek zvlášť tak to bude pomalé vždy.
Rychost odstranění výběru závisí na počtu bloků ve výběru,
tj. je nutné odstaňované řádky spojit do jednoho souvislého bloku.
Řazení je v Excelu také dost rychlé.

Na psaní kódu nemám čas, tedy aspoň shrnu postup:

1. do pomocného sloupce zapamatovat pořadí řádků (není nutné)
2. do pomocného sloupce označit řádky k výmazu 'makrem, vzorcem)
3. seřadit všechny řádky tak, aby řádky k výmazu byly v jednom bloku na konci tabulky
4. smazat označené řádky
5. seřadit zbylé řádky v původním pořadí (pokud to potřebujeme)
6. vymazat pomocné sloupce.

Součástí mso je také nástroj Spreasheet Compare.
Pro rychlý náhled na změny stačí. Chytá i změny vzorců, formátování, ...

Je v nástrojích mso...

Ok, už je to jasnější.

dvě verze, v obou se musí nastvit informace o poloze.
1) Musí se ručně nastavit, kde je odpovídající pole
Requirements,
v rámci skupiny lze kopírovat
=LET(
_Requir; $B$7;
_zaklRadek; ŘÁDEK(_Requir) - 1;
_WD; $D$1:$W$1;
_WN; SLOUPCE(_WD);
x; XLOOKUP(
PRAVDA;
POSUN(_Requir; 2; 2; 1; _WN) < 0;
_WD;
0;
0
);
sum; SUMA($D$1:x; -x);
_x5; POSUN(x; _zaklRadek + 2; -1);
_y3; POSUN(x; _zaklRadek; );
IFERROR(sum + _x5 / (_y3 / x); "N/A")
)


2) stačí ukázat aktuální řádek, pak je možné kopírovat přes všechny skupiny (pokud se zachová struktura)

=LET(
pozice; A5;
aktKey; POSUN(
pozice;
0;
2 - SLOUPEC(pozice)
);
Key; POSUN(
aktKey;
-MIN(3; ŘÁDEK(aktKey) - 1);
0;
4
);
_Requir; XLOOKUP($B$3; Key; Key);
_zaklRadek; ŘÁDEK(_Requir) - 1;
_WD; $D$1:$W$1;
_WN; SLOUPCE(_WD);
x; XLOOKUP(
PRAVDA;
POSUN(_Requir; 2; 2; 1; _WN) < 0;
_WD;
0;
0
);
sum; SUMA($D$1:x; -x);
_x5; POSUN(x; _zaklRadek + 2; -1);
_y3; POSUN(x; _zaklRadek; );
IFERROR(sum + _x5 / (_y3 / x); "N/A")
)


Verze s liší jen úvodem, ve druhé se hledá první řádek skupiny.

+ pokud přibudou další Wxx, musí se upravit proměnná _WD. (ručně nebo pomocí xlookup...)

Jak jsem už psal, popis požadavku nic moc. Co znamená stahovat na další řádky? Na řádek 4 nebo 5 ????

Obecně:

1. Asi nevíte, jaký je rozdíl mezi absolutním a relativním odkazem. Znak $ v odkazu $D$1 znamená absolutní odkaz na buňku D1, tj. při kopírování vzorce odkazuje stále na stejnou buňku. Pokud to chcete kopírovat jinam, tak odkaz změňte na relativni => znaky $ v odkazu smažte.

2. Ve funkci let můžete záměnou posledního parametru sledovat výpočet.

3. Není dobré používat vzorce, kterým nerozumíte.

Vůbec to nechápu, popis a přiložený vzorec moc dohromady nejdou...

Funkce xlookup vrací odkaz...

=LET(
x; XLOOKUP( PRAVDA;
$D$5:$W$5 < 0; $D$1:$W$1;
0; 0);
sum; SUMA($D$1:x; -x);
_x5; POSUN(x; 4; -1);
_y3; POSUN(x; 2; );
IFERROR(sum + _x5 / (_y3 / x); "N/A")
)

Obecně bych tohle vše řešil přes datový model. Dvě tabulky:

V jedné datum a částka, a zřejmě ještě něco, ve druhé datum a rate.

k tomu kalendář. v Excelu se v datovém kodelu generuje automaticky na kliknutí.

Tabulky jsou spojeny relací s kalendářem přes datum.

Pak jednoduchá míra, které provede násobení částka * rate, případně výsledky sečte podle výběru a výstup přes kont.tabulku.

Nebo první tabulku z pq nahrát do listu a současně do datového modelu a primitivně počítaný sloupec částka * rate v datovém modelu. Sloupec se automaticky objeví v listu.

Zkuste

=DO.SLOUPCE(A2:B11)

Obrázek moc neříká. Předpokládám, že data jsou v datovém modelu.
Tam máte místo počítaných polí míry (měřítka) - jazyk DAX nebo můžete upravit datové sady - jazyk MDX. To druhé začátečníkům nedoporučuji.


Strana:  1 2 3 4 5 6 7 8 9   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