Příspěvky uživatele


< návrat zpět

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

@stalker : Vaše riešenie bohužiaľ funkčné nie je. V prípade bodov som ja postupoval zbytočne rovnako zložito cez COUNTIFS ako v prípade mien. Pri bodoch naozaj stačí ako Vy použiť len LARGE, lebo nie je potrebné vedieť komu patria. No pri menách LARGE zlyháva v určení mien s rovnakým počtom bodov, viď tbl "najslabši". Je jasné, že obaja sú druhý, ale pre výpis pod sebou v tabuľke potrebujeme pomocou COUNTIFS zistiť koľko ich pred každým riadkom rovnakých už bolo, aby aj rovnaký boli zaradený pod sebou.

@neck : Na body teda použite jednoduchšie riešenie od stalker, no na mená musíte použiť zložitejšie riešenie, napr. to odo mňa, príp. čo dá niekto iný.
Lebo
Martin
Kalor
Kalor

je zle.
Musí to byť
Martin
Kalor
Tibor

A to ešte nevravím o nejakom vhodnom upozornení, ak by rovnakí presahovali tabuľku o 3 riadkoch...

Do iného zatvoreného zošitu to ale kolegovi cez EVALUATE nepôjde. To by sa muselo riešiť komplikovane, napr. načítaním dát zo zdroja do skrytého listu (pri každej zmene textu zdroja). To, čo chcete Vy, teda aby bol vzorec ako text, a zdroj variabilný a tiež ako text, ext. súbor zatvorený, je cez EVALUATE nemožné.

Alebo obyč. maticový (mega)vzorec pomocou COUNTIFS...

Ak znížite počet krokov, nezlepší sa to ?

V pohode, tie Vaše vzorce sú prevediteľné, len si doplňte pre každý odkaz na stĺpec Tabuľky, jej názov ([@trip] -->> TabData[@trip]). Aj s tým majú menej ako 255 znakov.

Kolegov prípad je riešiteľný, ako som písal, skrátením pomocou Definovaných názvov.
Definujte názov ZDROJ
='C:\Users\NovakJ\Desktop\Karel práce\GPCZ složka dokumentů\GPCZ podklady pro fakturaci\[ABCDEFGHEIJKLMOP.xlsx]Haulier Proforma Details Report'!$G$2:$G$200000
A potom len vo vzorcoch namiesto
haulier!$G$2:$G$200000
požijete
ZDROJ
teda namiesto
...SVYHLEDAT(TabData[@trip];haulier!$G$2:$G$200000;1;0)...
bude
...SVYHLEDAT(TabData[@trip];ZDROJ;1;0)

Skrátiť to ide ako som písal.
Definovaný názov TMPVLO
=VLOOKUP(TabData[@trip];haulier!D$2:$G$200000;1;FALSE)
=SVYHLEDAT(TabData[@trip];haulier!D$2:$G$200000;1;NEPRAVDA)

V bunke D7 bude:
IF(AND(TYPE(TabData[@trip])=1;IF(IF(ISERROR(VTMPVLO);"XXX";TMPVLO)="XXX";"";IF(ISERROR(TMPVLO);"XXX";TMPVLO))="");"X?X";IF(IF(ISERROR(TMPVLO);"XXX";TMPVLO)="XXX";"";IF(ISERROR(TMPVLO);"XXX";TMPVLO)))
KDYŽ(A(TYP(TabData[@trip])=1;KDYŽ(KDYŽ(JE.CHYBHODN(VTMPVLO);"XXX";TMPVLO)="XXX";"";KDYŽ(JE.CHYBHODN(TMPVLO);"XXX";TMPVLO))="");"X?X";KDYŽ(KDYŽ(JE.CHYBHODN(TMPVLO);"XXX"; TMPVLO)="XXX";"";KDYŽ(JE.CHYBHODN(TMPVLO);"XXX";TMPVLO)))

Teda skrátené a vykonateľné.

Mohol by ste nahrať aspoň maličkú prílohu s 3 riadkami dát v každej zlučovanej Tabuľke/tabuľke? O koľko stĺpcov CZK->EUR ide? Násobíte r. 2022 aktuálnym kurzom ??? Alebo máte pre každý dátum historický kurz? Koľko je celkovo +- riadkov a stĺpcov? ...

Obmedzenie EVALUATE/VYHODNOTIT spočíva v maximálnej dĺžke textu vzorca 255 znakov. Preto Vám to nejde ani po nutnej úprave všetkých
[@trip]
na
TabData[@trip] v texte vzorca.

Ten vzorec je divný, vkuse to isté hľadanie. Skúste ten vzorec premyslieť inak, prípadne rozložiť na časti ako Definované názvy, a tie použiť vo vzorci (to som netestoval - len nápad).

Každopádne, keď sa vojdete do 255 znakov, tak:

1. Vytvorte si definovaný názov napr. "VYHODNOTIT_VZOREC" napr. takto:
=EVALUATE(IF(procedure!$A$2=2;procedure!$D$7;IF(procedure!$A$2=1;procedure!$D$5;"není 1 ani 2")))
=VYHODNOTIT(KDYŽ(procedure!$A$2=2;procedure!$D$7;KDYŽ(procedure!$A$2=1;procedure!$D$5;"není 1 ani 2")))


2. Do stĺpca "control trip" v Tabuľke "TabData "zadajte vzorec:
=VYHODNOTIT_VZOREC

Poznámky:
-na liste "haulier" vyhľadávate v stĺpci G, kde nič nie je
-ak máte v procedure!D7 a D5 český vzorec, na žiadnom inom Office to EVALUATE/VYHODNOTIT nedokáže vykonať

Áno, už som to tiež písal vyššie. Parameter v EVALUATE/VYHODNOTIT je text.

@Alfan: nemôžete priložiť nejakú anonymizovanú prílohu? Lepšie by sme to dokázali implementovať na nej. Nech je vidno čo je Tabuľka, kde sú texty (vzorce), čo treba pridať (odkaz na Tabuľku/list do textu vzorca) ...

nevysomári - nevyzná sa, neporozumie, je z toho somár 5

Nemôžete použiť
[@trip]
nezabúdajte, že je to textový reťazec, a on nevie o akú ide Tabuľku. Musíte použiť
tblPokus[@trip]

A to vyskúšanie jednoduchých vzorcov som myslel presne ako som napísal. Neskúšajte to VYHODNOTIT rozchodiť na polmetrovom vzorci využívajúcom pokročilé funkcie, ale na jednoduchom KDYŽ ako som napísal.

Samozrejme, zabudol som na preklad :)

Skúste dať preč
"="&
vraj to má byť text bez "=", mne to fičí s ním aj bez neho.

EDIT:
Nechce sa mi to overovať, tak to prehodím na Vás. Overte ďalej, či EVALUATE/VYHODNOTIT pozná CZ vzorce.
A určite sa nevysomári mimo Tabuľky z tohto
[@trip]
Potom skúste iba jednoduchý vzorec, napr.
KDYŽ(1=1;1+2;5+5)
, žiadne TYP, JE.CHYBHODN, SVYHLEDAT a pod.

Vytvorte si Definovaný názov napr. "PROVEST_VZOREC"
=EVALUATE("="&List1!$A$8)
=VYHODNOTIT("="&List1!$A$8)

a potom do C2 dajte
=IF(A2=2;PROVEST_VZOREC;4444)
=KDYŽ(A2=2;PROVEST_VZOREC;4444)

Ak pri otváraní zošitu pridáte do zabezpečenia parameter UserInterfaceOnly, zmena makrom nebude vyžadovať odomknutie, a všetko môže byť zamknuté, no nemôže byť prepojená bunka:
Private Sub Workbook_Open()
Worksheets("List1").Protect Password:="", UserInterfaceOnly:=True
End Sub

V liste potom stačí
Private Sub CheckBox1_Click()
Range("B2").Value = CheckBox1.Value
End Sub


Ak chcete prepojenú bunku, môžete ju nalinkovať do skrytého listu, nemusí byť v tom liste a zavadzať. Ten list ale bude skrytý nastavením vlastnosti
Visible = xlSheetVeryHidden
Teda nebude dostupné jeho odkrytie štandardným spôsobom, ale iba vo VBA. Potom nepotrebujete vyššie uvedené 2 kódy.

A to VBA zabezpečte tiež heslom. Aby sa nedal odokryť list, ani aby nebolo vidieť heslo vo Workbook_Open.
Tools - VBAProject Properties - Protection - Lock project for viewing + heslo

Ale zabezpečenie Excelu neberte ako nedobytné, to je skôr na zabránenie nechcenému dodrbkaniu dát, ako na zabezpečenie pred "hackerom" :)

Do modulu ThisWorkbook
Private Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
If Sh.Name <> "Vstup" Then
Dim Bunka As Range, Riadok(), bPodmienka As Boolean

On Error Resume Next
Set Bunka = Intersect(Target, Sh.Range("C2:C11")).Cells(1)
If Err.Number = 0 Then
Cancel = True
Application.EnableEvents = False
If Bunka = ChrW(10004) Then
Bunka = ""
Else
Riadok = Bunka.Offset(0, -2).Resize(, 4).Value
bPodmienka = (Not IsEmpty(Riadok(1, 1)) And IsNumeric(Riadok(1, 1))) And (Not IsEmpty(Riadok(1, 2)) And IsNumeric(Riadok(1, 2))) And Riadok(1, 2) >= Range("hodnmin") And (Not IsNumeric(Riadok(1, 4)) Or IsEmpty(Riadok(1, 4)))
Bunka = IIf(bPodmienka, ChrW(10004), "")
End If
Application.EnableEvents = True
End If
End If
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name <> "Vstup" Then
Dim Zmena As Range, ARE As Range, OK As Range, NOK As Range, Riadky(), r As Long, hodnmin As Double

Set Zmena = Intersect(Target, Sh.Range("A2:B11,D2:D11"))

If Not Zmena Is Nothing Then
Set Zmena = Intersect(Zmena.EntireRow, Sh.Range("A2:D11"))
hodnmin = Range("hodnmin")

For Each ARE In Zmena.Areas
Riadky = ARE.Value
For r = 1 To UBound(Riadky, 1)
If Riadky(r, 3) <> "" Then
Select Case (Not IsEmpty(Riadky(1, 1)) And IsNumeric(Riadky(1, 1))) And (Not IsEmpty(Riadky(1, 2)) And IsNumeric(Riadky(1, 2))) And Riadky(r, 2) >= hodnmin And (Not IsNumeric(Riadky(r, 4)) Or IsEmpty(Riadky(1, 4)))
Case True: If OK Is Nothing Then Set OK = ARE.Cells(r, 3) Else Set OK = Union(OK, ARE.Cells(r, 3))
Case False: If NOK Is Nothing Then Set NOK = ARE.Cells(r, 3) Else Set NOK = Union(NOK, ARE.Cells(r, 3))
End Select
End If
Next r
Next ARE

Application.EnableEvents = False
If Not OK Is Nothing Then OK.Value = ChrW(10004)
If Not NOK Is Nothing Then NOK.Value = ""
Application.EnableEvents = True
End If
End If
End Sub

EDIT:
Pridal som aj reakciu na to, ak zmeníte A/B na nečíslo alebo D na číslo, prípadne zmažete - fajka zareaguje. Lebo môžete urobiť zmenu dát, ktoré stáli predtým za schválením fajky...

Které by před kopírováním dat na jiný list omezilo oblast kopírovaných dat podle týdnu.

To je taká čarovná veta :)
Toto vyzerá ako ten výsledný list. Teda sem sú už dáta nakopírované z toho listu kde sa počítajú. A odtiaľ sa môžu kopírovať aj filtrované, čo môže meniť spôsob kopírovania. Celé kopírovanie neviem ako má fungovať, či by to náhodou nemohlo byť v jednom kroku z toho počítaného. Lebo takto to vyzerá, akoby ste chcel jedným krokom kopírovať dáta z počítacieho/filtrovacieho listu (ktorý berie dáta asi z ďalších listov), a druhým krokom z tejto kópie kopírovať vybraný rozsah týždňov na ďalší list (ktorý tu nie je, a neviem ako má vyzerať). Ideálne by bolo anonymizovať súbor, ponechať logiku, formáty, vzorce, filtre, zdrojový list/y, počítaný list, a požadovaný výsledok (hoci aj manuálne vytvorený).

Ak to má kopírovať makro, tak nie je potreba ani stĺpec "týden", to si dokáže makro vypočítať, či už po jednom cez WorksheetFunction alebo hromadne cez Evaluate. Stále pridávate tie texty "46 .týden", "47 .týden", ... Tie tam ale nie sú, tie tam predsa dopĺňame a zlučujeme s iným textom s menom.

Kopírovať vo Vašom slovníku znamená Copy+Paste alebo hodnota=hodnota?

Samotné makro väčšinou nie je problém napísať, ale pochopenie, o čo sa dotazovateľ snaží, často nevhodnou prílohou, popisom, otázkami, logikou dát a pod, to je často problém.

Samotné makro máte v prílohe, ale ak to nechcete mať rozkúskované, musíte mi pomôcť lepším podaním info.


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

Uživatelské menu

Nejste přihlášen(a)
avatar\n

Menu

On-line nástroje

Formulář Faktura

Formulář Faktura IV

Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.

Aktivní diskuse

Čas od do

jarek1111 • 18.4. 13:46

Čas od do

lubo • 18.4. 11:13

Čas od do

jarek1111 • 18.4. 8:32

Čas od do

jarek1111 • 18.4. 8:31

Makro smyčka

MilanKop • 18.4. 7:18

Makro smyčka

elninoslov • 18.4. 0:18

Makro smyčka

MilanKop • 17.4. 21:33