Egy kis segítségre lenne szükségem. Kellene egy olyan excel tábla, aminek az első oszlopa a sorszámokat tartalmazza, 1től 400ezerig. A második oszlop pedig egy jövedelmet tartalmaz, amit random állít elő a program az átlag (82416 Ft) és a szórás (50388 Ft) alapján. Köszi
Úgy látom, az eddigi hozzászólások nem igazán a fórum címéről ( "Excel makró") szólnak, hanem matematikai feladatok viszonylag egyszerű, standard excel-függvényes megoldásairól. Engem viszont nagyon érdekelne a makró-szerkesztés, de még semmi tapasztalatom nincs. Összefoglalná valaki egy laikus számára a makró-készítés lehetőségeit, határait? Szeretném, ha átbeszélnénk, legalább tíz-tizenöt gyakoribb parancsot. Egyelőre annyira semmittudó vagyok, hogy még kérdést sem tudok feltenni, de valahol el kell kezdeni. Mi a véleményetek, érdemes itt türelmesen várnom?
Illetve még egy kérdésem lenne. Egy fájlon belül átmásolom Sheet2-ből A1, A2, A3... A9 cella tartalmát Sheet1-be egymás mellé (A1, B1, C1, D1...). Ezután ezekre a cellákra hivatkozva végzek műveleteket a tovább oszlopokban. Azonban a különböző fájloknál különböző mennyiségű sorom van a Sheet2-ben, tehát egyikben A1-A4-ig, míg egy másikban A1-C1 például. Le lehet programozni, hogy annyit másoljon át, amennyi sorban adatokat talál, illetve ezután a műveleteket is változó számú oszlopra hivatkozva végezze el?
Az alábbi problémáimra keresem a válaszokat amiben segítségre lenne szükségem.
1. Amennyiben azt szeretném, hogy a "Ha" függvényem "hamis" értéke üres cella legyen (ne 0 vagy HAMIS), mit tegyek? Miután kiszámolom B1 cellában a HA függvénnyel amit szeretnék és lehúzom az összes sorba, ezt a képletet kell alkalmaznom B oszlopon: =GYÖK(NÉGYZETÖSSZEG(B:B)(DARAB(B:B)) azonban csak azokra az értékekre, ahol nem nulla a HA fgv. eredménye. 45 ilyen oszlopom van, és megoldásként átmásoltam az oszlopokat, beillesztettem értékként és kicseréltem a 0-kat üres cellára, így működött, azonban az általam írt makró így fél óra alatt fut le egy fájlon (és van 900 fájl amin le kell futtatnom). A fél órából 27 perc amíg kicseréli a 0-kat üres cellára.
2. Egy makróban be tudom azt írni, hogy amit az első cellában kiszámolok, azt egészen addig számolja ki az adott oszlopban, ahány soros a fájl vagy egy másik oszlop? Ha egy fájlom 40ezer sor hosszú, amiben a makrót csináltam, akkor minden fájlban 40ezer sorra számolja ki, attól függetlenül, hogy 15 sorom van vagy 60ezer...
3. Egy makrót le tudok automatikusan futtatni több fájlra egymás után anélkül, hogy egyenként megnyissam a fájlokat és elindítsam a makrót? Ezt meg lehet úgy is csinálni, hogy egymás után 2 makró fusson le az egyes fájlokon?
Az alábbi kérdéseim lennének, amire segítséget szeretnék kapni.
1. Amennyiben azt szeretném, hogy a "Ha" függvényem "hamis" értéke üres cella legyen (ne 0 vagy HAMIS), mit tegyek? Miután kiszámolom B1 cellában a HA függvénnyel amit szeretnék és lehúzom az összes sorba, ezt a képletet kell alkalmaznom B oszlopon: =GYÖK(NÉGYZETÖSSZEG(B:B)(DARAB(B:B)) azonban csak azokra az értékekre, ahol nem nulla a HA fgv. eredménye. 45 ilyen oszlopom van, és megoldásként átmásoltam az oszlopokat, beillesztettem értékként és kicseréltem a 0-kat üres cellára, így működött, azonban az általam írt makró így fél óra alatt fut le egy fájlon (és van 900 fájl amin le kell futtatnom). A fél órából 27 perc amíg kicseréli a 0-kat üres cellára.
2. Egy makróban be tudom azt írni, hogy amit az első cellában kiszámolok, azt egészen addig számolja ki az adott oszlopban, ahány soros a fájl vagy egy másik oszlop? Ha egy fájlom 40ezer sor hosszú, amiben a makrót csináltam, akkor minden fájlban 40ezer sorra számolja ki, attól függetlenül, hogy 15 sorom van vagy 60ezer...
3. Egy makrót le tudok automatikusan futtatni több fájlra egymás után anélkül, hogy egyenként megnyissam a fájlokat és elindítsam a makrót? Ezt meg lehet úgy is csinálni, hogy egymás után 2 makró fusson le az egyes fájlokon?
Megteheted, pl. hogy ez lesz az A1 mező tartalma: =(HA(SOR(A1)<=12;1;0)) Ekkor ha ezt lemásolod a A100-ig (lehúzva a jobb alsó sarkát), akkor lesz 12 egyesed és 88 nullád. Igaz, az első 12 lesz egyes.
Ha ez nem elég, mert random sorrendet akarsz, akkor több módszert is használhatsz. Pl. fogod ezt, kimásolod, és irányított beillesztéssel értékként beilleszted egy új oszlopba, hogy már ne képlet legyen. Mellé raksz egy újabb oszlopot, amiben minden mező tatalma =VÉL() . Utána ez utóbbi szerint sorba rakod e két oszlopot, majd törlöd a véletlen oszlopot.
Nem lesz *pontosan* négy mindig. Erről szól a valószínűségszámítás. Dobj fel egy pénzérmét 8-szor! 4-szer lesz fej? Elképzelhető, de valószínű, hogy nem. Sőt, dobd fel kétszer. Egy fej egy írás lesz? Azt várnád, pedig az esélye pontosan 50%, nem több.
Lehet olyan függvényt is írni, ami pontosan a cellák 40%-ába rak 1-est, de szerintem nem azt akarod.
Így van. Értelemszerűen: ugyanezt a képletet kell sok cellába bemásolnod. A cellák akkor 1-esekkel és 0-kkal lesznek feltöltve, az egyesek aránya 40% lesz.
Most olyat kellene csinálnom, hogy mindegyik háztartáshoz hozzárendelem, hogy vagy van hitele (1) vagy nincs hitele (0). Mondjuk a háztartások 40%-a rendelkezik lakáshitellel, akkor a háztartások 40%-hoz 1-est kellene rendelnie, a többihez 0-t.
A 15 és 21 hozzászólás közötti kapcsolat: az inverz eloszlás ott (olyan x-re) veszi fel a 0 értéket (y=0), amennyi a sima eloszlásfüggvény (y) értéke az (x=) 0 helyen.
Hát, a matek az, hogy megnézed, hogy az adott eloszlás eloszlásfüggvényének értékét az X=0 helyen. Erre pedig van excel függvény:
=NORM.ELOSZLÁS(0;82416;50388;IGAZ)
Én ennél kicsi bonyibban csináltam, de mondjuk ez a szebb. A pontosabb érték amúgy 0,0509587824681558
Nemtom mennyire vagy képben a valszámmal, és ezért mennyire érted ezt. Adott az eloszlásnak a sűrűségfüggvénye, ami ilyen haranggörbe -végtelen és végtelen között, 82416-os középpel. Ennek az integrálja -végtelentől végtelenig épp 1. Ehelyett azonban te egy olyan eloszlást szeretnél, aminek a sűrűségfüggvénye hasonló ehhez, de a negatív tartományban azonosan nulla. Vagyis levágod a negatív tartományt. Ekkor azonban picit növelni kell a pozitív részt, hogy az integrál továbbra is 1 legyen. Ehhez ki kell számítani a negatív rész összsúlyát, ami integrál -végtelentől 0-ig a sűrűségfüggvény, ez pedig definíció szerint épp az eloszlásfüggvény a nulla helyen, az excel meg épp tudja ezt beépítve, rendes tőle.
No, szal ha csak 0,05095... és 1 között generálsz véletlen számokat, akkor az inverz eloszlásfüggvényt e helyen nézve épp 0 és végtelen közötti számokat kapsz majd. Ha ez utóbbi nem világos, akkor azt kell megérteni, hogy az inverz eloszlásfüggvénybe 0 és 1 közötti eloszlást helyettesítve miért épp olyan eloszlású valószínűségi változót kapsz, amit keresel... de ez egy másik történet, mondhatni off topic :)
"Ezt a funkciót pontosabban működő és a használat módját jobban tükröző nevű új funkciók váltották fel. A régi funkció az Excel korábbi verzióival való kompatibilitás végett továbbra is elérhető. Ha nincs szükség ilyen kompatibilitásra, célszerű mostantól az új funkciókat használni, hiszen azok pontosabban megfelelnek feladatuknak."
Jó kérdés. Először is kérdés, hogy mit akarsz? Legyen olyan az eloszlás, mint egy adott szórású, várható értékű normális, csak megszorítva a pozitív számokra? Vagy más?
A trükk a 0,05095879. Ez a Norm.inverz valahogy úgy működik, hogy első paraméternek kap egy 0...1 közötti egyenletes eloszlású véletlen számot, és megnézi, hogy azon a helyen mennyi a normális eloszlás inverzének az értéke, így számít egy normális eloszlású vál.változót. A fenti módosított eloszlás eléréshez nem 0 és 1 közötti számot kell adni neki első paraméternek, hanem olyat, ami x és 1 között van, úgy, hogy X-re 0-t adjon az inverz elolszásfüggvény. Ki is lehetne számolni X-et, de én inkább picit játszottam, hogy milyen X-re lesz 0, és így jött ki a 0,0509... varázsszám. Magyarul: =NORM.INVERZ(0,05095879;82416;50388) egy elég pici pozitív szám (36 fillér), e feletti számokat generál majd a fenti képlet.
A 80.000 átlagú és 50.000 szórású normál eloszlási sokaság törvényszerűen tartalmaz egy csomó (kb. 15%) negatív számot. Ezeket ugyan el lehet iminálni, de akkor az eloszlás már nem normál. Másfelől az is megfontolandó lehet, hogy miért csak a negatív számokat kéne eliminálni. A 10-100-1000-10000 ft jövedelem sem életszerű.