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.
Mondhatom, oltári nagy káosz van a füzetben. Azonos adatok tömkelege különböző tartományokban. Vesződtem vele jó ideig, de még a harmadáig sem jutottam a rendrakásnak, csak gondoltam, ha átnézed, segít a továbbiakban.
Kék karaktereket adtam a címsorban, mikor az oszlop érvényesítést tartalmaz, és pirosat, ha képlet van benne.
A politikában való járatlanságomat mutatja, hogy nem értem, hogy lehet 1-1 körzetben több nyertes.
Előbb gatyába kell rázni a tartományokat, utána lehet csak elgondolkozni azon, milyen grafikonokat, kimutatásokat érdemes az ésszerűen bevitt adatokból kicsikarni.
Kicsit off-ban kicsit félve, de megkérdezem a következőt:
A Nemzeti Választási Iroda honlapján szavazókörönként megtalálhatóak az adatok, a választás után nem sokkal. Szerintem bizonyára el lehet kérni/megvenni tőlük az információkat elektronikus úton.
Azt tutira sokkal könnyebb kezelni, mint adatokat bepüfölni - ellenőrizni több soron stb.
Esetleg arra egy képlet, hha van ami milliós, de van, ami 10milliós, 100milliós egyszerre de nem szeretném külön átirogatni minden sorban? vagy rendezzem növekvő sorban és minden új nagyságrendnél újra beírom?
Az lenne a kérédsem, hogyha excelben a például 1 987 654-et 2 millióra szeretném kerekíteni, az 1 574 321-et is és így tovább, akkor hogyan kéne beírnom?
Egy kérdés: megoldható-e az, hogy kizárólag a módosításokat mutassa a valtozaskovetes.xls fájl? Jelenleg a nem változott sorokat is mutatja megjegyzés nélkül - pl. az üres megjegyzéses sorokat törölhetné a program automatikusan a végén?
Még egy dolog: talán jobb lenne, ha a valtozaskovetes fájlban lenne maga a makró, hiszen ez állandó, csak az alap két fájl tartalma változik (regi - uj).
Amikor következő nap lefuttatom a makrót, akkor a korábban már meglévő valtozaskovetes.xlsm végére kellene hogy illessze be az új változásokat. Ez egy historikus fájl elvileg, ami mutatja, hogy az idők során milyen változások voltak a vásárlói adatbázisban.
Csak tipp volt reszemreol, mert tapasztalat alapjan nalam bevalt ez a fajta egyszeruseg.
Termeszetesen csak peldanak szantam a kepet. Egyszeru osszehasonlito tombkeplet voltanal fogva nem okoz lassusagot terjedelmes tablaknal. (En ezzel szoktam vizsgalni tobb ezer soros tablakat) Illetve feleslegesse teszi az fkereses osszehasonlitast, amit valoban sokaig szamolna...
Delila pedig biztosan segit a makros megoldasaban.
Kedves Vektor, köszi a tippet, de azt hiszem, a javaslatod nem oldja meg a problémát.
A feltöltött példa csak sematikus, a valóságban több ezer soros táblázatról van szó, több tíz változóval, ahol a közös ID alapján minden egyes Vásárló minden egyes adatát meg kell vizsgálni és összevetni a korábbi verzióval (rengeteg oszlopról van szó), majd a változásokat egy külön fájlba kell kilistázni. Az egyes rekordok nem ugyanazon a sorpozíción maradnak, hanem a teljes táblában változtathatják pozíciójukat, hiszen jönnek új sorok és törlődnek is.
Ha csak az lenne a feladat, hogy egy pár tíz soros kis táblázatban nézzük meg, mi változott, akkor egy fkeres + hol.van dinamikus oszlopvizsgáló függvény kombináció rögtön mutatná, hol van változás. Ezt követően viszont manuálisan kellene levadászni és kigyűjteni külön fájlba a változásokat, vagy egy irányított szűrővel lehetne megcsinálni, de ez megint csak manuális.
Ráadásul a táblázaton belüli képlettömeg kezelhetetlenné tenné szerintem a fájlt, ami ráadásul napi szinten változik valamelyest (vásárlók adatai, új vásárlók lépnek be stb.), így ez ilyen formában nem tűnik a legjobb megoldásnak.
Delila megoldását még nem láttam, mert sajnos nem tudom erről a gépről letölteni a fájlt, de ő szerintem makróval oldotta meg.
Az ID nem változhat! Ez az a mező, ami szerint keresni lehet a másik fájlban. Ha ezt módosítod, akkor honnan lehet tudni, hogy a régiben melyik sor adataihoz tartozik?
Kell egy fix érték az összehasonlításhoz, és ez az ID.
Egy kicsit módosítottam önhatalmúlag az elrendezésben.
A valtozaskovetes.xls-ben a Megjegyzés oszlopot áttettem az N oszlopba, így egyszerűbb a teljes sor másolása. Ebbe a megjegyzésbe azt a címet írtam be, ami az újban változott a régihez képest, pl. a T32-es ID-t tartalmazó sorban a Cím, a Felmondott szerződés, és a Szerződés megszűnésének időpontja.
A Tabla_uj.xlsx-ben a makró működésének könnyebb ellenőrzése érdekében festettem sárgára a változott cellákat. Természetesen erre nem lesz szükség élesben.
Adott két táblázat, azonos struktúrával, de időnként változó értékekkel. A nevük ezt tükrözi: Tabla_regi.xls, Tabla_uj.xls
Feladat: összehasonlítani az új táblát a régivel, és a változásokat egy harmadik táblában listázni: Valtozaskovetes.xls
A Valtozaskovetes.xls fájl struktúrája megegyezik az alap két tábláéval, de pluszban kell két oszlop. Az első plusz oszlop az első helyen lévő ID után kerül be, Megjegyzés néven. A második plusz oszlop a legvégére kerül Változás időpontja néven, és a változás aktuális dátumát jelzi, azaz a rendszeridőt (ma()).
Ha több változás is volt egy vásárlónál, akkor annyiszor kell másolni a teljes sort az új táblából, ahány darab változás előfordult a különböző mezőkben (cím, azonosító stb.).
Ha teljesen új a vásárló, akkor egyszer hozzuk át a teljes sor tartalmát át, ilyenkor a Megjegyzés: Új vásárló
A Megjegyzés kategóriák: Új vásárló - az ID alapján döntjük el (korábban nem létezett ID) Itt a teljes sort hozzuk át az új táblából Módosított ID A módosítás kategóriáknál annyiszor szerepeltetjük a vásárló összes adatát, ahány mező módosult, ha pl. 3 mező tartalma módosult, akkor 3 megjegyzés lesz és háromszor ugyanaz a sor Módosított Vásárló név Módosított Kapcsolat típus Módosított Raktári azonosító Módosított Város Módosított Cím Módosított Vásárolt termék Módosított Kapcsolattartó Módosított Más terméketet is kér Módosított Mióta ügyfél Módosított Felmondott szerződés? Módosított Szer.megszűn.időpont? Plusz oszlopba, Változás időpontja alá tegye be a rendszeridőt minden soron
Remélem, a fájlokat sikerült csatolni.
Mivel a valóságban több ezer soros táblákról van szó, az Exceles két ablak összehasonlítása verzió nem lenne túl jó megoldás, fkeres függvényezni meg ismét nem célszerű ennyi soron és ennyi változónál (még több van valójában).
Hogy indulnátok el? Logikailag az új tábla mezőértékeit változókba olvasnám be, és ezzel hasonlítanám össze a régi tábla értékeit, a kérdés már csak az, hogy hogyan?