Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  4 5 6 7 8 9 10 11 12   další » ... 299

To je naschvál tak urobené. Pre kontrolu správnej funkčnosti. V kóde sú 2 riadky. Mazací je vypnutý pomocou apostrofu. Ak si to skontrolujete, tak vypnite Select a zapnite Delete.
rngDEL.EntireRow.Select
' rngDEL.EntireRow.Delete

Makro je urobené tak, aby mazalo všetky riadky naraz. To je výhodné časovo, ale iba do nejakého rozumného počtu. Range sa preťaží. Ak by to trvalo neúmerne dlho (napr. dlhšie ako pôvodný spôsob), tak tam doplním, aby napr. každých 1000 nájdených riadkov vykonalo výmaz. Potom nebude Range preťažovaná.

No problema...
Sub smazat()
Dim Countrow As Long
Dim R As Long, c As Long
Dim CalcMode As Long
Dim ViewMode As Long
Dim rngDEL As Range
Dim aVal()
Dim aCon() As String

With Application
CalcMode = .Calculation
.Calculation = xlCalculationManual
End With

With ActiveWindow
ViewMode = .View
.View = xlNormalView
End With

aCon = Split("EN,Z,S,B", ",")

With ActiveSheet.UsedRange
.Parent.DisplayPageBreaks = False

Countrow = .Rows.Count

If .Column <> 1 Then
MsgBox "Použitá oblast nezačíná sloupcem A", vbExclamation: Exit Sub
End If

If Countrow = 1 Then
ReDim aVal(1 To 1, 1 To 1)
aVal(1, 1) = .Cells(1, 1).Value
Else
aVal = .Columns(1).Value
End If

For R = 1 To Countrow
For c = 0 To UBound(aCon)
If Left(aVal(R, 1), Len(aCon(c))) = aCon(c) Then
If rngDEL Is Nothing Then
Set rngDEL = .Cells(R, 1)
Else
Set rngDEL = Union(rngDEL, .Cells(R, 1))
End If
Exit For
End If
Next c
Next R
End With

If Not rngDEL Is Nothing Then
rngDEL.EntireRow.Select
' rngDEL.EntireRow.Delete
End If

ActiveWindow.View = ViewMode
Application.Calculation = CalcMode
End Sub

Neviem či nie je rozdiel "pre firmy" a "pre veľké organizácie".
Ako píše Dingo, vo verzii "pre veľké organizácie" sa to nachádza v menu Štart.
W10/W11
Štart - napísať "Spreadsheet Compare"

alebo

W10
Štart - Nástroje balíka Office - Spreadsheet Compare
W11
Štart - Všetko - Nástroje balíka Office - Spreadsheet Compare

Citácia z webu MS:

Important: Spreadsheet Compare is only available with Office Professional Plus 2013, Office Professional Plus 2016, Office Professional Plus 2019, or Microsoft 365 Apps for enterprise.

vľavo:
=SUMIF($C$2:$Y$2;"<"&TODAY();C3:Y3)
=SUMIF($C$2:$Y$2;"<"&DNES();C3:Y3)

vpravo:
=SUMIF($C$2:$Y$2;">="&TODAY();C3:Y3)
=SUMIF($C$2:$Y$2;">="&DNES();C3:Y3)

alebo
=SUM(C3:Y3)-B3
=SUMA(C3:Y3)-B3

No k tomu nie je príliš čo vysvetľovať.
Jedno NestedJoin s parametrom LeftAnti vráti riadky, ktoré sú v prvej tbl a nie sú v druhej, a druhé NestedJoin naopak vráti riadky ktoré sú v druhej tbl a nie sú v prvej.
A aby sme tieto 2 výsledky rozlíšili, pridáme k nim stĺpec s hodnotou, či sa jedná o výsledok Navíc alebo Chybí.
Tento stĺpec sa dá potom po spojení výsledkov efektne použiť v Rýchlom filtri.

Stĺpec QQ, ktorý pri NestedJoin vzniká je irelevantný, mažeme ho.

PQ?

Ak budem brať ako identifikátor celý riadok, tak by som to asi rýchlo urobil s 2 pomocnými stĺpcami.

Aha súbor má 558 KB, nevlezie sem, tak vzorce:
List "actual":
stĺpec "Kontrola"
=TEXTJOIN("•";FALSE;AxTable1[@[Typ řádku]:[ID řádku úpravy]])
=TEXTJOIN("•";NEPRAVDA;AxTable1[@[Typ řádku]:[ID řádku úpravy]])

stĺpec "Check"
=IF(ISNA(MATCH([@Kontrola];AxTable15[Kontrola];0));"Navíc";"")
=KDYŽ(JE.NEDEF(POZVYHLEDAT([@Kontrola];AxTable15[Kontrola];0));"Navíc";"")


List "old test":
stĺpec "Kontrola"
=TEXTJOIN("•";FALSE;AxTable15[@[Typ řádku]:[ID řádku úpravy]])
=TEXTJOIN("•";NEPRAVDA;AxTable15[@[Typ řádku]:[ID řádku úpravy]])

stĺpec "Check"
=IF(ISNA(MATCH([@Kontrola];AxTable1[Kontrola];0));"Chybí";"")
=KDYŽ(JE.NEDEF(POZVYHLEDAT([@Kontrola];AxTable1[Kontrola];0));"Chybí";"")


A potom si len dáte filtre na stĺpce Check.

To je jednoduché, len musíte pred prepisom dočasne vypnúť udalosti, lebo by sa dokola volal znovu opačný prepis.

No a aký máte Office? Lebo tam je tých funkcií viac použitých.

Môžete to urobiť obdobne pomocou Kontingenčných tabuliek s WC vo Filtre, materiálom ako Riadky, a Hodnota bude UKONČENÍ s voľbou Maxima.

Napr. takto?
=IFERROR(LET(p;$B$2:$B$27=Y$4;g;FILTER($G$2:$G$27;p);e;FILTER($E$2:$E$27;p);u;UNIQUE(g);HSTACK(u;BYROW(u;LAMBDA(x;MAX(FILTER(e;g=x))))));"N/A")
=IFERROR(LET(p;$B$2:$B$27=Y$4;g;FILTER($G$2:$G$27;p);e;FILTER($E$2:$E$27;p);u;UNIQUE(g);SROVNAT.VODOROVNĚ(u;BYROW(u;LAMBDA(x;MAX(FILTER(e;g=x))))));"N/A")

V lubovom vzorci predsa stačí zmeniť čísla v OFFSET-och (POSUN), lebo je to tam napevno:
OFFSET(x; 4; -1) --> OFFSET(x; ROW(A4); -1)
OFFSET(x; 2; ) --> OFFSET(x; ROW(A2); )

Ale ak nechcete vždy robiť štvoricu vzorcov (4 riadky materiálu), dá sa urobiť taký naťahovací, ktorý bude stačiť ťahať myšou, a on bude reagovať na násobky 4. Potrebujete mať teda rovnaký výsledok vo všetkých 4 riadkoch materiálu? Ak nie, v ktorom zo 4?

Snáď som to pochopil. Ak nemáte funkciu LET, neviem preklad do CZ, dá sa to aj bez nej.
=IFNA(LET(IDX;MATCH(TRUE;D5:W5<0;0);SUM(OFFSET(C1;;;;IDX))+(INDEX(C5:V5;IDX)/(INDEX(D3:W3;IDX)/INDEX(D1:W1;IDX))));"N/A")
=IFNA(LET(IDX;POZVYHLEDAT(PRAVDA;D5:W5<0;0);SUMA(POSUN(C1;;;;IDX))+(INDEX(C5:V5;IDX)/(INDEX(D3:W3;IDX)/INDEX(D1:W1;IDX))));"N/A")

Vzorec funguje tak, ako som pochopil Váš text. Priložte prílohu s pár príkladmi a s očakávanými výsledkami.

=IF(AND(COUNT(B2:M2)<4;COUNT(N2:U2)<5);1000;AVERAGE(B2:U2))
=KDYŽ(A(POČET(B2:M2)<4;POČET(N2:U2)<5);1000;PRŮMĚR(B2:U2))


Strana:  1 ... « předchozí  4 5 6 7 8 9 10 11 12   další » ... 299

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