PDA

View Full Version : EXCEL munkalapok osszefesulese (HUN)



emberke70
04-12-2007, 08:32 AM
Sziasztok!

Megold?st keresek az al?bbi probl?m?ra:

Van egy f?jlom, 2 munkalappal. Mind a 2 munkalapban k?l?nb?ző adatok vannak, de a k?t munkalap sorait egy azonos?t? ?rt?k alapj?n ?ssze lehet kapcsolni.

A feladatom az, hogy egy harmadik mukalapra m?solja ?t a k?z?s azonos?t?val rendelkező rekord ?sszes adat?t.
pl:
munkalap1 azonos?t? n?v sz?lidate lakc?m
munkalap2 azonos?t? ad?sz?m TAJ sz?m
eredm?ny- (ezt szeretn?m el?rni) azonos?t? n?v sz?lidate lakc?m ad?sz?m TAJ sz?mA makr?s megold?s is j?het, csak ahhoz nem nagyon ?rtek.
?s pof?tlans?gnak tartan?m a magam r?sz?ről, ha k?sz k?dot k?rn?k.
De megpr?b?lkozom vele... főleg ha konkr?t seg?ts?get kapok..

A makr? eset?ben valahogy a k?vetkező k?ppen kellene műk?dnie:
1. lek?ri, hogy h?ny munkalap van az adott f?jlban (mert lehet t?bb is, nem csak 2)
2. k?rje be, hogy melyik oszlopban tal?lhat? az azonos?t? mező.
3. Az azonos?t?kat tartalmaz? oszlop tipus?t alak?tsa ?ltal?nos form?tumra - mert van amelyik csak sz?mot tartalmaz, van amelyik sz?mot ?s betűt is.
4. esetleg k?rdezze meg, hogy mely oszopokra van sz?ks?gem a munkalapokr?l.
5. vesse ?ssze az ?sszes munkalapon az azonos?t?kat, ?s egyez?s eset?n m?solja ?ssze a kiv?lasztott oszopok tartalm?t - egy k?l?n munkalapra.
6. m?solja ki azokat a rekordokat is egy k?l?n munkalapra, ahol nem tal?lt egyez?st, de sz?rja be az első cell?ba, hogy melyik munkalapr?l val? az adott rekord.Ez ?gy le?rva nem tűnik annyira bonyolultnak olyan szakemberek sz?m?ra, akik nap mint nap ezzel foglalkoznak, de ?n azt sem tudom, hogyan fogjak hozz?. Tov?bb? eleve probl?m?t okoz az is, hogy hogyan szűrjem ki az azonos adatokat tartalmaz? oszlopokat - hogy ne sokszoroz?djanak.
Amit p?ldak?nt eml?tettem, az egy lesark?tott feladat volt, mert ha f?ggv?nnyel megoldahat?, akkor azt tudn?m alakalmazni.

A val?s?gban az egyes munkalapokon szereplő rekordok tartalmaznak azonos adatokat is - vagyis pl a n?v szerepel mindenhol. De mondjuk ez a legkisebb gond, legfeljebb kit?r?lgetem a nem kellő oszlopokat...

K?sz?n?m a v?laszokat!
Minden megold?s ?rdekel!
emberke

JimmyTheHand
04-12-2007, 08:54 AM
L?gy ?dv?z?lve a VBAX-on :hi:

R?szben a f?rum lehetős?geit bemutatand?, r?szben a feleadat pontos?t?sa ?rdek?ben itt ez a k?t szubrutin.

Sub hany_munkalap_van()
MsgBox "A munkaf?zetben a munkalapok sz?ma: " & ThisWorkbook.Sheets.Count & " db."
End Sub

Sub azonosito_oszlopa()
Dim C As Range
Set C = ActiveSheet.Cells.Find("azonos?t?")
If Not C Is Nothing Then
MsgBox "Az azonos?t? mező a(z) " & C.Column & ". oszlopban van"
Else
MsgBox " Az azonos?t? mező nem tal?lhat?."
End If
End Sub
Csak azt akarom mondani, hogy az első k?t k?rd?sre automatikusan megadhat? a v?lasz, nem kell a felhaszn?l?nak k?rd?st feltenni. Azt is lehet, hogy a program csak azokat a munkalapokat dolgozza fel, amelyeknek az első sor?ban az "azonos?t?" sz? szerepel. ?ltal?noss?gban, ha a feldolgozand? rekordokat tartalmaz? munkalapokat b?rmi megk?l?nb?zteti az egy?b (pl. lek?rdez?st tartalmaz?) munkalapokt?l, akkor azt k?ddal le lehet kezelni, ?s nincs sz?ks?g k?l?n felhaszn?l?i input-ra.

A fenti k?dokat műk?d?s k?zben is megtekintheted, ha let?lt?d ?s megnyitod a csatolt f?jlt.

Jimmy

emberke70
04-12-2007, 09:56 AM
Szuper!
Teh?t ezek az ?rt?kek lek?rdezhetőek ?s elt?rolhat?ak.
(kipr?b?ltam ?s műk?dik is..)

Gondolom ezeket a k?sőbbiek folyam?n haszn?lni is fogjuk.
Ha j?l sejtem, miut?n meg?llap?tottuk hogy melyik oszlop tartalmazza az azonos?t?t, a munkalapok adott oszlopaiban a form?tumot kell egys?gesre ?ll?tani. Az azonos?t?k betűk-sz?mok vegyesen, de van ahol csak sz?mb?l, van ahol csak betűből ?ll.

J?l gondolom?

JimmyTheHand
04-12-2007, 11:15 AM
Szeritem nem kell a form?tummal b?belődni. Sz?mot, betűt ?s a kettő elegy?t is lehet string-k?nt (karaktersorozatk?nt) kezelni. A form?tum ink?bb csak a megjelen?t?st takarja, a m?g?ttes tartalom elvileg ugyanaz.

A k?vetkező v?laszt?si lehetős?g, amit k?n?lok, hogy a k?d m?s munkaf?zetben legyen, mint amit fel kell dolgozni. Pl. van egy Program.xls nevű f?jlod, ami az ?sszes makr?t tartalmazza. Amikor elind?tod, megnyitja a rekordok.xls f?jlt, amiben az adatok vannak, elv?gzi az adatfeldolgoz?st, ?s az eredm?nyt egy harmadik ?j munkaf?zetben t?rolja le. Vagy ak?r a rekordok.xls-ben, ?j lapon.

Ez akkor hasznos, ha a rekordok.xls gyakran v?ltozik, ?s valaki m?s adja Neked. Hogy ne kelljen az aktu?lis f?jlba mindig bem?solni a k?dot.

A tov?bbl?p?shez azonban, azt hiszem, sz?ks?g lenne konkr?tumokra. Az lenne a legjobb, ha felt?lten?d az adatf?jl m?solat?t, miut?n az adatokat kit?r?lted belőle. Az ?rdekel, hogy milyen az egyes oszlopok elhelyezked?se, van-e oszlopfejl?c, ha van, akkor h?nyadik sorban, minden lapon ugyanabban a sorban van-e, azt?n van-e olyan jellemző, ami alapj?n a feldolgozand? lapok felismerhetőek, avagy mindegyik munkalapot ?t kell n?zni? Meg hasonl?k.

Idők?zben csin?ltam megint valamit.
A mell?kelt munkaf?zetben l?thatsz egy megold?si vari?ci?t a k?rd?sed 4. pontj?ra. Ez m?r tal?n kicsit magasabb szint, de ha ?rdekel, sz?vesen elmagyar?zom.

emberke70
04-13-2007, 12:27 AM
Szia!
L?tom k?ső ?jjelig dolgozt?l a k?don... valahogy egyszer majd egy s?r mellett megk?sz?n?m.
Viszont ?n sem aluk?ltam :*), hanem előb?ny?sztam egy k?nyvet, ?s felfriss?tettem az eml?keimet, valamint v?gig gondoltam a "miket" ?s "hogyanokat".

V?gig n?ztem azokat az excel t?bl?kat, amiket haszn?lnom kell. Ugyan el tudom k?ldeni, de nem igaz?n van sok ?rtelme, mert az adott feladatra - hogy milyen k?rd?st kell megv?laszolni - k?sz?lnek a lev?logat?sok egy k?zponti adatb?zisb?l, ?s ?n csak a lev?logat?sok eredm?ny?t kapom meg.
Egy fix van, az az azonos?t? sz?m. Az ?sszes t?bbi adat v?ltozhat.
Ugyan az azonos?t? sz?m minden f?jlban benne van, de lev?logat?sonk?nt v?ltozik az azonos?t?t tartalmaz? oszlop neve. Pl: az egyik f?jlban "ordernumberstring", a m?sikban "ordernuber" - nem ?rtam rosszul, kimaradt az "m" - harmadikat m?g nem kaptam, ez?rt arra gondoltam, hogy a felhaszn?l?t k?nytelenek lesz?nk kicsit megdolgoztatni.

Sz?momra ez a vari?ci? tűnik egyszerűnek:

a felh nyit egy ?j f?jlt, amibe ?tm?solja a lev?logat?s sor?n keletkezett ?s ?ltala haszn?lni k?v?nt munkalapokat.
?gy rendezi, hogy az azonos?t?kat tartalmaz? oszlop minden k?ppen előre ker?lj?n.
a program nem automatiz?ltan sz?mol, hanem bek?ri az inform?ci?t, h?ny munkalappal kell dolgoznia - ez az?rt is jobb lenne ?gy, mert t?bbf?le vari?ci?ban lehetne az adatokat ?sszef?s?lni, ak?r t?bb munkalapra is - egy f?jlban.
teh?t tudjuk, hogy az első oszlop fixen tartalmazza az azonos?t?t, illetve azt, hogy h?ny munklapon akarunk dolgozni... ?gy ezeket a mlapokat előlről lehet sz?moltatni. pl. az első h?rom-b?l ez meg ez kell, azt?n az első kettőből az meg az... stb. vari?lhat?.
Vagy: indul?skot kapcsol?mezővel kiv?laszthatjuk, hogy melyik munkalapokon szeretn?nk dolgozni. - ez tal?n m?g jobb, mert akkor nem kell a felhnak rendeznie a mlapokat.Azt minden k?ppen j? ?tletnek tartom, hogy a makr? gyűjtem?ny?nk egy k?l?n f?jlban legyen.
A t?bbit meg ?tn?zem m?g... ?s ha valamit nem ?rtek, akkor k?rdezek.

A csatolm?ny a jelenleg haszn?lt munkalapokat tartlmazza.

JimmyTheHand
04-13-2007, 06:53 AM
Szia :)

Megpr?b?ltam elk?pzelni az elk?pzel?sedet :)
Nem vagyok biztos benne, hogy mit ?rtesz kapcsol?mezőn. ?n jel?lőn?gyzetnek ford?tottam. Ha a feldolgozand? munkalapokat jel?lőn?gyzettel akarod kiv?lasztani, azt el?g k?r?lm?nyes lek?dolni. Ugyanis nem lehet előre tudni, hogy h?ny munkalap lesz. Az űrlapra tervez?skor feltehetek N db jel?lőn?gyzetet, de mi van, ha N+1 munkalap van? (Persze nem lehetetlen megoldani ezt sem, csak, mint mondtam, k?r?lm?nyes).

Ez?rt javaslom a listapaneles megold?st, amit az előző HSZ-ban mutattam. Most, az ?jabb inform?ci?k t?kr?ben kicsit tov?bbfejlesztettem .

Pr?b?ld ki, ?s k?v?ncsi vagyok, mit sz?lsz hozz?. Csak a Gomb1-et kell megnyomni. A program abb?l indul ki, hogy a feldolgozand? munkalapok 1 f?jlban vannak, ?s ?gy rendezve, hogy mindegyik lapon az azonos?t? az első mező.

emberke70
04-14-2007, 04:35 AM
"Behalok" Rajtad! :)
Ezt nagyon j?l kital?ltad!!! Ez sokkal jobb, mint az ?n elk?pzel?sem.
Ennyit sz?m?t az, ha valakinek van gyakorlata benne..

Akkor most ?n k?rdezek:
- milyen inform?ci?kra van sz?ks?g a tov?bbiakhoz?
- miket kell meghat?rozni ?s lefix?lni?

?s le vagyok nyűg?zve!!!!

(K?sz?n?m az eddigieket is!!!!)

JimmyTheHand
04-15-2007, 02:41 PM
Szia :)

Most egyelőre nem kell semmi. Szerintem ennyiből m?r ?ssze lehet ?tni egy első verzi?t, azt?n majd csinos?tgatunk rajta. (Most is csak az ?rdekelt, hogy eddig j?-e. )
Nem annyira neh?z a dolog, csak nagyon ?sszetett, ?s pr?b?lok valami egyszerűbb algoritmust tal?lni a fav?g? m?dszer helyett. :think: Azt?n lehet, hogy a v?g?n m?gis a fav?g? m?dszer lesz a nyerő.

Ha minden j?l megy, olyan kedd magass?g?ban előrukkolok valamivel. Addig t?relmedet k?rem.

JimmyTheHand
04-15-2007, 11:43 PM
V?ltozott a terv.
Elk?sz?lt az első verzi?. K?rlek, v?lem?nyezd :)

emberke70
04-16-2007, 12:38 AM
Szia!
Teljesen j?l műk?dik eddig a dolog, minden tekintetben megfelelő ?s haszn?lhat? az elk?pzel?sed!
Nem vagyok t?relmetlen.... hogyan is lehetn?k az, mikor ekkora seg?ts?get kapok Tőled?! :bow:

Csak nyugodtan.... b?r kicsit haszn?lhat?bb m?don bele tudn?k sz?lni ebbe a munk?ba!!!

emberke70
04-16-2007, 12:49 AM
?ppen most pr?b?lom....

emberke70
04-16-2007, 12:53 AM
Műk?dik!!!! Műk?dik!!!!! ?s j?l!!!! Ez elk?pesztő!!!
A mai munk?m - nagy r?sze - k?szen is van!!!!!

JimmyTheHand
04-16-2007, 02:07 AM
Műk?dik!!!! Műk?dik!!!!! ?s j?l!!!! Ez elk?pesztő!!!
A mai munk?m - nagy r?sze - k?szen is van!!!!!

H?t ennek ?r?l?k :)
J? lesz ?gy, vagy van m?g k?v?ns?god?

emberke70
04-16-2007, 04:19 AM
H?t ennek ?r?l?k :)
J? lesz ?gy, vagy van m?g k?v?ns?god?
?rik a s?r - m?r valahol :)

Igen, m?g lenne itt 1-2 dolog.
Az egyik oszloppal kapcsolatban, "adText" lenne m?g 2 hm.. hogy is nevezzem, dolgom. Ugyan egyszerűen meg tudom oldani f?ggv?nnyel, de h?tha ezt is lehet egyszerűs?teni.

Az "adText" oszlop tartalmaz olyan inform?ci?kat, amit sz?veges f?ggv?nnyel szoktam megoldani.
Ebben az oszlopban sz?veges inform?ci? tal?lhat?, ami alapj?n egy m?sik gyűjt?st is v?gzek.
A sz?veges inform?ci?ban az első sz?k?zig gyűjt?m ki a szavakat.
pl: AUDI A5 elad? szerv? blabla... ebből kell nekem az "AUDI".

Ami lenne m?g, az annyi, hogy ha ez a sz?veges inform?ci? "sz?k?zzel" kezdődik, akkor trimmelje a sz?k?zt, ?s emelje ki k?l?n oszlopba az első sz?t.
Valamint az ?sszes?t?s, amit k?zzel szoktam lesz?molni a k?sz t?bl?b?l, rendez?sekkel...
"mell?kelem a f?jlt" - abb?l tal?n jobban ?rthető.

De igaz?n nem szeretn?lek ezzel terhelni... elk?pzelni sem tudom, hogy mennyi munk?d fekszik m?r eddig is benne!!!!

L

JimmyTheHand
04-16-2007, 01:19 PM
Szia :hi:

Az adText oszlop bont?sa gyerekj?t?k lesz, viszont itt szeretn?k kicsit pontos?tani. Mindig ?s mindenk?ppen adTExt az oszlop neve? Vagy esetleg m?s is lehet, ?s ink?bb k?rdezen r? a program?

Az ?sszes?t?s első r?n?z?sre kicsit bonyolultabbnak tűnik, de val?sz?nűleg az is viszonylag k?nnyebben megoldhat?. Viszont most nem tudom, hogy mikor lesz időm komolyan foglalkozni vele. Lehet, hogy csak h?tv?g?n.

Ami a f?rads?got, meg a befektetett munk?t illeti, nem kell nagy dologra gondolni. Tudod, ez a f?rum az?rt van, hogy akinek seg?ts?gre van sz?ks?ge, az k?rjen, aki meg seg?teni tud, az adjon. Nekem is hasznos, mert tanulok k?zben. Persze a k?sz?net, meg az elismer?s j?l esik a v?g?n, de s?rre nincs sz?ks?g (?s nem is szeretem :devil2:). Szerintem, ha igaz?n meg akarod k?sz?nni, seg?ts valakinek abban, amiben Te tudsz. Előbb-ut?bb visszajut majd hozz?m, mert ?gy műk?dik a vil?g :yes

emberke70
04-17-2007, 12:07 AM
Sz?p Reggelt Kiv?nok!

Az AdText oszlop - az eddig kapott lev?logat?sokban - ilyen n?ven szerepel ugyan, de k?zel sem biztos, hogy ez is marad. Ink?bb k?rdezzen r?, hogy melyik oszlop tartalmazza a sz?veges inform?ci?t.

A seg?ts?g ny?jt?sr?l pedig az a v?lem?nyem, hogy amit Te teszel meg nekem, az t?bb enn?l. Hiszen a konkr?t probl?m?mat oldod meg.
?s amit aj?nlott?l, az "j? ?zlet" nekem, m?g akkor is, ha a tud?som ebben a tekintetben kezdetleges ?s ink?bb csup?n felhaszn?l?i szintű ismereteimre hagyatkozva seg?thetek m?soknak.

Viszont a Te seg?ts?gny?jt?sod sarkall arra, hogy elm?lyedjek a Visual Basicben egy kicsit jobban ?s megtanuljam azt a fajta gondolkod?s m?dot, ami az alapszintű programoz?shoz sz?ks?ges.

Ha nem tartod tolakod?snak, akkor tov?bbra is teszek fel majd k?rd?seket, de itt m?r ink?bb csak ir?nymutat?st szeretn?k k?rni egy-egy probl?ma megold?s "hogyanj?ra", nem pedig a konkr?t k?dot k?rem. Mert csak ?gy tanulhatom meg magam is, ha megk?zd?k az eredm?ny?rt.
Beszereztem egy-k?t k?nyvet, ami a tud?som bőv?t?s?hez sz?ks?ges, viszont k?nyvekből nem lehet megtanulni az objektum orient?lt programoz?shoz sz?ks?ges logikai gondolkod?s m?dot. Itt ez alatt azt ?rtem, hogy egy adott probl?ma megold?s?t lehet, hogy t?lbonyol?tan?m, viszont akinek meg van rutinja, az kap?sb?l mond egy sokkal egyszerűbbet.
M?g nem tudom, hogyan fogok haladni, de a kedv, akarat ?s idő az m?r rendelkez?sre ?ll! :) ?s azt gondolom, erre van igaz?n sz?ks?g!

Amit az előzőekben k?rtem, az m?r "csak" r?ad?s nekem... igaz?n r??rős, nem kell sietni vele. A munka oroszl?nr?sze pedig m?r k?szen van - ?ltalad. :thumb

JimmyTheHand
04-18-2007, 11:11 PM
Szia :hi:

K?sz a k?vetkező r?sz is!
Kicsit v?ltoztattam a szerkezet?n, teszteld le. Szerintem tetszeni fog :) De ha m?g valami hib?dzik, sz?lj nyugodtan.

A k?rd?sek pedig term?szetesen j?hetnek. :yes

emberke70
04-19-2007, 02:55 AM
Szia!

K?sz?n?m! Val?ban j?k a v?ltoztat?sok :clap:, de sajnos nem fut v?gig.
Elk?ld?m a munkaf?jlt, hogy azon pr?b?lhasd ki - de mivel t?m?r?tve is f?l mega, a mail c?medre tov?bb?tom.
(kiszedtem minden olyan mezőt, amire nincs sz?ks?g, csak azok az oszlopok vannak benne, amelyekkel most ?n v?gig pr?b?ltam!)

Azt hiszem a hiba ott van, hogy nem kezeli j?l az ?res sorokat..... de ez csak gondolom.

JimmyTheHand
04-19-2007, 11:13 PM
Kijav?tottam az ?sszes hib?t, amit tal?ltam. Rem?lem, nincs benne t?bb.
Egy?bk?nt igazad volt, k?t szempontb?l is. Egyr?szt val?ban az ?res sorok probl?m?t okoztak, de ez n?mileg tudatos volt, ugyanis arra sz?m?tottam, hogy nem lesznek kit?ltetlen mezők. Most m?r ezen nem akad fenn a program.
M?sr?szt pedig val?ban nem mindegy, hogy mi a cella form?tuma, ugyanis a Find művelet nem tal?lta meg az azonos?t? sz?mokat, ha azok sz?vegk?nt voltak ?br?zolva. Vagy ford?tva, de a l?nyeg, hogy k?l?nbs?get tett k?z?tt?k. Lehet hogy ezt egy tr?kk?s be?ll?t?ssal meg lehet oldani, de elsőre egyszerűbbnek tűnt a cellaform?z?s.

Mindenesetre most itt a 6. v?ltozat, pr?b?ld ki.
;)

emberke70
04-20-2007, 03:50 AM
Szia!
Most hib?tlanul műk?dik!!!! :)))
Nagyon k?sz?n?m!

(az eredm?nyből azt?n csemeg?zhetnek a főn?keim :) )

Nostromo
02-25-2008, 10:37 AM
Sziasztok!

Nekem is sz?sk?gem lenne egy kis seg?ts?gre. A k?vetkező a probl?ma. Van 2 Excel file, amiket ?ssze kellene f?s?lni.
A forr?sfile 2 oszlopb?l a c?lfile 1 oszlopb?l ?ll. A c?lfile rendezetlen ?s nem is szabad rendezni.
A c?lfile minden sor?n v?gig kell menni ?s ha megtal?ljuk ezt az elemet a forr?sfile-ban, akkor a tőle jobbra levő cell?t mell? kell ?rni.
Ha van olyan tern?kn?v a forr?sfilban, ami a c?lfile-ban nincs, azzal nem kell csinlni semmit.
Tudna nekem seg?teni valaki ebben?

Előre is h?l?san k?sz?n?m


P?lda:

Forr?s Excelt?bla:

Term?kn?v1 Term?kk?d1
Term?kn?v2 Term?kn?v2
Term?kn?v3 Term?kn?v3
Term?kn?v4 Term?kn?v4
Term?kn?v5 Term?kn?v5

C?l Excelt?bla:

Fejl?c
Term?kn?v1
Le?r?s1
Term?kn?v5
Term?kn?v4
Le?r?s4
Gy?rt?4
Term?kn?v2
Gy?rt?2
Term?kn?v3
L?bl?c

Eredm?ny

Fejl?c
Term?kn?v1 Term?kk?d1
Le?r?s1
Term?kn?v5 Term?kk?d4
Term?kn?v4 Term?kk?d4
Le?r?s4
Gy?rt?4
Term?kn?v2 Term?kk?d2
Gy?rt?2
Term?kn?v3 Term?kk?d3
L?bl

prentin
12-24-2008, 06:38 AM
sziasztok, ?j vagyok. műk?dik m?g ez a f?rum?