Excel segítség!
#1081
Elküldve: 2012. 04. 16. 10:23
Egy kicsit több konkrétum nem ártott volna.
A harmadik lapon alkalmazd a SZUMHATÖBB függvényt, ahol az első feltétellel arra az adatra hivatkozol, ami mindkét lapon azonos (pl. cikkszám). A további feltételek a 2 lapra hivatkozzanak külön-külön.
Ez a függvény a 2007-es verzióban jelenik meg először. Ha régebbi Excelt használsz, két SZUMHA függvény (1. és 2. lapra hivatkozva) összegét tedd be a 3. lapra.
#1082
Elküldve: 2012. 04. 16. 17:21
Először is köszi a gyors választ, és hogy szeretnél segíteni!
Megpróbálom érthetőbben leírni a problémám. Az első két lapon ugyanazok a nevek szerepelnek ( csak más-más sorrendben, és nem alkalmazhatok rendezést, mert ez fix ), amelyekhez adatokat táplálok be. A harmadik lapon összesíteném az adatokat, ( az első lapról hivatkozással megoldottam a feladatot, de mivel a másodikon már más a sorrend,sima hivatkozással már nem megy, iletve nem helyes adatokat hoz) majd szeretném ha kiírná, hogy milyen helyet foglal el a sorozatban ( a bevitt, összesített adatok alapján). Sorszám függvényt alkalmaztam. Csakhogy lehet kettő, vagy akár több adat között is értékazonosság, és ilyenkor egy másik ( de ugyanabban a táblázatban szereplő adat alapján kellene sorszámoznia). Nem tudom mennyire volt ez így érthető. Kicsit bonyolultnak tűnik, de egy nagyon speciális feladatra kellene!
Előre is köszi!
#1083
Elküldve: 2012. 04. 16. 18:03
Munka3!A2 képlete: =Munka!A2
Munka3!B2 képlete: =SZUMHA(Munka1!A:A;A2;Munka1!B:B)+SZUMHA(Munka2!A:A;A2;Munka2!B:B)
Munka3!C2 képlete: =B1+SOR()*0,00001
Munka3!F2 képlete: =NAGY(C:C;SOR()-1)
Munka3!G2 képlete: =INDEX(A:C;HOL.VAN(F2;C:C;0);1)
Felvettem egy segédoszlopot, a C-t arra az esetre, ha azonos értékek jönnének ki a Munka3 lap B oszlopában.
Az összegeket csökkenő sorrendben jeleníti meg a G oszlop, az F-ben pedig megjelenik a név, akihez ez az érték tartozik. A G oszlopban ne látszanak a tizedesek!
Lehet, hogy nem is nevek vannak az A oszlopban, csak én feltételeztem.
Az F és a G képlete helyett beírhatod a D2-be a =SORSZÁM(C2;C:C) képletet.
Ha mondjuk az első 5 értékre vagy kíváncsi, elég az A és B oszlop. Beteszel egy autoszűrőt, és a B-ben a számszűrés toplistában beállítod az 5-öt.
#1084
Elküldve: 2012. 04. 17. 10:45
Idézet: Delila - Dátum: 2012. 04. 13. 12:55
Sikerült összehozni, csak szépséghibája, hogy miután berajzolta a kézi oldaltöréseket, hibára fut a
Do While Rows(sor).PageBreak = toressorban (sor=0). Próbáltam On Error, és If sor<1 hibakezelést, fütyül rá, de addigra elvégzi a feladatot.
Sub Toresek()
Dim tores As Integer, sor As Integer, usor As Integer, sor1 As Integer
usor = Range("A65536").End(xlUp).Row
tores = Rows(usor).PageBreak
sor = usor
Do While sor > 2
Do While Rows(sor).PageBreak = tores
sor = sor - 1
Loop
For sor1 = sor To 3 Step -1
If Cells(sor1 - 1, 1) = "" Then
ActiveWindow.SelectedSheets.HPageBreaks.Add before:=Cells(sor1, 1)
Exit For
End If
Next
sor = sor - 2
Loop
End SubBocs, csak most tudtam kipróbálni, és VAU!
(Ugyan nem tökéletes, de a fényt megmutattad!
#1086
Elküldve: 2012. 04. 17. 12:06
Adott két munkalap:
X -munkalap, ezt külső szoftver lekérdező modulja állítja elő, és neve folyton más, és persze előtte ki lehet jelölni, mely oszlopok kerüljenek bele, milyen sorrendben....
És Y munkalap, ami más forrásból van /helyileg vezetik, de a lényeg, hogy Y néhány adata (oszlopa) megegyezik X oszlopaival (meg kellene egyeznie), ezek persze véletlenül sem ott (azon az oszlop pozíción) vannak, és véletlenül sem az az oszlop azonosítójuk (első cella értéke), mint ami X munkalapon a kérdéses adat azonosítója (tipikus másságok: Gyári szám; Gy.Sz. Gyári sz. Gyár azonosítója; Gyári ID; stb.)
Y-n előfordulhatnak részösszegek is. Mindkét munkalapnak egy soros oszlopazonosítója van.
Mindkét munkalapban van olyan egyedi adat, (több is) amit azonosítóként, index kulcsként lehet használni (Gyári szám, leltári szám, cikkszám, stb.), amivel a két tábla adatait össze lehet hasonlítani .
Rendszeresen ellenőrizni kell, hogy van-e eltérés, egyeznek-e az adatok. Jellemzően 7 oszlop adatát kell hasonlítgatni.
Eddig Fkeres-el bűvészkedtek, de a dolog terhes lett, hiszen X munkalapneve, meg az oszlopok pozíciója esetenként változik, sőt borult időnként a számot ábrázoló szöveges mezők kezelése is.
És alkalmasint 7 oszlopot kell vizsgálni!
Így jöttek hozzám, hogy kellene valami. Először valami frappáns függvényes megoldással próbálkoztam, (saját "kompozit" függvényt próbáltam összehozni), de végül ez lett belőle (ld. csatolt ZIP)
Ebben egy exportált form van. Minden benne van, egy külső makrónak csak a Munkalap_chk.show parancsot kell kiadnia. Annyi a változó, hogy azok átadásával (másik, külső makrónak) már nem is próbálkoztam, meg aztán sürgős is volt.
Engem viszont izgat, milyen más módon lehet-ne ezt megoldani, van valakinek más tippje?
Csatolt fájl:
-
Munkalap_chk.zip (6,16K)
Letöltések:: 1
#1087
Elküldve: 2012. 04. 17. 12:07
#1088
Elküldve: 2012. 04. 17. 13:49
Idézet: Delila - Dátum: 2012. 04. 17. 12:56
Sikerült kiküszöbölni a hibát?
Szóval a hátul tesztelő ciklus nem volt jó, mert hamarabb lett sor=0 mint kellett volna.
Az sem bizonyult szerencsésnek, hogy alulról felfele történt a töréspontok keresése, mert így akadt
ami "kimaradt" Pontosabban minden oldaltörés után az Excel kiszámolja a többit, és egyik helyen nem vala, de később odakerült egy a ciklusváltozó "mögé"... vagy hogy.
De ez végül jól működik:
Sub Toresek()
Dim tores As Integer, usor As Integer, sor1 As Integer
usor = Range("A65536").End(xlUp).Row
tores = Rows(1).PageBreak
For i = 2 To usor
If Rows(i).PageBreak <> tores Then
Cells(i, 1).Select
For sor1 = i To 3 Step -1
If Cells(sor1 - 1, 1) = "" Then
ActiveWindow.SelectedSheets.HPageBreaks.Add before:=Cells(sor1, 1)
tores = Rows(sor1 - 2).PageBreak
Exit For
End If
Next sor1
End If
Next i
End SubSzóval kösz, Delila, nagy vagy !
#1089
Elküldve: 2012. 04. 17. 14:22
#1091
Elküldve: 2012. 04. 17. 14:44
Idézet: Raynes - Dátum: 2012. 04. 17. 15:22
Most Neked itt Ó, Nagymester, mi a problémád? (szerk. esetleg, ha megmutatnád, hogyan csináltad volna...)
Szerkesztette: hkpk 2012. 04. 17. 14:45 -kor
#1092
Elküldve: 2012. 04. 17. 14:59
Idézet: hkpk - Dátum: 2012. 04. 17. 15:44
Ilyen egymásba ágyazott, visszafelé léptetett, 2-től/ig indított ciklusok. Javítja ki a fene, úgyse értem mit csinál a kód, meg amúgy miről van szó. Csak hátradőlök, csámcsogok a popcornnal, és élvezem a showt
#1093
Elküldve: 2012. 04. 17. 18:10
Idézet: Raynes - Dátum: 2012. 04. 17. 15:59
Hm. ha egyszer ilyen a forrás, ahhoz igazodik a kód. Ha visszaolvasnál, lehet megértenéd, ez egy hosszabb thread vége. Ja, visszafele nem lépteded a ciklust, így nehéz
Szóval, kb. erről van szó Állsz A pontban, és az a feladat, leverj egy cölöpöt B pontba A pont és C pont között, ami között nem ismered a távolságot, csak azt tudod, C-től 1/5-öd annyira kell lennie B-nek, mint az A-C távolság.
Én úgy csinálom, hogy lemérem A-C távolságot, és visszaszámolok C-től B-ig. Biztos, hogy úgy is lehet, hogy visszamégy A-ba, és onnan megint vissza C-felé, de szerintem ez a lükébb megoldás
#1094
Elküldve: 2012. 05. 01. 19:12
Több gyorsbillentyűről felismertem, hogy nem működik, habár a súgó ír róla.
Ezek egy részét helyettesítő valódi kombinációra már rájöttem. Furcsa mód van olyan gyorsbillentyű-kombináció is, ami az itthoni excelemben működik, a munkahelyiben pedig nem. Most hirtelen nem tudom mi különbség lehet a kettő közt, elvileg szerintem 2010-es mindkettő.
Jelenlegi gyorsbillentyű, ami nagyon megszépítené a napom, ha működne: Ctrl+Shift+L, azaz a kijelölt cellák szűrésének engedélyezése. Az itthoni excelen működik, a munkahelyemen nem - Tudja vki, mi lehet a működőképes változat?
Tipp: aki olyan excelt használ, amiben nem működik a Ctrl+, a pontos dátum bevitelére, annak a Ctrl+0-t fogja elfogadni.
Üdv
#1095
Elküldve: 2012. 05. 03. 07:43
Idézet: Afflicted - Dátum: 2012. 05. 01. 20:12
Több gyorsbillentyűről felismertem, hogy nem működik, habár a súgó ír róla.
Ezek egy részét helyettesítő valódi kombinációra már rájöttem. Furcsa mód van olyan gyorsbillentyű-kombináció is, ami az itthoni excelemben működik, a munkahelyiben pedig nem. Most hirtelen nem tudom mi különbség lehet a kettő közt, elvileg szerintem 2010-es mindkettő.
Jelenlegi gyorsbillentyű, ami nagyon megszépítené a napom, ha működne: Ctrl+Shift+L, azaz a kijelölt cellák szűrésének engedélyezése. Az itthoni excelen működik, a munkahelyemen nem - Tudja vki, mi lehet a működőképes változat?
Tipp: aki olyan excelt használ, amiben nem működik a Ctrl+, a pontos dátum bevitelére, annak a Ctrl+0-t fogja elfogadni.
Üdv
Csak tippek:
Makróval is el lehet állítani a billentyűkombinációkat, de úgy is hogy be van kapcsolva a Lotus kompatibilitásnál (Beállítások / Speciális) a másodlagos irányító billentyűk opció.
#1096
Elküldve: 2012. 05. 03. 08:00
Össze kell hasonlítani.
A két táblában logikailag azonos adat "tartalmú" oszlopok vannak
Azonosító, dátum, név, forint
A két táblát egymás mellá helyezve, ezek a következő oszlopokba kerülnek:
A;B;C;D
E;F;G;H
Mindkét tábla szöveges forrás, midkettő importálásakor az azonosító
szöveges formátumra van állítva, úgy is olvassa ba (bár azok formailag számok)
Egy makró sok mindent csinál ezzel, többek között, a sorokat összepárosítja.
/vannak sorok, amik az első, és vannak amik a második táblából hiányoznak/
Mindkét tábla azonosító, dátum szerint rendezett.
Azondja:
For i = 3 To (rekordszám * 2) + 3 If Cells(i, 1).Value > Cells(i, 5).Value Then If IsEmpty(Cells(i, 6)) Then Exit For Range(Cells(i, 1), Cells(i, 4)).Insert Shift:=xlDown Cells(i, 1).NumberFormat = "@" Cells(i, 1).Value = Cells(i, 5).Value End If If Cells(i, 1).Value < Cells(i, 5).Value Then If IsEmpty(Cells(i, 3)) Then Exit For Range(Cells(i, 5), Cells(i, 8)).Insert Shift:=xlDown Cells(i, 5).NumberFormat = "@" Cells(i, 5).Value = Cells(i, 1).Value End If next i
Amikor az E oszlopból az A oszlopba másolja a tartalmat,
a cella formátuma szövegesre van állítva, mert különben hiába
szöveges a forrás, számként illesztené be az Excel. Viszont így szépen szöveges lesz.
Amikor az A oszlopból az E oszlopba másolja a tartalmat,
a cella formátuma szövegesre van állítva, mert különben hiába
szöveges a forrás, számként illesztené be az Excel. És meg is teszi!
Annak ellnére, hogy ugyanúgy szöveges a cél, szöveges a forrás.
Ugyanúgy, ugyanolyan módon van átmásolva innen oda, mint onnan ide,
mégis másként kezeli!
Mivel lehetne rábírni, hogy legyen következetes?
//Sheriff, a i = 3 To (rekordszám * 2) + 3 csak a Te kedvedért lett így kitalálva
#1097
Elküldve: 2012. 05. 03. 10:04
Idézet: hkpk - Dátum: 2012. 05. 03. 09:00
Szerencséd, hogy seröfnek szólítottál. Mondjuk ez a 3-as dolog nem annyira tetszik, de talán ebben a példában elmegy, legalább nem mínuszos léptetésű, meg nem GOTO-s. Csak nem értem, hogy miért pont 3, de ez az én egyéni szocproblémám. Különben király topik, ide mindig vérbeli hkpk-kódokat jövök olvasgatni és sosem csalódom
#1099
Elküldve: 2012. 05. 04. 19:58
Idézet: Raynes - Dátum: 2012. 05. 03. 11:04
Excel feature egyfelől, hogy nem updateli rendesen a táblában használt sorok számát, de itt külön arról van szó, hogy az i változó sorok cmízésére van használva. Oszt a táblába felül 2 sor fejléc gyanánt beszúrva lett (ez nem látszik a kódból, a történet nem erről szól), így az összehasonlítást a 3-ik sortól kell kezdeni. Afelett értelme sincs, és hibához is vezetne. A +3 a végén meg pont azért kell, mert be lettek szúrva sorok. Na, valami ilyesmi. Meg lustaság
#1100
Elküldve: 2012. 05. 04. 19:59

Súgó
A téma zárva.












