Příspěvky uživatele


< návrat zpět

Strana:  « předchozí  1 2 3 4 5 6 7 8 9   další » ... 283

Chyba v makre sa nepotlačuje, ale rieši 1
A rieši sa s prílohou.

Ak viete, že budú max 3, tak so vzorcov môžete povynechávať počítanie čísla stĺpca aj čísla skupiny, prípadne aj odstup OBLID zhora môžete dať napevno 1, ak to tak je.

To už musíte použiť maticový vzorec (v príklade som vyplnil iba žlté, a červenú bunku zmenil na ukážku). Samozrejme treba zachovať rozloženie ako je, lebo sa s tým vo vzorcoch počíta (riadky, stĺpce). Počet tých štvorstĺpcových skupín v smere zľava->doprava treba nachystať dostatočný počet, ktorý môže nastať, ale zase nie nezmyselne, keď bude veľa riadkov aj stĺpcov, bude výpočet náročný. A potom, samozrejme, sa nemôžu tabuľky prekrývať!

A VLOOKUP/SVYHLEDAT nevyhovuje?

No omrknite. Aj s korekciou WB textu na tmavom/bledom podklade (našiel som na nete, príliš som netestoval).

Komu sa chce, môžete overiť a prerobiť hranicu medzi okresmi Kežmarok, Stará Ľubovňa, Sabinov (KK, SL, SB). Rôzne zdroje - rôzna hranica, ale mne sa s tým piplať už nechce.

Excel grafické prvky deformuje. Je to tabuľkový program, nie grafický editor. To je proste fakt. Tvar SK je cca 1:2,117. Tak si všetky okresy zoskupte (klik na jeden okres - Ctrl+A - pravý klik na označené okresy v mape - Zoskupiť - Zoskupiť), potom zmeňte šírku skupiny (Formát tvaru - Šírka) na 2,117 násobok výšky (nejde mi to zadať priamo číslom, tak klikaním na šípku dole), a následne skupinu rozpustite (pravý klik na skupinu - Zoskupiť - Oddeliť).
Získate tak reálnejšie proporcie výmenou za malé grafické nepresnosti na hraniciach okresov.

"Je na to nějaký fígl ?"
Áno, v rekurzii je - ByRef deklarácia premennej.
Ide len o to, ktorí predok má dostať zmenenú hodnotu. Každý? Ak iba priamy predok a nie aj ďalší pred ním, tak sa musí urobiť kópia premennej do lokálnej premennej a tá sa odošle ako ByRef parameter.
Uveďte presný príklad použitia a požadovaného správania, nech sa vysomárime.

Skúste si pozrieť ako funguje parameter
userInterfaceOnly:=True
pri zamykaní. Ale v makre bude musieť byť asi heslo.
Som len na mobile, możno dám večer príklad...

To bude veľmi záležať na tom ako to chcete použiť, čo od toho očakávate za funkcionalitu, aké chovanie napr. pri prázdnych bunkách, koľko to má mať parametrov (tu je príklad na multioblasti) ...

Veľkým problémom bude napr. napodobniť chovanie UNIQUE v E2021, kde sa výsledok na viac riadkov stane automaticky FormulaArray, a alokuje potrebný počet riadkov pod funkciou, a ten počet riadkov si pamätá a mení podľa potreby.
To je problém. Áno, do funkcie môžete pridať parameter referenčnej bunky od ktorej dole sa budú vypisovať jedinečné hodnoty, ale tá funkcia si ten počet nedokáže zapamätať. Iste môžete urobiť globálnu premennú, kde si to bude pamätať, ale stačí debugovať makro, a hodnota je fuč, stačí otvoriť súbor a hodnota nie je. Ako potom zisťovať pokiaľ boli vypísané minulé hodnoty? Čo ak sú pod tabuľkou iné dáta? Ak nie sú, tak je zasa problém použiť na zistenie posledného riadku xlUp pri použitom filtrovaní (v E2021 zase pre zmenu prestala fungovať doteraz spoľahlivá metóda zisťovania posledného riadku aj napriek filtru, a to cez Find, aj keď zase doprogramovávať funkciu UNIQUE v E2021 by bolo potrebné iba v špeciálnom prípade ako tu - multioblasti a pod), atď.

Problémov môže byť neúrekom. A to som sa zamyslel nad témou len trošku. Ako som písal - záleží na použití.

Public Function XUNIQUE(bBlank As Boolean, ParamArray paRNG()) As Variant
Dim RNG As Range
Dim cCol As New Collection
Dim aRes() As Variant, aVal() As Variant
Dim xRows As Long, xColumns As Integer, r As Long, c As Integer, i As Long

'pracuje i s nesouvislou multioblastí
For i = LBound(paRNG) To UBound(paRNG)
Set RNG = paRNG(i)

xRows = RNG.Rows.Count
xColumns = RNG.Columns.Count

'načtení hodnot
If xRows * xColumns = 1 Then
ReDim aVal(1 To 1, 1 To 1)
aVal(1, 1) = RNG.Value
Else
aVal = RNG.Value
End If

'kontrola jedinečnosti hodnot
On Error Resume Next
For c = 1 To xColumns
For r = 1 To xRows
'co s Empty a "" ?
If LenB(aVal(r, c)) > 0 Then
cCol.Add aVal(r, c), CStr(aVal(r, c))
ElseIf bBlank Then
cCol.Add "", ""
End If
Next r
Next c
On Error GoTo 0
Next i

If cCol.Count > 0 Then
ReDim aRes(1 To cCol.Count, 1 To 1)

'načtení jedinečních hodnot z kolekce
For r = 1 To cCol.Count
aRes(r, 1) = cCol(r)
Next r

XUNIQUE = aRes
Else
XUNIQUE = CVErr(xlErrNA)
End If

Set cCol = Nothing
End Function

A k čomu makro??? Veď tam dajte iba vzorec
=IF(COUNTIF(oblast;C3)>0;"JE TAM";"NENALEZENO")
=KDYŽ(COUNTIF(oblast;C3)>0;"JE TAM";"NENALEZENO")


ak rozdelené makro tak:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' Tato buňka nebo oblast když se změní, spouští se makro
Set KeyCells = Range("C3")

If Not Intersect(KeyCells, Target) Is Nothing Then
' Následující makro se změnou buňky nebo oblasti spouští
Over KeyCells.Value
End If
End Sub


Sub Over(ByRef hodnota_bunky As Variant) 'ověří jestli se hodnota buňky nachází v oblasti
' Debug.Print hodnota_bunky

Application.EnableEvents = False
Range("A6").Value = IIf(IsError(Application.Match(hodnota_bunky, Range("oblast"), 0)), "NENALEZENO", "JE TAM")
Application.EnableEvents = True
End Sub

ak spojené tak
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range

' Tato buňka nebo oblast když se změní, spouští se makro
Set KeyCells = Range("C3")

If Not Intersect(KeyCells, Target) Is Nothing Then
' Následující makro se změnou buňky nebo oblasti spouští
' Debug.Print hodnota_bunky

Application.EnableEvents = False
Range("A6").Value = IIf(IsError(Application.Match(KeyCells.Value, Range("oblast"), 0)), "NENALEZENO", "JE TAM")
Application.EnableEvents = True
End If
End Sub

UDF ?
Téma Práce s dlouhými celými čísly od "vovka.h".

Áno, tak je to aj v tom videu 2:58 - 3:52.

To video vlastne ukazuje, že nič nefunguje. A ten posledný krok, kde to kopíruje po jednom riadku, je obdoba toho, čo robí to makro, akurát vo videu je tým pádom zbytočný ten OFFSET vzorec. To makro v tom súbore mať predsa nemusíte. Len ho raz použijete na potrebnú oblasť + predpokladaná rezerva, a makro zmažete. Nebude v súbore žiadne a súbor ostáva XLSX (nie XLSM), a PF funkčné, na prázdnych riadkoch nič nebude.
Bohužiaľ v takomto prípade hádže Excel polená pod nohy...

Pokiaľ si pamätám, tak toto obmedzenie absolútneho odkazu sa nedá obísť. Ja som to párkrát riešil tak, že som si urobil makro, ktoré mi to nastavilo na celu požadovanú oblasť samostatne pre každú bunku jedno PF. O koľko riadkov sa bude jednať? Počet riadkov bude stále meniteľný?

EDIT:
Príklad.

Vyskúšajte výhradne na kópii (!) ostrého súboru.


Strana:  « předchozí  1 2 3 4 5 6 7 8 9   další » ... 283

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

odpocet a storno tl.

PavDD • 28.3. 8:53

odpocet a storno tl.

Začátečník • 26.3. 14:39

odpocet a storno tl.

PavDD • 26.3. 10:22

odpocet a storno tl.

elninoslov • 26.3. 7:50

odpocet a storno tl.

PavDD • 26.3. 7:26

odpocet a storno tl.

elninoslov • 25.3. 22:34

odpocet a storno tl.

Začátečník • 25.3. 15:09