Kezdőoldal » Számítástechnika » Programozás » Hogyan írjam meg az alábbi...

Hogyan írjam meg az alábbi makrót?

Figyelt kérdés

excelbe kéne megírnom a következőt: Töltse fel A1:A10 tartomány celláit tetszőleges számokkal majd írjon makrót amely gombnyomásra indul, és a B1 es cellába kiírja hogy a kitöltött tartományban mennyi a 10 nél kisebb számok átlaga.


nem tudom hogyan kell légyszíves valaki írja le köszi :)


2014. okt. 27. 11:14
 1/3 anonim ***** válasza:

Iszonyú primitív, 2 perc guglizással megoldható.

Mi okoz benne problémát?

2014. okt. 27. 11:40
Hasznos számodra ez a válasz?
 2/3 A kérdező kommentje:
nem vagyok az a nagy számítógép guru szóval légyszi ha van időd írd le . köszi
2014. okt. 27. 13:05
 3/3 CspCsj ***** válasza:

Fontos lehet, melyik Excel-t használod (2003-as vagy régebbi, 2007-es, 2010-es, 2013-as stb.)


Nálam 2007-es van, az újabbakban van sok új funkció.


Az átlagnál gyakorlottabb felhasználónak tekintem magam, de így is jóval 2 perc fölött végeztem, mivel makrókat nem használok, a szintaktikát meg C64-nél használtam utoljára, aztán ugye ezt a szöveget is be kellett írni.


Kezdem is:

Tetszőleges számokra a véletlenszám függvényt ajánlom:

=VÉL() de a gond vele az, hogy 0-1 közötti törtszámot ad, ezt az intervallumot általában szorzással növelik:

=VÉL()*20 ez így 0-20 közötti szám lesz, de kerekítéssel szebb lenne:

=KEREKÍTÉS(VÉL()*20;0) így a törtrész számjegyeinek száma 0.

Ezután már csak át kell húzni/másolni a többi cellába.

KIEGÉSZÍTÉS:

2010-estől van új függvény: =VÉLETLEN.KÖZÖTT(0;20) ami ugyanazt adja.


Makró előtt egy gyors kitérő:

Ha függvényekkel kellene megcsinálni, akkor mondjuk elsőre a B1 cellába ezt írnám: =ÁTLAGHA(A1:A10;"<10") ez annyit jelent, hogy az A1-A10 cellatartományból átlagolja a 10-nél kisebb értékeket. Mi van ha nincsen 10-nél kisebb? Hibaüzenetet ad. Ezért kicsit ki lehet egészíteni a DARABTELI(A1:A10;"<10") függvénnyel, ami a 10-nél kisebb értékeket számolja meg az A1-A10 cellatartományban. A két említett függvényt a HA feltétellel kötöttem össze, így a vége: =HA(DARABTELI(A1:A10;"<10");ÁTLAGHA(A1:A10;"<10");0) vagyis HA a DARABTELI függvény talál 10-nél kisebb értéke(ke)t akkor az ÁTLAGHA függvény kiszámolja, ha pedig nem, akkor 0-t ír be.


Na ezek alapján lássuk a makrót:

Nézet fül > Makrók menüpont > Makrónévnek beírod pl. "Atlag" > Létrehozás.


A "gombnyomásra" nem volt egyértelmű. Szimpla billentyűkombinációt jelent-e, vagy ki kell rajzoltatni egy gombot amire ráttantitva lefut?


1. Billentyűkombinációval:

A megjelenő ablakba írd be így:

Sub Atlag()

If (WorksheetFunction.CountIf(Range("A1:A10"), "<10") > 0) Then

Worksheets(1).Cells(1, 2) = WorksheetFunction.AverageIf(Range("A1:A10"), "<10")

Else

Worksheets(1).Cells(1, 2) = 0

End If

End Sub

Rövid magyarázat: If=HA, WorksheetFunction.CountIf=DARABTELI, WorksheetFunction.AverageIf=ÁTLAGHA megfelelője, a Worksheets(1).Cells(1,2) az első munkafüzet 1-es sor, 2-es oszlopának celláját jelenti, vagyis a B1-et, végül a Range egy cellatartományt ad meg.

Végül a billentyűkombináció beállítása:

Nézet > Makrók > makró kijelölése > Egyebek > Billentyűparancsnál kell megadni.


2. Rajzolt gomb:

A makró kódjának ablakában Insert > UserForm. A megjelenő ablakba rajzolni kell egy parancsgombot (CommandButton a Toolbox kisablakban), érdemes a feliratát átírni (Caption mező a Properties kisablakban, a balra alsó sarokban), esetleg a betűméretét is változtathatod (Font mező ugyanarra). Ha kész akkor duplán kattins a megrajzolt gombra és a megjelenő ablakba másold át a begépelt makó kódját hasonlóan az előzőhöz:

Private Sub CommandButton1_Click()

If (WorksheetFunction.CountIf(Range("A1:A10"), "<10") > 0) Then

Worksheets(1).Cells(1, 2) = WorksheetFunction.AverageIf(Range("A1:A10"), "<10")

Else

Worksheets(1).Cells(1, 2) = 0

End If

End Sub


Ezután a Nézet > Makrók > makró kijelölése > Indításra megjelenik a parancsgomb, amire klikkelve lefut az átlagszámítás.



FONTOS:

A makró futásakor újragenerálódnak a véletlenszámok, így a kiszámolt átlag már nem lesz szinkronban a látható értékekkel.

Erre már nem volt időm, de ha nem érkezik más válasz, majd megnézem.

2014. okt. 27. 15:00
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!