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.
A feladat elvileg nem okozna nehézséget, de van néhány nehezen áthidalható gond.
1. Nem tudom, miért kell az egyes szereplők adatait önálló fájlban tárolni. (ne hívjuk őket külön excelnek, hanem külön munkafüzetnek, mert ez az általánosan elfogadott neve ezeknek az Excel fájloknak)
2. Nem adtad meg az egyes munkafüzeteken belül a munkalap nevét, amelyben az adataid találhatók. Feltételezem, hogy meghagytad az Excel által automatikusan adott „Munka1” munkalap nevét, de ezt azért jó lenne tisztázni.
3. Nem derült ki a leírásodból, hogy minden egyes munkafüzetben ugyanazokban a cellákban vannak-e az adatok. Eredetileg azt írtad, hogy az A1-B4 cellákban, a mostani mintád szerint a C5-D11-ben vannak, minden második sor üresen hagyásával.
4. Az sem világos, hogy a kiértékelő táblázatban miért Tóth Gábor neve mellé kerülnek a Nagy Zoltán adatait tartalmazó munkafüzet elérhetőségei.
Javaslatom: Ha még nincsenek kőbe vésve az eddigiek, akkor át kellene gondolni a feladatot az elejétől. A teljes adat- és fájlszerkezettel. Elsőként azt mondd meg, hogy mit szeretnél megoldani? Aztán utána gondoljuk át az adatszerkezetet. Mondjuk a következők szerint:
1. Azzal kezdeném, hogy meg kellene próbálni az összes Excel fájlodat (a munkafüzeteidet) egyetlen munkafüzetbe összegyűjteni úgy, hogy a jelenlegi munkafüzeteid aktív lapjai egy-egy munkalapot képezzenek az új munkafüzetben. Ezek neve lehetne az érintett személy neve. Ezzel nem lenne szükség arra, hogy a kiértékelő táblázat nyitogassa meg őket.
Ez kézzel túl nagy munka, de ezen könnyű segíteni. Egy makró kell hozzá, ami a munkafüzeteket egyenként megnyitja, és az általad megadott munkalapok tartalmát összehozza egy munkafüzetbe. Ezt megírom neked, és egyszer lefuttatva elkészítheted vele a közös munkafüzetet.
2. Aztán, ha megmondod, hogyan képződnek az egyes Excel fájlok (munkafüzetek) akkor talán tudnék segíteni abban, hogy a későbbiek is a közös munkafüzetbe kerüljenek.
3. Az is kérdés persze, hogy szükséges-e egyáltalán külön munkalapon tárolni az egyes személyek adatait. Nem lenne megoldható, hogy eleve a kiértékelő táblázatba kerüljenek be az adatok?
köszönöm szépen a gyors segítséget, és elnézést az érthetetlen magyarázatért!
Megpróbálom mégegyszer:
Vannak beérkezö formalapok egy minta alapján:
Ezekböl az adatok átkerülnek egy kiértékelésbe:
A kiértékelésben a hiperhivatkozás szerepel, de mellé lehet írni szövegesen az elérési útvonalat is ha szükséges.
A célom az lenne, hogy az adatok hiperhivatkozás illetve az elérési út megadása után valamilyen szinten automatizálva kerüljenek át a kiértékelésbe. A rengeteg excel és a bennük lévö adatok miatt lenne erre szükség.
Az jutott még eszembe :-), hogy azt nagyon bonyi volna megoldani, hogy egy-egy adattábla csak a saját alakzatára klikkelve tűnjön el ? Tehát ha pl. kint van a négyzet táblázata, ne tűnjön el ha a rombuszra vagy másra klikkentünk, csak ha a négyzetre. Vagyis több táblázat is kint lehessen párhuzamosan.
Az Adatok táblázat jó volna ha nem a fő lapon lenne, hanem a Munka2 -n. Próbáltam átmásolni a Munka2 -be és a makróban átírni Munka2!Adatok -ra, de nem örült neki :-)
Szerintem ez sem lett érthetőbb. Kezdjük azzal, hogy mit nevezel a formalapok linkjének? Biztos vagyok benne, hogy nem linkre (azaz hiperhivatkozásra) gondolsz, mert azzal az Excel táblázatban nem lehetne mit kezdeni. Lehet, hogy munkafüzet nevére gondolsz az elérési úttal együtt (mert azzal lehet dolgozni)
Nem tudnál inkább egy mintát feltenni egy formalapról, és egy másikat a kiértékelési táblázatról? És egy picit pontosabban elmondani, hogy a kiértékelési táblázatod egyes celláiban mit szeretnél látni. azaz a kiértékelő munkafüzetben az N oszlop egyes soraiba mi kerül, és ezeket a forma munkalapokról mely cellák összegzésével szeretnéd előállítani.
Például így: /de még jobb, ha valahova (Google drive, vagy data.hu) felteszel egy-egye munkafüzetet mintának, és csak annak a linkjét küldöd el/
Ami persze rögtön felvet egy kérdést, nem lenne-e célszerűbb az 1. sorba írni a megnevezéseket, és alá az adatokat, így sok munkafüzet helyett (amit külön .xls-nek nevezel) egyetlen munkalapon kerülhetnének egymás alá a nevek, és talán könnyebben is lehetne dolgozni velük)
Ez így mostmár majdnem olyan, mint amit szeretnék :-)
Tudnád úgy módosítani, hogy ha a téglalapra ráklikkelek akkor jelenjenek meg a hozzá tartozó mezők, ha újra ráklikkelek akkor pedig tűnjenek el ? Ugyanígy ha a rombuszra klikkelek akkor az ahhoz tartozó mezők legyenek láthatók, a következő ráklikkelésig. Stb.
Nagyjából hasonlítana a Megjegyzés beszúrása funkcióra, csak itt nem akkor jelennének meg az adatok ha a mező fölé viszem az egeret hanem ha ráklikkelek az obketumra, és a következő klikkelésre tűnne el. A megjegyzésbe írt dolgokat nem lehet olyan rugalmasan módosítani és áttekinteni, ezért lennének az adatok a Munka2 -n.
Az Adatok táblázat jó volna ha nem a fő lapon lenne, hanem a Munka2 -n. Próbáltam átmásolni a Munka2 -be és a makróban átírni Munka2!Adatok -ra, de nem örült neki :-)
Várhatóan a "rajzom" nagyobb lesz mint egy képernyő, ezért a megjelenő adatoknak mindig annak a közelében kellene megjelenni, ahol klikkelek. Vagy tulajdonképpen fix helyen is megjelenhet, pl. a bal felső sarokban.
Kicifráztam. Kibővítettem az Adatok táblát úgy, hogy a megjelenő "fénykép" mérete igazodjon a benne lévő adatokhoz. A szorzókat írd át úgy, hogy a saját monitorodon jó kép jelenjen meg.
Tulajdonképpen azt szeretném megoldani, hogy az egyik lapon van egy rajz ami négyzetekből és az azokat összekötő vonalakból áll ( kb. 50 db vonal ), a másik lapon pedig táblázatos formában vannak a vonalakhoz tartozó adatok. A feladat az volna, hogy ha az egyik lapon ráklikkelek egy vonalra, az ahhoz tartozó adatokat jelenítse meg a másik lapról. A segítségeddel mostmár egy vonalra vonatkozóan megvan a megoldás, csak nem tudom a többit úgy célszerű-e megoldani, hogy annyiszor annyi makrót hozok létre és rendelgetek hozzá a vonalakhoz, vagy esetleg van egyszerűbb/hatékonyabb/gyorsabb megoldás is ?
A formalapok és a kiértékelés azok külön .xls -ek. A több tucat formalapból szeretném a szükséges adatokat kiszedni a kiértékelésbe, ahol most csak a formalapok linkjei vannak egymás alatt egy oszlopban. Azt szeretném, hogy ezek mellé a linkek mellé kerüljenek az előre meghatározott adatok a linkre mutató .xls-ből.
A következö excel táblázatot szeretném létrehozni:
"Formalapoknak a kiértékelése"
A formalapok mindíg úgyanúgy néznek ki, csak egyes cellák változnak. (PL A1:Név,B1:Nagy Zoltán vagy A2: Kor,B2:86, A3:Szemüveg szín, B3:fekete, A4:unokák száma B4:5)
A formalapok linkjét bemásoltam a kiértékelésre szolgáló táblázat N oszopába, és szeretném, hogy a többi információ, Név, kor, stb... ugyanabban a sorban legyen a link mellett.
Egyenlöség jellel próbáltam, hogy formalap adott cellájával egyenlö a kiértékelésen megfelö cella, és ami változna az a formalap elér´si útvonala lenne. A linkek mellett pedig szövegesen is lehetne a link, ha úgy könnyebb használni.
Remélem nem túl bonyolult, köszi szépen a segítséget, és bocsi, hogy csak úgy idetolakodtam!
Van egy html-ből wordben megnyitott fájlom, a szöv.szerk. felismeri a táblázatot, de az a gondom, hogy átviszi fattyúsorként bizonyos cellák sorait új oldalra és nekem valahogy meg kéne szakítani az egybefüggő táblát, hogy egy előbbi sornál tehessek pl. oldaltörést (natúr így most nem engedi).
Ha értitek a problémát és tudtok rá megoldást, légyszi...
Egy táblázatban ügyiratszámok szerepelnek (K-0032/2016). Sikeresen kiszedtem belőle a sorszámot (0032) egy másik cellába. Az adatra számként lenne szükségem (32), tehát az elöl lévő nullá(ka)t el kellene belőle távolítani. Van 0004, 0032, 0124, 1230 is (1-től párezerig).
Simán "keresés és csere"-módon ugyan eltávolíthatók, de ez kiszedi az összes nullát.
Összegezve, makró használata nélkül egy olyan képletet keresnék, amely a szövegben fix helyről kiszedett adatrészből egy másik cellába számot csinál.
Javítottam egy korábbi kódomon, mert privát érdeklődés jött (köszönöm Delila), gondoltam megosztom.
Az eredeti a 12402 hsz-ben volt (és a kontextus is arrafelé van), az új meg itt:
Sub kombi2() Dim Rng As Range, Hit As Range Dim ix As Long, Lvl As Long, Cnt As Long, iter As Long Dim LvlAct, LvlSel Dim BaseSum As Double, TestSum As Double Dim Dest As Double, small_ix As Double
Dest = Range("c3") Set Rng = Range("A3:A29") Cnt = Rng.Cells.Count ReDim LvlAct(1 To Cnt) ReDim LvlSel(1 To Cnt)
For ix = 1 To Cnt LvlAct(ix) = ix LvlSel(ix) = 0 Next
Lvl = 1 Do iter = iter + 1 Application.StatusBar = iter small_ix = Application.WorksheetFunction.Small(Rng, LvlAct(Lvl)) TestSum = BaseSum + small_ix If (Round(TestSum, 5) < Round(Dest, 5)) Then If LvlAct(Lvl) < Cnt Then LvlSel(Lvl) = small_ix BaseSum = BaseSum + LvlSel(Lvl) Lvl = Lvl + 1 LvlAct(Lvl) = LvlAct(Lvl - 1) + 1 ElseIf LvlAct(Lvl) = Cnt Then Lvl = Lvl - 1 BaseSum = BaseSum - LvlSel(Lvl) LvlAct(Lvl) = LvlAct(Lvl) + 1 LvlSel(Lvl) = 0 End If ElseIf (Round(TestSum, 5) > Round(Dest, 5)) Then Lvl = Lvl - 1 BaseSum = BaseSum - LvlSel(Lvl) LvlAct(Lvl) = LvlAct(Lvl) + 1 LvlSel(Lvl) = 0 ElseIf (Round(TestSum, 5) = Round(Dest, 5)) Then MsgBox "heuréka" 'Stop For ix = 1 To Cnt If LvlSel(ix) = 0 Then Exit For If PaintNextFinding(Base:=Rng, FindValue:=LvlSel(ix)) = False Then MsgBox "bibi van: nem találok egy számot, amit egyszer már megtaláltam..." Stop End If Next If PaintNextFinding(Base:=Rng, FindValue:=small_ix) = False Then MsgBox "bibi van" Stop End If Application.StatusBar = False Exit Sub End If If Int(iter / 500) = iter Then DoEvents Loop End Sub
Function PaintNextFinding(Base As Range, FindValue As Variant) As Boolean Dim Hit As Range, FirstAddress As String, CIndex As Long
With Base Set Hit = .Find(what:=FindValue, lookat:=xlWhole, LookIn:=xlValues) If Not Hit Is Nothing Then FirstAddress = Hit.Address Do If Hit.Interior.ColorIndex = xlNone Then Exit Do Set Hit = .FindNext(Hit) Loop While (Not Hit Is Nothing) And (Hit.Address <> FirstAddress) If (Hit Is Nothing) Then PaintNextFinding = False ElseIf (Hit.Address = FirstAddress) And (Hit.Interior.ColorIndex <> xlNone) Then PaintNextFinding = False Else PaintNextFinding = True Do CIndex = Int(Rnd() * 50) + 3 Loop While (CIndex = xlNone) Or (CIndex = 2) Hit.Interior.ColorIndex = CIndex End If Else PaintNextFinding = False End If End With End Function
Egészre kerekítve használom, mert a konkrét feladatnál nincs szükségem nagyobb pontosságra.
Amikor a táblázatot összeállítom, akkor a százalék értékét a szazalek = round(adat/osszeg*100,0) képlettel számítom ki, a százalékjelet meg simán mögébiggyesztem, és így írom ki táblázatosan.
A diagramnál pedig a következő képletet adom meg:
With ActiveChart.SeriesCollection(1)
.DataLabels.NumberFormat = "0%"
End With
És az önállóskodás ennél történik. És nem is lenne baj ez a kis csalás, csak nem szeretném, hogy a táblázatomban és a diagramon szereplő adatok egymástól eltérjenek. Azt viszont nem tudom megjósolni előre, hogy az Excel melyik adatot fogja a megszokottól eltérő módon kerekíteni. Főleg akkor nem, amikor két azonos adatot kétféleképp kerekít.
Most már nagyjából megvagyok vele. Lehet, hogy a százalékos értékeket kellett volna a kész diagramról visszaolvasni, és a táblázatba tenni, vagy pedig magamnak felírni a diagramra a feliratokat, ahogy korábban a segítségeddel a pontdiagramnál sikerült egy hasonló megoldást alkalmazni.
Még mindig a diagramoknál tartok. Most éppen az Excelre vagyok kiakadva. Kördiagramokat készítek, amelyeken a darabszámokból %-os értéket kérek feltüntetni. És mivel az eredményeket táblázatosan is meg akarom jeleníteni a diagram mellett, már egy órája azzal kell szórakoznom, hogy javítgatom a diagram százalékos adatait.
Az a mániája, hogy a kerekítések eredményeként nem lehet 99, vagy 101 a százalékok összege, hanem pontosan 100. Ezért inkább rosszul kerekít. Például két azonos darabszámnál, ahol az érték 17,57%, képes az egyiket lefelé kerekíteni 17-re, és csak a másikat írja 18%-nak. Amikor én kiszámoltam a táblázatban, akkor természetesen a szokásos kerekítési módszert alkalmaztam. Most javítgathatom át kézzel az adatokat az Excel adatpontjai mellett. Nagyon kellemetlen.
Nem hinném, de azért megkérdezem, hogy ugye nincs erre beállítási lehetőség?
A Fényképezőgép ikonnal könnyen létrehozható. A Gyorselérési eszköztárra kell kitenned az ikont. A Gyorselérési jobb oldalán lévő legördülővel behozod a Testreszabást. Ott a Választható parancsoknál a Minden parancsot választod, majd a megjelenő sok parancs közül a Fényképezőgép-et a Felvétel gomb segítségével átmásolod a jobb oldalra, OK.
A füzetben kijelölöd a tartományt, amit látni akarsz. Klikk az ikonra, a megjelenő szálkereszttel rajzolsz egy négyszöget. Ebben azonnal látod a kijelölt adataidat.
A csatolt minta alapján tegyél ki egy gombot, ami indítja a füzetben lévő makrót.
Egyik kattintásra megjelenik a négyszög, másikra eltűnik.
Segítséget szeretnék kérni. Azt szeretném megoldani valahogy, hogy ha az excel tábla egy adott elemére ( pl. egy vonal alakzatra ) klikkentek egérrel, akkor jelenjen meg egy másik munkalap adott részlete, pl. a C5 - G10 közötti része. Ne váltson át arra a másik munkalapra, hanem csak egy kis ablakban jelenítse meg, mintha pl. egy felugró help lenne.
Ha csak ennek a funkciónak a nevét vagy néhány támpontot leírtok valószínűleg az is elegendő lesz és onnan már tovább bogarászom, de egyelőre azt sem tudom mit keressek. Köszi.
A dátumot az Excel számként kezeli, ahol az alapegység 1 nap. A B3-ban lévő perceket ezét 60-nal kell osztani, hogy óra legyen belőle, majd 24-gyel, hogy nap.
Sziasztok! A következő problémával állok szemben: Az A oszlopban szerepelnek a modellek nevei, a B oszlopban a gyártási időtartam és a C oszlopban a befejezés ideje. A C oszlopba szeretnék egy képletet, ami nekem automatikusan számolná a befejezés időpontját. Például a C3-as mezőbe a C2-es mezőben szereplő időpont + a B3-as mező értékének az összege kerül. Ez így nem tűnik bonyolultnak, de azért nem sikerült megcsinálnom, mert az egyik formátum az dátum, a másik pedig sima szám(legyártás ideje percekben). Minden segitséget szivesen fogadok. Köszi!
Az szerintem sajnos kevés, mert csak cellaérték változásakor fut le ekkor is a függvény (sajnos a szín megváltozása nem váltja ki az újraszámolást).
"This example marks the user-defined function "My_Func" as volatile. The function will be recalculated when any cell in any workbook in the application window changes value."
Bocs, az előbb fordítva ültem a lóra, Neked más kell nyilván. Jól kezdtem a gondolkodást, aztán gyorsan el is "hajoltam".
Ha megváltoztatod az értékét az A1 cellának, akkor automatikusan változni fog az A2 cellába írt szám is - nálam legalább is így viselkedik a függvény.
A színváltozást tudtommal nem figyeli semmilyen eseménykezelő.
Ráadásul, ha feltételes formázás miatt változik a szín, akkor az Interior.Color értéke nem is változik. Az újabb (2010-től) verziókban van egy Displayformat tulajdonság, aminek az Interior.Color értéke adja meg, hogy a cella színe épp milyen.
Mitől változik az A1 cella értéke? Ha ahhoz kötöd az A2 cella színét, akkor szerintem feltételes formázást kellene használnod - pl. formázandó cellák kijelölése képlettel, képlet pedig =A1=valami utána kiválasztani a kitöltő színt. De lehet cella formázás érték alapján is, ahol min-max értéket is meg tudsz adni a formázásra.
A feltételes formázást pont erre az esetre találták ki.