hm, obrázok si nepriložil, keď už to budeš chcieť prikladať, tak rovno radšej vzor v exceli, obrázok je nešťastný, nútiš riešiteľa, aby si vyrábal súbor..
Poki napsal/a:
To je tak, kdyz clovek nema k dispozici zadnou ukazku, musi si pak spoustu veci domyslet...
Pokiaľ by som to mal riešiť ja (vo VBA), tak 2 cykly, jeden vnorený do druhého, postupne načítaš hodnoty z vnútra tabuľky do poľa 3 x (počet riadkov x počet stĺpcov), na záver pole vyleješ do oblasti 3 stĺpce x (počet riadkov x počet stĺpcov) riadkov.
no, úplne primitívne, po tom, čo uložíš kópiu cez SaveCopyAs, tak z nej odstráň v cykle tie ostatné listy okrem listu, ktorý tam chceš nechať a ulož ešte raz
Ono sa to dá i inak, konkrétny list vykopírovať do nového súboru a ten potom uložiť.
Je to trivialita, na to určite prídeš sám, ja už zas musím ísť robiť niečo, za čo ma platia v práci...
nene, nič neposielaj, vlož to ako prílohu do príspevku, niekto z kolegov sa na to potom pozrie - ešte vyskúšaj ten posledný kód, ktorý som sem dával..
Tak to netuším, páč mne to chybu nevyhadzuje a asi to tým pádom nenasimulujem..
edit:
skús totoPrivate Sub CommandButton1_Click()
Sheets("Databaze").Range("=A2:D20000").ClearContents
Sheets("Formulář").Select
Sheets("Databaze").Visible = True
Sheets("Databaze").Activate
Sheets("Databaze").Range("A2").Select
Sheets("Databaze").Select
ActiveWindow.SelectedSheets.Visible = False
Range("A2").Select
MsgBox "Databaze byla úspěšně smazána", vbInformation, "Smazáno"
End Sub
vieš, ono je problém zistiť, kde presne máš ten commandbutton umiestnený, tým pádom len hádam, keď je tak ťažké, vložiť sem prílohu...
O.k., síce prasácky, ale takto:Sub CommandButton1_Click()
Sheets("Databaze").Range("=A2:D20000").ClearContents
Sheets("Formulář").Select
Sheets("Databaze").Visible = True
Sheets("Databaze").Activate
Range("A2").Select
Sheets("Databaze").Select
ActiveWindow.SelectedSheets.Visible = False
Range("A2").Select
MsgBox "Databaze byla úspěšně smazána", vbInformation, "Smazáno"
End Sub
Všetkým znalcom VBA sa ospravedlňujem za horeuvedený kód, ktorý by som sám nenapísal, upravujem len ten od pepy...
Mno, keď už je nutné tam mať asi 100x Select bude to asi chcieť prehodit poradie instrukcii, zrejme takto:
Private Sub CommandButton1_Click()
Sheets("Databaze").Range("=A2:D20000").ClearContents
Sheets("Formulář").Select
Sheets("Databaze").Visible = True
Sheets("Databaze").Select
Range("A2").Select
ActiveWindow.SelectedSheets.Visible = False
Range("A2").Select
MsgBox "Databaze byla úspěšně smazána", vbInformation, "Smazáno"
End Sub
eLCHa napsal/a:
Výrazy
($B$3:$B$14=1), ($C$3:$C$14="OK")
dávají přece taky výsledek PRAVDA nebo NEPRAVDA (1 nebo 0)
Je pravda, že tyto funkce v mat. vzorcích nefungují, ale ten důvod bude jiný. Jaký, to nevím. Podle mně by měly normálně fungovat, protože dávají výsledek 1 nebo 0.
@Opičák: presne tak...
Prvá časť vzorca: IFERROR(1/COUNTIFS($A$3:$A$14; $A$3:$A$14; $B$3:$B$14; 1; $C$3:$C$14; "OK");0 )spočíta počet jedinečných kombinácií v tabuľke.
Tá druhá: ($B$3:$B$14=1)*($C$3:$C$14="OK")z nich vyberie (započíta do konečného výsledku) len tie, ktoré spĺňajú podmienku TYP=1 a status=OK, na záver sa to celé agreguje cez Sumu. Chce to trochu predstavivosti.
Návod nájdeš tuná: http://www.rondebruin.nl/win/s3/win006.htm
@ poki: tá Tvoja funkcia nespočíta jedinečné záznamy
@ rombil: počet unikátnych položiek spĺňajúcich podmienky podľa vzoru, ktorý si dal, na dátach z prílohy, zistíš maticovým vzorcom:=SUM(IFERROR(1/COUNTIFS($A$3:$A$14; $A$3:$A$14; $B$3:$B$14; 1; $C$3:$C$14; "OK");0 )*($B$3:$B$14=1)*($C$3:$C$14="OK"))
Vytvorenie rozšíreného filtra si môžeš nahrať do makra.
Inou možnosťou je v kóde pracovať s Collection alebo Dictionary.
Dá sa použiť i SQL príkaz Distinct.
Možností je mnoho, stačí trochu pogooglovať.
Rozšíreným filtrom:
aby sa Ti neplietol výsledok so vzorom, urob nasledujúce:
napr. na list 3 napíš niekam kritériá, t.j. typ a status a pod ne hodnoty, ktoré chceš filtrovať.
vyzeralo by to takto:
b1: typ
c1: status
b2: 1
c2: ok
do bunky b4 na tom istom liste napíš: Jméno
Teraz to dôležité: zostaň na tomto liste (musí byť aktívny)
Zapni rozšírený filter, zvoľ skopírovať do iného umiestnenia (copy to another location)
Ako list range zvoľ ten svoj pôvodný zoznam: Sheet1!$A$2:$C$14
ako kritériá kritériá vrátane záhlavia, t.j.: Sheet3!$B$1:$C$2
Za kam (copy to) uveď Sheet3!$B$4
Zatrhni voľbu iba jedinečné záznamy, daj o.k.
ten výsledok si môžeš dať na samostatný list, v tom prípade na tomto liste musíš do nejakej bunky napísať Jméno (názov poľa, ktorý chceš filtrovať), kritériá môžeš mať i na nejakom inom liste. Jediná podmienka, aby to fungovalo, je, že musíš pred zapnutím filtra stáť na liste, na ktorom cheš mať výstup.
edit: pokiaľ by sa Ti nechcel spustiť ten rozšírený filter, tak než ho spustíš, postav sa do nejakej prázdnej bunky, ktorá nehraničí so žiadnou neprázdnou bunkou, na liste, v ktorom chceš mať výstup (na liste, kde máš v samostatnej bunke napísané Jméno)
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.