Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Próbáld meg a Szövegből oszlopok funkcióval szétszedni az adatokat. Valamennyit segíthet, hogy a nevek áltzalában 2 tagúak, a cégnevek több tagból állnak.
Sajnos nem tartalmazza a cégformákat legtöbb esetben...:-(
Arra gondoltam, hogy a személynevek (pl.: Károly, István, Irén...) irányában indulnék el.. (Ha a cella tartalmazza ezeket a személyneveket, akkor marad, egyébként pedig másolja át (hogy átnézhessem, ellenőrizhessem) egy másik munkalapra azokat, amelyekben nincsenek személynevek...(Bár találtam olyat, ami így nézett ki, pl.: Kovács Péter Étterem)
Cellánként megnézném, hogy a cella tartalmazza-e az ismert cégformák rövid v. hosszú változatát (kft, rt., zrt, nyrt, ...). Ennek a vizságlatnak az eredménye (TRUE/FALSE) lenne mondjuk a B oszlopban. Utána már csak rendezés és törlés kérdése a dolog.
Van egy táblázatom, ami több, mint 40 000 sorból áll. A oszlopban vannak személynevek (pl.: A1 cellában Kis István) és cégnevek (pl.: A2 cellában Kis Kft, Étterem) és ezek ömlesztve.
Van-e arra viszonylag egyszerű megoldás, hogy csak a személynevek (Kis István) maradjanak a táblázatban?
Ez így nem jó. Azt Én tudom, hogy a B oszlopban lévő számok léteznek az A oszlopban is. Én azt szeretném tudni, hogy hol vannak, mert sok adatról van szó.
Az eleve egy rossz konstrukció, amikor a felhasználó tervezetten képleteket ír felül, és most mindegy, hogy éppen helyes vagy hibás értékekkel, mert a képlet így mindenképpen megsemmisül, és nem tudhatod, mikor lesz rá megint szükség. Inkább kellene egy segédoszlop a hiányzó adatok bevitelére, és a zárolt oszlopban képlettel kiválasztani a megfelelő értéket az I oszlopból vagy az új segédoszlopból. A segédoszlopban meg feltételes formázással lehetne kiemelni azokat a sorokat, ahová adatot kell bevinni.
Eljött az ideje, hogy végleg lezárjam az eddigi offolásomat, és beszámoljak egy részeredményről. Miután két napja sikertelenül kutatok a megfelelő képlet után, hogy hogy programból váltsam ki az Excel regresszióanalízis eljárásának nehézkes menetét, kiderült, hogy az Excel ezt közvetlenül tartalmazza (rengeteg más hasonlóval együtt). Ez az FDist függvény, ami közvetlenül visszaadja a nekem szükséges p-értéket. A meghívása több másikhoz hasonlóan (például faktoriális számítás) egy kissé összetettebb formulával történik: Application.WorksheetFunction.FDist(férték, számláló szabadságfok, nevező szabadságfok) , viszont kitűnően működik.
Adott egy oszlop,amiben a következő feltétel van:=HA(K2="M";I2; " ")
a feladat az lenne,hogy ha teljesűlt a feltétel és érték kerül a cellába azt a cellát zárolni kellene,de az üres vagy a feltételnek nem megfelelő cellába lehesen írni.
Eddig rendben is van,a baj csak akkor kezdődik ha elrontotta a beírt számot és "DEL"-el törli.
Ekkor a képlet is oda van..Megköszönném ha valaki kisegítene.
Kérlek segítsetek, hogyan tudonám a következő feladatott megoldani. Az A oszlopban van mondjuk egymás alatt 25 cellában adat(szám) a B oszlopban van egymás alatt 15 cellában adat(szám). A feladat az lenne, hogy keresse meg az A oszlopban lévő számok között azt amelyik a B oszlopban is megtalálható és ezeket vagy jelölje meg(vagy jelölje össze) vagy a C oszlop azonos sorában adjon vissza egy értéket egyezzőség esetén.
Kösz, az valóban lehet, hogy nem iterációról, hanem integrál kiszámításról van szó. Ehhez sajnos nem értek.
De az továbbra is fennáll, hogy nem kerekítési pontosságbeli különbségekről van szó, hanem eljárásbeliről. Elképzelhető, hogy régebben az általam leírt algoritmust használták, és azóta áttértek másikra.
Időközben több más adatsoron is lefutattam a kétféle értékelést. Az eredmények viszonylag közeliek, egyetlen esetet kivéve, ami viszont nagyságrendi (ellenőriztem, nem elütésről, vagy adathibáról van szó). És ez utóbbi különösen zavaró.
saját képletem Excel eredmény
p=0.3051 0.3044
P=0.4422 0.4366
p=0.1205 0.1239
p=0.0792 0.9697
p=0.0936 0.0970
Egyébként az összes többi adat ugyanaz. Tehát az általam számított érték és az Excel beépített értékelő program valamennyi tizedesre ugyanazt az eredményt adja az adatok átlaga, a regressziós egyenes paraméterei, az r és r², a t érték és az F érték esetében. Csak ez a fránya p érték más.
Off: valaki persze mondhatná, hogy használjam a beépített Excel függvényeket, de sajnos több munkalapon kell 100-100 adatpárra elvégeznem a munkát, amit nem szeretnék kézzel egyenként megtenni. Ezért írok programot.
És én azt kérem, hogy megköszönve az eddigi tippeket, hagyjuk egy időre a témát, mert ez már nem Excel programozási kérdés, hanem matematikai statisztikai. Megpróbálom ehhez értőkkel felvenni a kapcsolatot, és itt nem offolok tovább.
Nem vagyok matematikus, de anno tanultam ilyeneket. Itt nem iterációról van szó, az egy kicsit más. Itt az van, hogy az intgerált nem lehet zárt alakban elvégezni, azaz nem lehet a primitiv függvényt meghatározni, ezért valamilyen módszerrel egy polinomot állítanak elő, valószínűleg sorfejtéssel. Ami jól illeszkedik a problémához és megbízhatóan jó eredményt ad. Az általad eredményül kapott két érték közt simán lehet különbség, bár ebben az esetben ez valóban nagynak tűnik. DE abba is gondolj bele, hogy a számítógép nem tud hatványozni, azaz nem tudja kiszámítani a 3.456^5,837 értékét, ezt is sorfejtésen alakuló algoritmusssal számolja ki ...
Esetleg próbáld ki az ecel beállításoknál, hogy a megjelenített pontossággal számoljon az excel, akkor mekkora az eltérés?
Kösz, ez jó nyomnak tűnt. A linkből kiindulva elkezdtem keresgélni az angol nyelvű szakirodalomban. Találtam egy-két kalkulátort, ami szintén az Excel által adott értéket produkálja az enyémmel szemben. Aztán találtam képletet is hozzá, ami egészen más alapon működik, mint az enyém: http://easycalculation.com/statistics/f-test-p-value.php. Szóval lehet, hogy nem a kerekítési pontosságon múlik a dolog. Furcsa is lenne, hiszen a Double az Double pontosság, nemigen változhatott sokat az elmúlt időszakban.
Kell most nekem egy kis idő, amíg értelmezem ezt a képletet, és a kettő közti különbséget, de kösz a kiinduló linket.
Persze, ha akad itt egy matematikus, aki tudja, hogy működött az általam használt képlet, meg hogyan működik a fenti link képlete, mi köztük a különbség, mi az elméleti háttér, annak nagyon örülnék, mert nem biztos, hogy ezt magamtól meg tudom fejteni.
Én is erre gondolok. Az Fisher-féle F elosztás ( http://en.wikipedia.org/wiki/F-distribution) eloszlásfüggvényben egy integrált közelítő módon kell kiszámítani. Itt az értékes tizedesjegyek nagyban befolyásolják a pontosságot.
Egyébként érdemes lenne még ellenőrizni, hogy az regresszió F-próbafüggvénye ugyanaz az érték mindkét módszerben.
Bár sajnálatos módon a legtöbb képlet esetében már az egyenlőségjel utáni 10-ik karakternél elvesztem a fonalat, de a hiba okával kapcsolatban még megjegyezném, hogy akár az is lehet, hogy a későbbi excel-ek több tizedessel számolnak.
Az előbb kicsit gyorsan válaszoltam, szóval, tedd a userform eseménykezelőjébe az alábbi kódot és a form tulajdonságoknál állítsd be ezt: StartUpPosition = 0 - Manual
Private Sub UserForm_Activate()
With Me .Width = Application.Width .Height = Application.Height End With End Sub