Toto je jeden z neustále sa opakujúcich problémov:
Najčistejším riešením je previesť dáta z jednotlivých listov (krajov) do jednej tabuľky a z nej potom generovať zostavy za jednotlivé kraje. K tomu by potom stačil jednoduchý či rozšírený filter, prípadne parametrický dotaz. Ale to je asi hádzanie hrachu na stenu presvedčovať niekoho, že nad štruktúrou vstupných dát je dobré chvíľu popremýšľať.
Pri blbom designe (ten zo zadania), by som sa klonil k riešeniu cez SQL (MS Query) zjednocovacím dotazom (UNION ALL).
jo, a ešte niečo: Príloha bude určite obsahovať tajné dáta, takže počítam, že sa jej nedočkáme :)
off topic: Rozhodne sa nechcem dotknúť schopností eLCHy ani ďalších kolegov, ktorí tu nezištne radia. Čo sa týka prekladu funkcií medzi jednotlivými lokalizáciami, toto pokladám za domácu úlohu, ktorú by mal pri troche snahy zvládnuť každý sám! Pokladám to za neúctu k riešiteľom a mrhanie ich časom, pokiaľ niekto napíše niečo v zmysle: "Funkcia If mi nefunguje". Na získanie prekladu funkcií totiž skutočne stačí chvíľu googliť a pokiaľ OP nie je ochotný pre riešenie svojho problému podstúpiť ani toto, tak sa domnievam, že si asistenciu nezaslúži.
Ahoj, ozývam sa až teraz, nestíham
Pre potreby makra som síce už ponechal 3 riadky v tabuľke, ale nakoniec som na to prišiel. Mám za to, že pomerne blízko kýženému stavu bol eLCHa, prišiel som však nezávisle na iný postup. Stačí do tabuliek, v ktorých to ohraničenie nefungovalo, urobiť nasledujúce:
1. Na riadok 18 vložiť nový riadok, pôvodný riadok sa posunul na riadok 19
2. Naklikať novému riadku 18 horné a spodné ohraničenie
3. Vymazať riadok 17
Za snahu pomôcť všetkým ďakujem. K tipom od eLCHy, týkajúcim sa vloženia prázdneho stĺpca A, asi toto: O tom viem, ale použiť nemôžem/nechcem. Písal som: formát výstupu si definuje klient, do toho nechcem nijako zasahovať, i tak je tam spústa ďalších vecí, ktoré s klientom vždy musím odladiť - nie je totiž príliš pozorný a vzorové súbory posiela často s chybami. To len na okraj.
@xlnc jestli dělící ohraničení má horní buňka dole nebo spodní buňka nahoře
To som skúsil už pred tým než som sem vložil príspevok - sformátovať oba riadky samostatne, t.j. hornému vytvoriť spodné ohraničenie a spodnému horné. To nepomohlo.
Nakoniec som to vyriešil tak, že som vložil ešte jeden riadok do tabuľky a ten sformátoval. T.j. v šablóne som miesto dvoch riadkov ponechal tri. Kupodivu, potom to už funguje podľa predstáv i keď stále neviem, v čom je pôvodný problém. Ale aspoň som sa vyhol nutnosti pridávať ďalšie riadky kódu..
Bohužiaľ, ExcelTable použiť v tomto prípade nemôžem. Jedná sa o prácu na zakázku, formát výstupu si definuje klient. Ja ten vzor, ktorý som poslal, používam ako šablónu. Formulár vo VBA určí, ktorý list sa má použiť. Doňho sa potom nalejú dáta z databázy. Počet záznamov v recordsete odpovedá počtu riadkov, na ktorý potrebujem rozšíriť príslušný list šablóny. Celé je to riešené cez VBA, takže samozrejme nie je problém dopísať do kódu i formátovanie tabuľky, čo predstavuje cca 5 riadkov kódu, ale som taký bádateľ a márne si lámem hlavu, prečo to raz funguje tak a inokedy nie. Inými slovami, som už v štádiu, kedy sa snažím kódom riešiť len to, čo je nutné...
Ahoj,
v oblasti A17:J18 mám orámované všetky bunky (Borders(xlInsideHorizontal) i Borders(xlInsideVertical)). Pokiaľ vložím do oblasti A18:A30 nové riadky, tak na jednom sheete sú novo vložené bunky tiež orámované, na inom ale nie. Vedel by niekto, prečo tomu tak je? Makrom si vložené bunky orámovať samozrejme dokážem, chcel by som však vedieť, či sa to nedá nejako nastaviť priamo v liste, alebo kde, aby pridávané riadky boli orámované... Už roky narážam na tento problém a nepoznám odpoveď, pravda, príliš som po nej zatiaľ nepátral...
Pár tunajších prispievateľov kombináciu Excel ako front-end a vlastných tabuliek v externom úložisku (nejaký druh DBMS) využíva, určite sa to týka napr. DAALa, tipujem i Luba a eLCHu (výčet nie je úplný, ostatným sa ospravedlňujem, pokiaľ som ich nemenoval). Osobne ako back-end v prípade potreby používam hlavne Access (páč ho mám), v poslednej dobe tvorím niečo i proti datám v MS SQL serveri. Máte pravdu v tom, že Access samotný na vytvorenie .mdb nie je nutný a Excel to zvládne vlastnými integrovanými nástrojmi. Ja len doplním, že MS SQL server express je zadarmo, takže pokiaľ niekto nie je ochotný utratiť peniaze za Access a pritom si netrúfa na tvorbu databázy programovo pomocou SQL inštrukcií CREATE/DROP table atd., tak ten SQL server express ponúka istý komfort, ktorý tvorbu databázy uľahčí..
Mne v tomto smere "otvoril oči" Craig Hatmaker, ktorý má uvedené techniky krásne popísané na svojom blogu: https://sites.google.com/site/beyondexcel/home
Na prvý pohľad sa mi toto javí ako úloha vhodná pre riešenie cez SQL. Myslím, že by sa to malo dať zvládnuť priamo v MS Query.
@lubo, mám za to, že OP nemyslí tabuľkou tabuľku..
Preveď si tabuľku na ExcelTable - klávesová skratka Ctrl+T
v prílohe
malo by pmn stačiť tú bodku tam dopísať, aspoň na mojom ntb toto teda funguje:
=#.##0,00"=Kč"
Jirko, myslím, že pri použití nápovedy k uvedeným dvom funkciám to zvládneš :). Ide o to, chcieť sa trochu posnažiť..
Mám za to, že lubo už dostatočnú radu poskytol :(.
Funkcie cz LINREGRESE (en LINEST) a INTERCEPT.
Základ som ti vytvoril v prílohe. Určite to pôjde riešiť na 100 spôsobov, ten kód nie je optimálny, ale pre uvedenú potrebu by mal postačovať, pokiaľ som ovšem správne pochopil zadanie..
edit: ešte malá modifikácia kódu z prílohy, spočívajúca v eliminácii nulových hodnôt a pozmenenej konštrukcii cyklov:Sub VytvorStitkyModifikovanyKod()
Dim myRng As Range, myArr() As Variant, i As Integer, j As Integer, k As Integer
Set myRng = [A1].CurrentRegion
Set myRng = myRng.Offset(1, 0).Resize(myRng.Rows.Count - 1, 2)
ReDim myArr(1 To WorksheetFunction.Sum(myRng.Columns(2)))
k = 1
With myRng
For i = 1 To .Rows.Count
If .Cells(i, 2) > 0 Then
For j = 1 To .Cells(i, 2)
myArr(k) = .Cells(i, 1)
k = k + 1
Next j
End If
Next i
End With
Workbooks.Add
Set myRng = [A1]
Set myRng = myRng.Resize(UBound(myArr), 1)
myRng = WorksheetFunction.Transpose(myArr)
Set myRng = Nothing
Erase myArr
End Sub
Oblíbený formulář Faktura byl vylepšen a rozšířen.
Více se dočtete zde.
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.