Nejste přihlášen/a.

Přihlásit se do poradny

 

Makra- for, if

Od: klera* odpovědí: 3 změna:

Dobrý den, prosím vás, potřebovala bych pomocí maker projít tabulku a sloupec pod názvem Známka sečíst, spočítat a vydělit mezi sebou, aby mi vznikl průměr...Vím, že projít list můžu pomocí funkce For, např. For i=1 To 500, potom bych použila funkci If, ale zbytek mi už není jasný, jak můžu napsat- když se obsah buňky rovná "Známka" tak sečti hodnoty (příp. spočítej) a zastav se u prázdné buňky? Děkuju za rady

 

 

3 odpovědi na otázku
Řazeno dle hodnocení

 

 

dzordz*
hodnocení

2x

Není na to funkce =PRŮMĚR()?

No jinak například takto

doplněno 10.12.12 18:59:

Aha, ještě bych k tomu moh asi něco napsat. Bere to hodnoty ze sloupce F, první známku z F3, pak to pokračuje po řádcích dolů, než to narazí na první prázdnou buňku. Pak to napíše výsledek do G3.

klera*
hodnocení

jo, to je, ale musim to udělat v makru a potřebuju aby to vypadalo trochu složitě :D ale jinak mi šlo hlavně o to jak najít cyklem buňku, která obsahuje určitou hodnotu, resp. text

doplněno 10.12.12 19:14:

ale jinak díky :) takhle to taky můžu udělat

 

figurek*
hodnocení

0x

Asi vám dost zkomplikuje život ten váš požadavek, že celý výpočet má proběhnout v rozsahu Známka sečíst. Pak potřebujete několik maker seřadit za sebe. Jedno vám najde první buňku z range Známka sečíst, druhé spočítá počet buněk v range Známka sečíst, třetí makro provede výpočet cyklem FOR a projede celý range Známka sečíst a nakonec do nějaké buňky vypíše vypočítanou hodnotu.

Vy ale chcete spíš jen sečíst a zobrazit průměr, ne?

*

Sub makroZnamky()
Dim SoucetZnamek As Byte, PrumerZnamek As Single, a As Byte
SoucetZnamek = 0
PrumerZnamek = 0
a = 0
Do
SoucetZnamek = SoucetZnamek + Range("A1").Offset(a, 0)
a = a + 1
Loop While Range("A1").Offset(a, 0) <> ""
PrumerZnamek = SoucetZnamek / a
MsgBox PrumerZnamek
Range("B1").Value = PrumerZnamek
End Sub

doplněno 11.12.12 13:26:

cyklus je typu Do Loop-While, zarážka o prázdnou buňku je na posledním řádku cyklu

Loop While Range("A1").Offset(a, 0) <> ""

česky bychom řekli : Dělej cyklus, pokud není v buňce odsazené o proměnnou a pusto a prázdno.

Je taky jasné, že v buňkách prvního sloupce musíte mít jen čísla. Jestli do některé vložíte písmeno, cyklus vám kixne.

Makra- for, if

 

 


 

 

 

Přihlásit se k odběru odpovědí z této otázky:

Neneseme odpovědnost za správnost informací a za škodu vzniklou jejich využitím. Jednotlivé odpovědi vyjadřují názory jejich autorů a nemusí se shodovat s názorem provozovatele poradny Poradte.cz.

Používáním poradny vyjadřujete souhlas s personifikovanou reklamou, která pomáhá financovat tento server, děkujeme.

Copyright © 2004-2025 Poradna Poradte.cz. Všechna práva vyhrazena. Prohlášení o ochraně osobních údajů. | [tmavý motiv]