Příspěvky uživatele


< návrat zpět

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

Ano, moznosti je opravdu spousta.
Mozna nejjednodussi pro vase ucely je pouziti COUNTIFS ve VBA, v tomto priklad jde o pocet, ktery obsahuje ve sloupci A hodnotu 'a' a ve sloupci B hodnotu '1':

Pocet = Application.WorksheetFunction.CountIfs(Range("A1:A10"), "=a", Range("B1:B10"), "=1") coz je klasicka counifs funkce.
Lze ji zapsat i kratsim zpusobem pomoci funkce EVALUATE, ale ja osobne ji moc nepouzivam, protoze mi prijde mene prehledna
Pocet = Evaluate("COUNTIFS(A1:A10,""=a"",B1:B10,""=1"")")

..tak prilozte ten soubor, kde to bude mozne upravit

a mezitim se podivejte na funkci SUMIF

...ani se nedivim, ze na toto nikdo neodpovedel...

Sice pozde, ale neco jsem dohromady dal (jen jsem to neotestoval)

Sub SeskupRadky()
Dim pocet As Long, i As Long

'odgrupování
With ActiveSheet.UsedRange
'.Ungroup
.ClearOutline
End With

'sgrupování
For i = 1 To ActiveSheet.UsedRange.Rows.Count
pocet = Application.WorksheetFunction.CountA(Range("A" & i & ":Z" & i))
If pocet = 0 Then
Rows(i).Group
End If
Next i
End Sub

posli mi ten soubor, kde mas svoje makro, at to nemusim davat dohromady...

Jaka uctenka se zobrazi je dalo polohou aktivni bunky (v oblasti L3:L71 na listu Kasa)

stisknutim tlacitka Utenka se pak zobrazi v msgboxu

Problem je, ze Msgbox nelze formatovat (jde jen o text, takze nelze udelat zadne zarovnani - na to by se musel pouzit dalsi userform)

Ulozil jsem to jako xlsb (bo to bylo moc velke pri formatu xlsm)

Jelikoz jsi priloz soubor .xlsx, předpokladam, ze mas verzi 2007 nebo 2010, kde existuje moznost filtru: "Filtry čísel/ Prvních 10", kde muzes nastavit, kolik prvnich hodnot se zobrazi.

Takze pokud mas serazena data od nejvyssiho a vyfiltrovan den, ktery potrebujes - staci jeste pouzit tento filtr se zadanim poctu zobrazenych polozek (je to vcetne hlavičky, takze o jeden vic = 4)

ActiveSheet.Range("$A$1:$K$45").AutoFilter Field:=11, Criteria1:="4", Operator:=xlTop10Items

samozrejme to lze - jen to nejde udelat bez prilohy (a nemuzes po lidech tady, aby si i priklady delali sami).

Kazdopadne jeste zkus lepe rici, co je cilem - jde jen o ten Msgbox (aby spravne zobrazil jen vysledky > 0) nebo jde i o to, aby byla data vyfiltrovana (msgbox lze zobrazit i bez filtru na listu)

Jeste to zkus udelat sam - tim se neco naucis.
Pokud potrebujes filtrovat vcerejsi datum, neni nic snazsiho nez misto "8/21/2013" ve filtru nahradit tuto fixni hodnotu promennou typu date

nadeklarujes promennou:
Dim DEN as date
a vlozis do ni vcerejsi hodnotu:
DEN = Date - 1
Potom v nahranem kodu nahradis "8/21/2013" jmenem promenne (DEN)

Jen si davej pozor na to razeni, at to seradis spravne - obcas byva problem, kdyz jsou razeny bunky, ktere obsahuji vzorce...

Samozrejme to jde makrem.

Toto makro vlozte do modulu ThisWorkbook
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Radek As Long, Sloupec As Long, i As Long
Dim Hodnota As Double
Dim List As String

Hodnota = 0.5
List = "List1"
Radek = Worksheets(List).Cells(Rows.Count, 1).End(xlUp).Row
Sloupec = Worksheets(List).Cells(Radek, Columns.Count).End(xlToLeft).Column

'pricteni hodnoty ke vsem hodnotam v poslendim radku
For i = 1 To Sloupec
Worksheets(List).Cells(Radek, i) = Worksheets(List).Cells(Radek, i) + Hodnota
Next i
End Sub


Problemy tam samozrejme muzou byt, kdyz nevidim, jak ten posledni radek vypada, jestli tam treba neni v nekterem sloupci text nebo jestli tam nejsou prazdne sloupece apod...ale bez prilohy to jinak asi neumim
(samozrejme, ze by to slo napsat lip, ale nechtel jsem na tom travit vic casu... 2 )

Otazka je, jestli to je skutecne tak, jak pisete (tj. jestli nahodou nejde o to, ze 3 predstavuje hodiny a 25 minuty, coz je obvykle v excelu pri zapsani takoveto hodnoty do bunky)

Pokud tuto bunku prevedete na obecny format, dostanete hodnotu bud:
1) 0,142361111111111 a pak jde o 3 hodiny a 25 min
2) 0,002372685185185 a pak jde skutecne o 3 min a 25 sec

Pokud jde o druhy pripad je jeste otazka, jak chcete, aby hodnota vypadala, protoze hodnota je spravne a pocitat s ni muzete zcela bez obav - jen jdo o to, jak ma vypadat format bunky, ktery nema s jeji hodnotou nic spolecneho

Asi bude nejlepsi poslat ukazku toho, co s casem delate a ceho chcete dosahnout...

To samozrejme jde, jen musite znat jmeno (nebo index) toho obrazku - jmeno bude asi lepsi.

Pokud na nej kliknete v listu, tak se vlevo od radku vzorcu objevi jeho jmeno, napr. "Obrázek 4" - ve VBA to pak musi byt anglicky.

takze skryti obrazku provedete takto:
ActiveSheet.Shapes("Picture 4").Visible = False
a pro "odkryti" obrazku:
ActiveSheet.Shapes("Picture 4").Visible = True

maticový vzorec musí být ukončen stiskem SHIFT+CTRL+ENTER

TextBox (na UserFormu) muze obsahovat vzdy jen text (samozrejme tam muze byt datum, ale je chapano jako text) - nelze tedy nastavit textbox tak, aby zobrazoval datum - musite mu vzdy priradit obsah tak, aby uz dostal zformatovany vstup

Chcete-li tedy v textovem poli zobrazit dnesni datum, zkuste nasledujici (za predpokladu, ze textove pole je pojmenovano TextBox1)

TextBox1.Text = Format(Date, "dd.mm.yyyy")

A abyste nerekl, ze jsem nelida, prikladam ukazku, jak poupravit funkci RANK, aby fungovala, jak potrebujete.
Jen upozornim, ze funkce v prvnim radku je jina, nez ostatni:
1. Radek: =RANK(A2;$A$2:$A$8)
2. Radek: =RANK(A3;$A$2:$A$8)+COUNTIF($A$2:$A2;"=" &A3)Od 2. radku je mozne vzorce protahnout dolu...


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

Uživatelské menu

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

Menu

Formulář Faktura

Formulář Faktura IV

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

Helios iNuvio

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.

On-line nástroje