Příspěvky uživatele


< návrat zpět

Strana:  1 ... « předchozí  141 142 143 144 145 146 147 148 149   další » ... 286

S tým plne súhlasím. Mepexg, nechce sa Vám, čo ? Ale mohol by ste 5

Keď si lúskam niektoré Vaše riešenia po riadkoch, tak im väčšinou rozumiem, čo robia tie kroky, ale nechápem prečo je to tak či onak urobené. A žiaľ v PQ ani neviem, že to tak urobiť ide, ako ste to tam nasúkal.

Človek si už dohľadá ako nejakú fnc použiť, ale prísť na to, že existuje ... a na tú logiku postupností k dosiahnutiu výsledku ... na to si budem dlho zvykať.

Tiež si myslím, že ste tu asi jediný čo to ovláda poriadne. Žiadne vlezdoprdelkovanie - fakt.

Vám takéto exportované CSV robia niekde problém pri importe niekam ? Lebo ak nie, a robí to len na tej stránke csvlint.io tak neva, nie ? Mne to Win zobrazí korektne ten CSV aj pri importe do Excelu, aj v Notepade, NotePad++, aj pri importe vo Worde. Pri importoch si nastavím oddeľovač a UTF-8.

Hlavne uveďte, kde Vám už xlnc (alebo niekto iný) odpovedal.

EDIT: Ak to preženiete cez GoogleSheets, tak to aspoň neškrieka chybu "Unexpected whitespace" :), ale kódovanie to nemení.

Keby išlo o výber adresára, súborov, listov, a vytvorenie takého zoznamu, tak to nieje problém makrom cez formulár. Na pridávanie listov funguje aj tlačítko aj Enter, na mazanie tlačítko aj DEL. Len nedokážem urobiť/prerobiť také parádne dotazy ako mepexg :(
Tak len možno pre inšpiráciu...

Máte pravdu. Skúšal som odkaz urobiť cez OFFSET, aj INDEX, aj INDIRECT. Vždy rovnaký výsledok - ActiveX ComboBox v E2016 dáva úplné hovadiny. Buď nereaguje na zmenu vôbec, alebo hodnoty dáva dvojmo tak, že najskôr idú ako majú všetky, potom za tým pokračuje zopár rovnakých niekde zo stredu, a za tým ešte pridá ďalšie od začiatku apod. Alebo pri dupľovaní ešte pridáva j medzery, ktoré sa ale pod kurzorom menia. To bude snáď nejaký bug E2016 alebo ActiveX ComboBoxu.
Normálny ComboBox funguje s tým zoznamom OK, ale tam sa nedá vyhľadávať. Neviem čo s tým, možno niekto poradí.

Takto, ak ten počet buniek je v každom z tých 3 stĺpcov rovnaký. Ak má každý inú výšku, dá sa definovaný zoznam upraviť.

1. Tie zdrojové súbory budú všetky v jednej zložke ?
2. Výber súborov má prebiehať v liste Parameters ? Priamym zapisovaním cesty do buniek ? Ak je 1. Áno, tak sa dá urobiť výberový zoznam, ak je Nie, tak dvojklikom na bunky výberové okno pre súbor.
3. Ak môže byť viac listov z jedného súboru potom musí byť viac riadkov s rovnakým názvom súboru v Parameters.
4. Musí tam byť ešte niekde uložený zoznam listov, pre každý zvolený zošit. Navrhujem list Settings, kde sa ku každému menu súboru pomocou ADO (bez otvárania súboru) doplní zoznam listov, z ktorých bude potom výberovým zoznamom na výber.
5. Rozmiestnenie dát vo všetkých súboroch a všetkých listoch je rovnaké ? Teda napr. dáta začínajú od 2 riadku ?
6. Počet vyplnených dát je variabilný na listoch aj v súboroch? Ak Áno, dá sa použiť nejaký smerodajný stĺpec na spočítanie posledného riadku ?
7. Odkiaľ sa berie položka Firma ? To je divné, lebo z kódu vyplýva, že sa Firma vzťahuje k bunkám, ale z listu Parameters je zrejmé, že sa Firma vzťahuje k listom/súborom. To je v celom liste v stĺpci B tá istá firma ? Ak nie, nedáva to už vôbec zmysel. Rozseknite to viď. 9. a 10.
8. To stávajúce makro je riešené divne. Naozaj potrebujete kopírovať hodnoty aj formáty ? Nestačí náhodou hodnoty kopírovať do prednaformátovanej tabuľky ?
9. Priložte 1 zdrojový súbor (firemné dáta zmente za somariny), ponechajte rozumný počet dát, ale hlavne formáty, usporiadanie, vyplnenosť buniek, atď....
10. Priložte aj príklad požadovaného výsledku.

Už teraz som napísal viac než Vy, a to som ani čiarku nenakódil (a ani tým zatiaľ nedávam avízo, že sa na to dám, uvidím podľa odpovedí a zložitosti) :)

Toto makro Vám doplní Vami požadované PF do každej bunky označenej oblasti.
Sub SipkyPF()
Dim Bunka As Range, Adr As String, Lst As String

With Application
.ScreenUpdating = False
.Calculation = xlCalculationManual
.EnableEvents = False
End With

With Selection
.FormatConditions.Delete
Lst = "='" & .Parent.Name & "'!"

For Each Bunka In .Cells
Adr = Lst & Bunka.Offset(-1, 0).Address
With Bunka.FormatConditions.AddIconSetCondition
.IconSet = ActiveWorkbook.IconSets(xl3Arrows)

.IconCriteria(1).Icon = xlIconRedDownArrow
With .IconCriteria(2)
.Type = xlConditionValueFormula
.Value = Adr
.Operator = 7
.Icon = xlIconRedDownArrow
End With

With .IconCriteria(3)
.Type = xlConditionValueFormula
.Value = Adr
.Operator = 5
.Icon = xlIconGreenUpArrow
End With

End With
Next Bunka

End With

With Application
.ScreenUpdating = True
.Calculation = xlCalculationAutomatic
.EnableEvents = True
End With
End Sub

Nechcem byť prostredníkom, lebo ten vždy dopadne zle, ale podľa popisu toto vyzerá skôr na nejaké to PowerQuerry, a na to je majster užívateľ Mepexg. Skúste ho osloviť cez Vzkaz

Já to asi chápem. Ide o to, že pri tomto druhu PF, nieje možné použiť relatívne adresovanie ("...zrušit ukotvení..."). Dokonca to nefachá ani ak sa použije Def.Name. Ak by to bola napevno daná oblasť, tak by tie PF išli asi jednorázovo vložiť do každej bunky makrom. Inak neviem, ale už min raz tu presne rovnaký problém bol.

OT: Ak na to existuje riešenie, tak by sa dalo asi použiť aj pri inom obdobnom obmedzení. Načítavanie obrázku, cez prepojenie, ktoré odkazuje na vzorec. Po pretiahnutí inam, vzorec vracia správne hodnoty, ale prepojenie na obrázok sa nemení.

No dobre, aby ste nepovedal, že máte málo matrošu na štúdium, tak aby som Vám ešte viacej zamotal hlavu, pridal som ďalšie inšpiračné možnosti:

Pokus1 - Pomocou metódy Evaluate získate v jednom kroku vyhodnotenie pre každý riadok, či sa má skryť, alebo nie. Potom ale musí znovu nastúpiť cyklus a tieto oblasti spojiť do jednej, ktorá sa skryje. Ten, kto bude ten vzorec ale upravovať, ten sa z toho radovať nebude :)

Pokus2 - Defakto jednoriadkový kód. To okolo je potrebné pre každú metódu, lebo odkryť ich najskôr musíte vždy, aby boli uvedené riadky do východzieho stavu, a Application.ScreenUpdating je len kvôli prebliknutiu. Inak je to docela brutálne jednoriadkové riešenie, pri ktorom sa budú mnohí za hlavu chytať. 1. problém, ak nastane, že nieje čo skryť, sa dá ľahko obísť pridaním On Error Resume Next. Ale 2. problém je, že výsledná dlhočizná adresa všetkých buniek na skrývanie nesmie prekročiť 255 znakov. Čo u Vás prekročí. Je to obmedzenie metódy Range. Takže toto je u Vás nepoužiteľné, uvádzam len ako pikošku :)

Pokus3 - Opäť jednoriadkové riešenie, ktoré ale spolieha na pomocný (kľudne skrytý) stĺpec. Teraz je to stĺpec AM, v ktorom sú vzorce, ktoré podľa podmienok vyvolajú chybu na riadku, ktorý treba skryť. SpecialCells potom tieto bunky dokáže naraz identifikovať. Problém môže nastať, vlastne iba vtedy, ak nebude nič na skrývanie. A preto je tam On Error. Táto možnosť je pre Vás asi najvhodnejšia pre implementáciu a pochopenie.

Super. A vyriešili sa aj problémy s tým skrývaním 5
Sub Skryť_riadky()
Dim Praca(), RNG As Range, i As Byte, y As Byte, Riadok As Long, Pocet As Byte

Application.ScreenUpdating = False
Odkryť_riadky 'Najskôr všetky zobraziť

With ThisWorkbook.ActiveSheet
ReDim Praca(1 To 124, 1 To 1)
Praca = .Cells(8, 4).Resize(124).Value 'Načítať hodnoty

For i = 0 To 30 'Opakuj pre 31 skupín
Pocet = 0

For y = 2 To 4 'Kontroluj v skupine bunky 2,3,4
Riadok = i * 4 + y 'Riadok medzi hodnotami
If IsEmpty(Praca(Riadok, 1)) Then 'Ak je prázdny
Pocet = Pocet + 1 'tak zvýč počítadlo Počet prázdnych
If RNG Is Nothing Then Set RNG = .Cells(Riadok + 7, 1) Else Set RNG = Union(RNG, .Cells(Riadok + 7, 1)) 'a pridaj do skrývanej oblasti
End If
Next y

If Pocet < 3 And IsEmpty(Praca(i * 4 + 1, 1)) Then 'Ak sú bunky 2,3,4 v skupine prázdne, tak sa 1. neskryje, no ak je z 2,3,4 prázdnych menej ako 3, tak sa kontroluje či 1. je prázdna
If RNG Is Nothing Then Set RNG = .Cells(i * 4 + 8, 1) Else Set RNG = Union(RNG, .Cells(i * 4 + 8, 1)) 'ak 1. bunka v skupine je prázdna, tak sa skryje
End If
Next i

If Not RNG Is Nothing Then RNG.EntireRow.Hidden = True 'Ak sú nejaké bunky na skrývanie, tak ich skry
End With
Application.ScreenUpdating = True
End Sub

Alebo skúste takúto prkotinku s makrom pomocou Application.OnKey. Urobil som to tak, aby sa to aktivovalo len pri A3:Axxx, aby sa to deaktivovalo pri presune na iné stĺpce, iný list, iný dokument, a pri zatrovení dokumentu. Funguje to na obidva Enter. No skúste :)

Modul:
Public bZapnute As Boolean, bBoloPredtymZapnute As Boolean

Sub OnEnterSub()
Application.EnableEvents = False
With ActiveCell
If IsEmpty(.Value) Then .Value = .Offset(-1, 0)
.Offset(1, 0).Select
End With
Application.EnableEvents = True
End Sub

Sub ZapnutOnEnter()
Application.OnKey "~", "OnEnterSub"
Application.OnKey "{ENTER}", "OnEnterSub"
End Sub

Sub VypnutOnEnter()
bZapnute = False
Application.OnKey "~"
Application.OnKey "{ENTER}"
End Sub


List:
Private Sub Worksheet_Activate()
bZapnute = bBoloPredtymZapnute
If bZapnute Then ZapnutOnEnter
End Sub

Private Sub Worksheet_Deactivate()
bBoloPredtymZapnute = bZapnute
VypnutOnEnter
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 1 And Target.Row > 2 Then
If Not bZapnute Then bZapnute = True: ZapnutOnEnter
Else
If bZapnute Then VypnutOnEnter
End If
End Sub


Zošit:
Private Sub Workbook_Activate()
bZapnute = bBoloPredtymZapnute
If bZapnute Then ZapnutOnEnter
End Sub

Private Sub Workbook_Deactivate()
bBoloPredtymZapnute = bZapnute
VypnutOnEnter
End Sub

Priložte sem ten doplnok alebo odkaz naň. Možno na to niekto pozrie. Zo ScreenShotov sa to nedá otestovať.

Zaregistrujte sa, aby ste mohol vkladať prílohu. Max veľkosť 256 kb. Ak je to súbor *.xlsm, treba to zabaliť do ZIP. Citlivé údaje tam nemusíte nechávať, len ich prepíšte somarinami. Ukážte teda presne, ako to vyzerá, a ako príklad niekde bokom ku každému riadku napíšte napr. "s", akože tento riadok by sa mal skryť. A spáchame to nejako. Nieje nad reálne vyzerajúcu prílohu s požadovaným výsledkom...

Opravte ten odkaz na GoogleDrive. Časť z neho chýba.


Strana:  1 ... « předchozí  141 142 143 144 145 146 147 148 149   další » ... 286

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