Hirdetés
- gban: Ingyen kellene, de tegnapra
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- bb0t: Ikea PAX gardrób és a pokol logisztikája
- GoodSpeed: A RAM-válság és annak lehetséges hatásai
- GoodSpeed: Márkaváltás sok-sok év után
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- sziku69: Fűzzük össze a szavakat :)
- ldave: New Game Blitz - 2025
- Real Racing 3 - Freemium csoda
-
LOGOUT
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
Sziasztok!
Az excel képes TOTP hitelesítő kódot generálni? (ha igen hogy?
)
-
ntamas97
csendes tag
Köszönöm szépen, ügyesek vagytok!
Én úgy látszik szokásomnak megfelelően túlbonyolítottam, már xkeres függvénnyel is próbálkoztam
-
ntamas97
csendes tag
Sziasztok!
Vannak kis ceruza és mikró méretű akksijaim, ezeknek szeretnék elkezdeni Excelben feltöltési naplót vezetni. Az akksik római számokkal vannak sorszámozva (A oszlop) és mindig beírnám, hogy melyik nap volt töltve (B oszlop). Szeretném, ha az Excel kigyűjtené, hogy adott akksi hányszor lett feltöltve és mikor volt legutoljára töltve.
A hányszor lett feltöltve kérdést meg tudtam oldani darabtelivel, de az utolsó töltés dátumának kiíratásába beletört a bicskám.Valakinek lenne esetleg ötlete, hogyan lehet ezt megoldani?
-
lappy
őstag
Sziasztok
Ezt a fajta diagramot hogyan lehet létrehozni
Addig sikerült eljutni hogy vonal diagram és ehhez be kell állítani a hibásávokat talán
Csak azt nem tudom hogy ha van egy adatsorom ami a következő szerint épül fel
1 oszlop mintavétel mélysége
2 oszlop minden mintavételhez 3-3 hőmérséklet adat
3 oszlop minden mintavételhez 3-3 ph adat
-
UTIT
lelkes újonc
Szia!
Köszönöm az ötleted! Volt egy nem törhető HTML szóköz a számban, ami úgy nézett ki, mitha az ezres csoportosítás lett volna.
Ennek a karakternek a törlése megoldotta a problémát.
Érdekesség, hogy a "hagyományos" Exceles szövegből számmá alakításos módszerek nem működtek! -
UTIT
lelkes újonc
válasz
Fferi50
#54779
üzenetére
Szia!
Köszönöm az ötleteket! A probléma az volt, hogy tényleg szövegként voltak a számok a cellákban, mégpedig azért, mert volt benne egy olyan karakter, ami szóköznek látszott, de nem az volt, hanem egy nem törhető HTML szóköz. Ez amiatt kerülhetett bele, mert egy honlapról másolták az adatokat a cellákba.
Itt egy leírás róla:
https://excel-bazis.hu/tutorial/szovegbol-szam-szokoz-problema
Ennek a karakternek a törlése megoldotta a problémát.
Érdekesség, hogy a "hagyományos" Exceles szövegből számmá alakításos módszerek nem működtek!
Köszönöm mégegyszer az ötleteket! -
Fferi50
Topikgazda
Szia!
Ha csak egy cellát jelölsz ki, akkor mit ír ki összegnek?
Próbáld ki, F2 majd a szerkesztőlécen nézd meg, mit látsz. Ha ugyanezt látod - vagyis a két nullát és a tizedest vesszőt is - akkor szöveg van a cellában.
A cella számformátummá alakítása után kell még egy F2 és egy Enter. Így szokott "helyrejönni" a szám, nem elég a cellaformátum változtatása.
Számmá alakíthatod még az Adatok - Szövegből oszlopok varázslóval is.
Üdv. -
UTIT
lelkes újonc
Sziasztok!
Egy érdekes dologgal találkoztam, aminek a megoldásában elakadtam.
Van egy oszlopom, amiben a cellák értékei számként vannak definiálva. Ha kijelölök több cellát, akkor nem adja össze a benne lévő számokat, csak az egyiket, ami valamiért számként viselkedik, a többi meg mintha szöveg lenne.
Itt látszik, hogy a 4 cellából csak egynek az értékét adja "össze".
A szokásos szövegből számmá alakításokat megcsináltam, mint az "Atat/Szövegből oszlopok", vagy az "1-el szorzást". Sajnos a helyzet nem változott.
A cellaformázás számként definiálja őket, de mégesem azok.

Van valakinek esetleg ötlete, hogy mit csinálhatok még? Mi okozhatja a gondot?
Microsoft Windows 11 magyar+Microsoft Office Professional Plus magyar
Köszi az ötleteket és a segítésegt! -
Mutt
senior tag
válasz
lanszelot
#54773
üzenetére
Szia,
A mutatott képeken a hónap kezdő és végnapjai nem egyeznek meg az első oszlopban látható dátumok hónapjával.
Ha kell akkor a hónap kezdőnapját az EOMONTH(<dátumoszlop>;-1)+1 képlettel, míg a hónapvégét az EOMONTH(<dátumoszlop>;0) képlettel tudod meghatározni.üdv
-
lanszelot
addikt
Nagyon szépen köszönöm a segítséget.
Nekem nem jó ha külön vannak az adatok, mert azt is látni szeretném egyben.
Amit nem akarok látni, azt pedig majd elrejtem a végen.A megoldásod jó lenne, ha nem ilyen össze vissza lenne az adat.
Pont amiatt kellett 3 havi összegzésbe tennem , mert a havi nagy katyvasz.
Jelenleg így néz ki [kép]Nem sikerül szét szedni a pozitív / negatív számokat. Szét tudom, de csak sufni tuning módon, de még szenvednék hátha sikerül táblázat szerint.
-
-
Mutt
senior tag
válasz
lanszelot
#54766
üzenetére
Szia,
Sok minden történt, de szerintem külön kellene választani az adatsort és a kimutatást (végeredmény) számolást, mivel a mostani megoldásban minden hónapban a SZUMHA függvény annyiszor fogja kiszámolni a havi egyenleget ahány adatod van az adott hónapra. Jobb lenne ha lenne egy hely ahol 1x látnád csak a hónapot és az egyenleged.
Javaslatom, hogy a munkafüzetben legyen egy másik lap, ahol:
1) Első oszlopban elkezded felsorolni a minden hónap első napját.
2) Utána a Formázás -> Szám -> Egyéni számformátum alatt be tudod állítani, hogy ebből év hónap ezzel a kóddal: yyyy. mmm
3) A B-oszlopba pedig jöhet a SZUMHATÖBB képlet, pl:
=SZUMHA(Leolvasasok!B:B;Leolvasasok!A:A;">="&A2;Leolvasasok!A:A;"<"&A3)Itt annyi hogy a képletben a nagyobb egyenlőnél az azonos sorban lévő dátum cellára hivatkozzál (nálam A2), de a kisebbnél már a következő sorban lévőre (A3).
-
lanszelot
addikt
-
lanszelot
addikt
válasz
Fferi50
#54763
üzenetére
Köszönöm szépen.
Igen, úgy működik.Próbáltam táblázathoz illően megcsinalni, de nem megy.
Nem nagyon értem a keplet működését, így nem látom hol a hiba: [kép]Későb szeretném azt a két oszlopot elrejteni, és egy új oszlopot létre hozni, ami April 2020 ként tartalmazza majd a hónapot, hogy könnyen áttekinthető legyen.
És az úgy már táblazatnak felelne meg. -
Fferi50
Topikgazda
válasz
lanszelot
#54757
üzenetére
Szia!
"egy példát pl 2020 április elejetól végéig G (money per month) és H (kWh per month) oszlopban mi lenne a képlet?"
Ezt a képletet próbáld ki (az A-C oszlopokból kiindulva), mondjuk az E2 cellába:=SUMIFS(B:B ; A:A; ">=01.04.2020";A:A; ">=30.04.2020")
F2 cellába pedig:
=SUMIFS(C:C ; A:A; ">=01.04.2020";A:A; ">=30.04.2020")
Így nem kell semmilyen plusz információ hozzá.
Ezért indultam ki az eredeti adatokból.
Üdv. -
lanszelot
addikt
válasz
Fferi50
#54756
üzenetére
Köszönöm szépen a választ.
Tudnál írni egy példát pl 2020 április elejetól végéig G (money per month) és H (kWh per month) oszlopban mi lenne a képlet?
F7 cellában van amit beírtam, és fent (szerkesztő sor? nem tudom hogy hívják) lehet látni mire írta át. F7 ben az jelenik meg amit írtam, de nem az a cella tartalma.
-
Fferi50
Topikgazda
válasz
lanszelot
#54754
üzenetére
Szia!
Ha nincs hó eleji és hó végi adatod - miért is lenne - akkor viszont a SUMIFS függvény kell. Egyik feltétel dátum >=hó eleje, másik feltétel dátum <=hó vége. Ezt két külön feltételként kell megadni, ezért SUMIFS
Ha ki tudod írni az év - hónapot külön, akkor elég a SUMIF.
Mit írtál az F oszlopba, amit átírt?
Üdv. -
Fferi50
Topikgazda
válasz
Dragon27
#54753
üzenetére
Szia!
A feltételes formázás érvényességi tartományára állítsd be az egész $A$7:$K$98 tartományt egyben.
A képletben pedig legyen =$G7="Nyert".
A formázás beállításakor pedig jelöld ki a teljes tartományt (akkor az első mondatban írtak nem is kellenek)...
Tehát én törölném a mostani feltételes formázást, utána kijelölném a teljes tartományt a 7 sortól. Beírnám a képletet és megadnám a formázást mindkét feltételre külön-külön.
Üdv. -
lanszelot
addikt
válasz
Fferi50
#54752
üzenetére
Köszönöm szépen a segítséget.
Már ott maradok a cicomázottnál, mert bevittem 2 oszlopnyi adatot, és nincs kedvem újra neki esni

Értem a függvényt, azt is, hogy nekem a SUMIF kell, de nem tudom hogyan kivitelezzem, mert nekem hó elsejétől, hó végéig kellene a számolás.
De nincs hó eleje-vége adat. Random adat van. Nem értem hogy tudnám hó elejetől végéig számoltatni az össe vissza adatokból.F oszlopban megpróbaltam bevinni az év hónapot, ahogy javasoltad, de át írja.
Ha pedig kiírom a hónap nevét nem számol vele, vagy az az oszlop nem számoláshoz kell? -
Fferi50
Topikgazda
válasz
lanszelot
#54750
üzenetére
Szia!
Ami ezen a képen van, az szerintem jó kiindulási alapnak. A másik az nekem nem szimpi.
A SUMIFS képletet egy másik munkalapon - illetve a munkalap másik részén lehet használni.
Ehhez kellene még egy oszlop, ahol az év/hó szerepel a dátumból. Ezután ezt az oszlopot átmásolni arra helyre, ahová az összesítő értékeket szeretnéd - Erre jó az EGYEDI (UNIQUE) függvény. Ezután lehet a SUMIFS vagy lehet elég a SUMIF függvényt használni a hónapok összesítésére mindkét kívánt értékre.
Így érintettem a másik hsz-t is.
MS Office-ben (Excel) egy kimutatás megoldja a problémádat.
Üdv. -
Fferi50
Topikgazda
válasz
lanszelot
#54745
üzenetére
Szia!
Szerintem először egy kis rendet kellene csinálni, pl. Dátum mindig ugyanabban az oszlopban, nem kell sorrendben lenni. A pénzmozgás is egy oszlopba legyen rendezve.
Fogyasztás - leolvasás külön oszlopban.
SZUMHATÖBB függvénnyel számolhatsz fogyasztást és pénzmozgást havi szintre.
Készíthetsz kimutatást is, lehet én azzal kezdeném. Makró nem kell ehhez sem.
Ha mintát teszel fel, akkor még többet tudnánk segíteni.
Hasonló függvények (SUMIFS) a GoogleSheet-ben is vannak. Kimutatásra nem emlékszem.
Üdv. -
lanszelot
addikt
Hello,
Van egy táblázatom Google Sheet -ben (át tudom rakni MS Office -ba).
A táblázatban az áram leolvasásom, pénz mozgás, fogyasztásom és dátum van
Dátum mindenhol van.
Penz mozgás mindenhol van.
Fogyasztás, és leolvasás nem mindenhol van (befizetéseknél pl nincs)
Minden adat random, azaz nem követ semmilyen sémát.
Épp amiko leolvastam, vagy befizettem/leemelték...stb
Viszont amit szeretnék havi lebontásban a Fogyasztás,
és havi lebontásban a Pénz mozgás.
Majd ebből a kettőből kiszámolni a havi díjat.Lehetséges ez?
Hogyan?
Nagyon kezdő vagyok.
Ha csak makroval oldható meg az is érdekel. -
batai15
félisten
Sziasztok, ha kell privátba tudok küldeni képet mit szeretnék ,de ide nem akarom be tenni.
Segítséget szeretnék kérni.
Adott egy táblázatom amiben szenzorok vannak ( tűzjelző központ ) Kikapcsolási engedélyek miatt.
Úgy néznek ki az egyes sorok hogy : állapot (ki kapcsolva, értesítve vagy vissza kapcsolva) lejárati dátum , tervezett kezdés , épület /cég / oszlop szám / id / utána pedig minden cellában egy egy külön érzékelő.
Az érzékelők úgy annak képletezve hogyha duplikáció van akkor pirossal színezze be a cellát.
És itt a gond. Nem kizárólag azok az engedélyek vannak bent a táblázatban ami ki van kapcsolva,hanem amik nincsenek is .
Mivel szokott lenni duplikáció össze kell nézni az engedélyeket nehogy vissza legyen olyan kapcsolva amire más is kért kapcsolást.
Kérdésem lenne , meg lehet e úgy oldani hogy az állapot sorban (választó menüre csináltam) amikor nincs kapcsolt állapotba az adott engedély akkor ne emelje ki a duplikáció ,csak akkor ha az engedély ki kapcsolt állapotba van téve.
Lehet bonyolult de eléggé bele tört a bicskám ,nem találtam rá megoldást. Feltételes formázás vonalon próbáltam, de vagy nem működik vagy hibát dob rá.
Előre is köszönöm. -
Fferi50
Topikgazda
válasz
Dragon27
#54741
üzenetére
Szia!
Az Excel frissebb verzióiban már DARABHA függvényre "magyarították" a korábbi DARABTELI elnevezést, ezért van a #NÉV? hiba.
E2 cellára megpróbálhatod:= DARABHA($G$7:$G$98;"Nyert")/DARAB2($G$7:$G$98)*100
(a nyert bejegyzések darabszámát viszonyítja az összes bejegyzés darabszámához a tartományban).
Úgy látom, a B4 cellád helyesen tartalmazza a profit összegét.
Így az E3 cella képlete lehetne:=$B$4/SZUM($E$7:$E$98)*100
A képleteknél fontos a $ jel, mert ezzel rögzítjük a tartományt.
Üdv. -
Dragon27
senior tag
Sziasztok,
excel 2024 Magyar
Mivel nem igazán szoktam használni az Excel-t így a tudásom szinte 0
Próbáltam a gemini-t de a képletek nem igazán működtek.... A képen csak egy vázlat és lehet hogy külön munkalapon jobb lenne.....
Pl. A Gemini szerint így jó =HA(DARABTELI(G7:G98;"<>")=0;0;DARABTELI(G7:G98;"Nyert")/DARABTELI(G7:G98;"<>")) de #NÉV? kaptam
Tudna valaki abban segíteni hogy pl. E2 .... cellákban mi lenne a helyes képlet vagy hogy nézne ki a E3 .....
-
Mutt
senior tag
Szia,
Kösz a pontosítást. Félreértelmeztem a dolgot, a makró ez esetben egyszerűbb mivel az első oszlopban van egy azonosító rész (a pont előtti), ami alapján egybe kell tenni az adatokat.
A run-time error-t azért kapod, mert a makró úgy működik hogy előbb kijelölöd egérrel azt a részt ahol a bemeneti adatok vannak és utána indítod el.
A
Set adatsor = Intersect(Selection, ActiveSheet.UsedRange)részben a Selection jelenti az általad kijelölt tartományt, az Activesheet... pedig az összes tartományt jelenti ahol van adat. Ha fix helyen van a bementi adatod (pl. B1-es cellától indulva lefelé),
akkorSet adatsor = Range("B1").CurrentRegionműkődik.Option ExplicitSub Transzponalas()Dim adatsor As RangeDim adatok()'tegyük a kijelölt bemeneti adatokat egy tömbbeSet adatsor = Intersect(Selection, ActiveSheet.UsedRange)adatok = adatsor'kérdezzük meg hova kerüljön az eredményDim cel As RangeSet cel = Application.InputBox(Prompt:="Add meg hova kerüljön az eredmény!", Title:="Információ", Type:=8).Range("A1")'nézzük meg nem írjuk-e felül a bemeneti tartománytIf Not Intersect(adatsor, cel) Is Nothing ThenCall MsgBox(Prompt:="A cél terület beleér a bemenő adatokat tartalmazó tartományba", Buttons:=vbOKOnly, Title:="Hiba")Exit SubEnd If'ebbe a tömbbe fogjuk gyűjteni az eredménytDim kimenet()ReDim kimenet(1 To 2)Dim x As LongDim azonosito As String, fsplitDim v_sor As Longv_sor = 0With cel.ParentFor x = 1 To UBound(adatok, 1)'a legelőször látott értékeket eltároljukIf x = 1 Thenkimenet(1) = adatok(x, 1)kimenet(2) = adatok(x, 2)'szakasz azonosító meghatározása referenciáhozfsplit = Split(kimenet(1), ".")azonosito = fsplit(0)Else'aktuális sorban keressük meg a szakasz azonosítótfsplit = Split(adatok(x, 1), ".")'ha azonos mint az előző, akkor'1) hozzáadjuk a kimeneti tömbhöz az értékeketIf fsplit(0) = azonosito ThenReDim Preserve kimenet(1 To UBound(kimenet) + 2)kimenet(UBound(kimenet) - 1) = adatok(x, 1)kimenet(UBound(kimenet) - 0) = adatok(x, 2)Else'ha nem azonos a szakasz azonosító, akkor'1) kiírjuk a "kimenet"-et'2) növeljük a sorszámot ahova az eredményeket tesszük'3) töröljük a "kimenet" tartalmát'4) elmentjük az új szakasz azonosítótcel.Offset(v_sor).Resize(, UBound(kimenet)) = kimenetv_sor = v_sor + 1ReDim kimenet(1 To 2)kimenet(1) = adatok(x, 1)kimenet(2) = adatok(x, 2)azonosito = fsplit(0)End IfEnd IfNext x'ha a ciklus végén maradt vmi a tömbben írjuk kiIf kimenet(1) <> "" Thencel.Offset(v_sor).Resize(, UBound(kimenet)) = kimenetEnd IfEnd WithEnd SubMS365-ben vannak újabb függvények, amelyek tudnak segíteni.
A képlet:=LET(adatok;A1:B20;kodok;OSZLOPVÁLASZTÁS(adatok;1);azonositok;EGYEDI(SZÖVEGELŐTTE(kodok;"."));csoportok;REDUCE("";azonositok;LAMBDA(a;c;FÜGG.HALMOZÁS(a;SZÖVEGFELOSZTÁS(SZÖVEGÖSSZEFŰZÉS("|";IGAZ;SZŰRŐ(adatok;SZÖVEGELŐTTE(kodok;".")=c));"|"))));HAHIBA(ELTÁVOLÍT(csoportok;1);""))
Hogyan működik?
1) LET-el változókat lehet a képletben létrehozni és azokkal műveleteket végezni. Az első paraméter a változó neve és utána egy művelet, pl. "adatok" a változó neve és utána a "A1 : B20" a tartomány ahonnan kellenek az adatok. A LET-ben az utolsó paraméter egy művelet, aminek az eredményét kiírja az Excel.
2) Szóval bemeneti adatok első oszlopából csináltam egy listát, amely a pont előtti részeket visszaadja minden sorra ("F1-01", ... "F1-02"), és ebből csak az egyedi értékeket tartottam meg (ez kerül be az "azonositok" változóba).
3) Ezek után a SZŰRŐ függvénnyel az eredeti adatsorból kinyerem az egyik azonosítóhoz tartozó értékeket. Az eredményt egy sorba kell tenni, itt jön az a trükk hogy előbb összefűzzük az elemeket egy cellába olyan elválasztó jellel, ami nincs az adatsorban, majd ezt ugyanezen elválasztó jel szerint feldaraboljuk. Belül van a SZÖVEGÖSSZEFŰZÉS ahol a "|" (pipe) jelet használtam elválasztónak, és kívül van a SZÖVEGFELOSZTÁS szintén pipe-al.
4) A REDUCE függvény segít abban hogy a 3-as lépésben lévő szűrést mindegyik azonosítóval megcsináljam. Mindegyik szűrés eredményét egymásra teszem (függőleges halmozás).
5) Csinosítani kell a végeredményt, mert nem minden sorban lesz ugyanannyi oszlop.üdv
-
Sesy
aktív tag
szia,
bemásoltam a kódot egy modulba, hogy kipróbáljam.
a 8. sorban "adatok = adatsor" Run-time error '13': Type mismatch hibával megállt...
lehet én csináltam valamit rosszul, majd reggel újra próbálkozom
"hogy a második oszlopban ha egy nagyobb számot látunk mint az előző sorban"
ezt nem értem, de lehet, hogy nagyon késő van már...a második oszlopban értékek vannak, amik a az első oszlopban lévő kódokhoz tartoznak.
az első oszlopban van egy szakasznak a jele (F1-01.1) a másodikban pedig a szakasz hossza (4 (méter) )a kód a következő F1 csoportban lévő 01-es sokszög 1 oldala a hozzátartozó érték pedig 4 (méter) és így tovább...
office365 van a benne lévő excel elvileg mindent (is) tud
csak érteni kellene hozzá... -
Mutt
senior tag
Szia,
Késő este ezt hoztam össze neked.
Option ExplicitSub Transzponalas()Dim adatsor As RangeDim adatok()'tegyük a kijelölt bemeneti adatokat egy tömbbeSet adatsor = Intersect(Selection, ActiveSheet.UsedRange)adatok = adatsor'kérdezzük meg hova kerüljön az eredményDim cel As RangeSet cel = Application.InputBox(Prompt:="Add meg hova kerüljön az eredmény!", Title:="Információ", Type:=8).Range("A1")'nézzük meg nem írjuk-e felül a bemeneti tartománytIf Not Intersect(adatsor, cel) Is Nothing ThenCall MsgBox(Prompt:="A cél terület beleér a bemenő adatokat tartalmazó tartományba", Buttons:=vbOKOnly, Title:="Hiba")Exit SubEnd If'ebbe a tömbbe fogjuk gyűjteni az eredménytDim kimenet()ReDim kimenet(1 To 2)Dim x As LongDim utolso_ertek As DoubleDim temp1, temp2Dim v_sor As Longv_sor = 0With cel.ParentFor x = 1 To UBound(adatok, 1)'a legelőször látott értékeket eltároljukIf x = 1 Thenkimenet(1) = adatok(x, 1)utolso_ertek = adatok(x, 2)kimenet(2) = utolso_ertekElse'adjuk hozzá a további értékeket, ehhez terjesszük ki a tömbbötReDim Preserve kimenet(1 To UBound(kimenet) + 2)kimenet(UBound(kimenet) - 1) = adatok(x, 1)kimenet(UBound(kimenet) - 0) = adatok(x, 2)'ha a korábban tároltnál nagyobb értéket látunk, akkor tegyük az alábbiakat'1) levágjuk a "kimenet" utolsó 2 elemét és eltároljuk őket'2) kiírjuk a "kimenet"-et'3) növeljük a sorszámot ahova az eredményeket tesszük'4) töröljük a "kimenet" tartalmát és beletesszük az 1-es lépésben tárolt értékeketIf adatok(x, 2) > utolso_ertek Thentemp1 = kimenet(UBound(kimenet) - 1)temp2 = kimenet(UBound(kimenet) - 0)ReDim Preserve kimenet(1 To UBound(kimenet) - 2)cel.Offset(v_sor).Resize(, UBound(kimenet)) = kimenetv_sor = v_sor + 1ReDim kimenet(1 To 2)kimenet(1) = temp1kimenet(2) = temp2utolso_ertek = temp2Elseutolso_ertek = adatok(x, 2)End IfEnd IfNext x'ha a ciklus végén maradt vmi a tömbben írjuk kiIf kimenet(1) <> "" Thencel.Offset(v_sor).Resize(, UBound(kimenet)) = kimenetEnd IfEnd WithEnd SubAdtam hozzá megjegyzéseket.
Amit én gondoltam végig, hogy a második oszlopban ha egy nagyobb számot látunk mint az előző sorban, akkor az előző sorig látott dolgokat ki kell írni és egy új sorba kell tenni majd az adatokat amíg megint találunk egy nagyobb számot mint az előző sorban.A kód egy tömbbe elkezdi gyűjteni az adatokat és ha jön a feltétel, akkor a tömb utolsó két elemét kivéve kiírjuk az addigi tartalmat. A tömböt nullázuk az aktuális sorban levő értékeket újra beletesszük és megyünk tovább. Közben mindig elmentjük egy változóba a második oszlop értékét.
A kódban ami haladó VBA dolog:
1) tömbök menetközbeni átméretezése (ReDim)
2) tömbök tartalmának munkalapra kiírása (cel.Offset(v_sor).Resize(, UBound(kimenet)) = kimenet)Szerintem makró nélkül is megoldható a feladat. Power Query vagy az újabb Excel függvényekkel (LET és FÜGG.HALMOZÁS). Próbáljuk meg azt is?
üdv
-
Sesy
aktív tag
Sziasztok,
Most ismerkedem a vba programozással, így hát vannak hiányosságaim...A következőt szeretném megoldani:
Van egy bejövő adatsorom, ami két oszlopból áll, egy kódból és egy hozzá tartozó értékből.
Ezeket kellene átrendezni az ábrán látottak szerint. A bejövő adatok teljesen dinamikusan változnak, de sorban vannak minden esetben.
Én azon az úton indultam el, hogy ha a kód utolsó értéke eléri a maximumot (ez dinamikusan változhat 1-20-ig) és 1-re vált akkor új sorba kell kezdeni az adatok másolását.
Az adatok ebben a formában jönnek ki egy programból és a szerkesztett formában kellene vissza töltenem egy másik táblázatba. Jó lenne nem kézzel másolgatni, mert előfordulhat több 100 sornyi bejövő adat, amibe bele lehet hibázni.Odáig eljutottam, hogy az adatokat beolvassam a megfelelő helyre és a kimenő adatokat vissza illesszem a másik táblázatba egy-egy makró segítségével. Az átalakítással is próbálkoztam, de kevés vagyok hozzá sajnos.
Hálás lennék, ha valaki segítene megoldani a problémát.
Köszönöm:
g.
-
Mutt
senior tag
válasz
Lasersailing
#54730
üzenetére
Két megoldás:
1) Sheets(sob).Cells(3, sob_om).Comment.Text Sheets(sob).Cells(3, sob_om).Comment.Text & vbNewLine & "új megjegyzés"2) Sheets(sob).Cells(3, sob_om).Comment.Text vbNewLine & "új megjegyzés", Len(Sheets(sob).Cells(3, sob_om).Comment.Text)+1
-
Fferi50
Topikgazda
válasz
Lasersailing
#54730
üzenetére
Szia!
Pl.:ktext=Range("A1").Comment.TextRange("A1").Comment.Text Text:=chr(10) & "Új comment", Start:=len(ktext)+1, Overwrite:=False
A := kombinációval a paramétereknek tudunk értéket adni.
Üdv. -
Fferi50
Topikgazda
válasz
Lasersailing
#54728
üzenetére
Szia!
A"Sheets(sob).Cells(3, sob_om).Comment.Text"sorba nem kell egyenlőségjel, szóköz után írhatod a szöveget, amit bele szeretnél tenni, mert az paraméter.
Comment.Text method (Excel) | Microsoft Learn
Üdv. -
Lasersailing
senior tag
Sziasztok,
excel VBA-ban szeretnék comment mezőbe írni adatot, az alábbi sorok segítségével:
If Sheets(sob).Cells(3, sob_om) = Sheets(amopo).Cells(amopo_sm, 4) ThenSheets(sob).Cells(3, sob_om).Comment.Visible = TrueSheets(sob).Cells(3, sob_om).ClearCommentsSheets(sob).Cells(3, sob_om).AddCommentSheets(sob).Cells(3, sob_om).Comment.Text = "Due date: " & Sheets(amopo).Cells(amopo_sm, 7).Value & Chr(10) & "Open item: " & Sheets(amopo).Cells(amopo_sm, 10).ValueEnd IfMagyarán ha az SOB sheet megfelelő cellája megegyezik az AMOPO sheet megfelelő cellájával írja be commentbe a második sheet két cellájának értékét.
A commentet hozzáadja üresen, de amikor a comment értékét szeretném feltölteni hibaüzenetet ad:
"run time error 438, object doesnot support this property or method"
Mit rontok el? -
föccer
nagyúr
PQ és PowerBI is elérhető, de egyiket sem használom igazán. Tudom kellene, de bele ragadtam az excelbe, lehet túlontúl otthonos már nekem. Azóta tudom, könnyűszerrel megtalálhattam volna a választ, ha elmém korlátoltabb, vagy ha képes kiszabadulni a tökéletesség bűvköréből.
-
Mutt
senior tag
válasz
underdark
#54723
üzenetére
Szia,
Kicsit haladóba ment át a válaszom, ha vmi nem világos/pontosítást igényel akkor kérdezz nyugodtan. Akár küldj mintát és belerakjuk a képleteket és onnantól menni fog.
Kell hozzá egy "adatbázis", amely tartalmazza hetente az adatokat.
Vhogy így (a mintát AI generálta!):
Fontos, hogy az adatok egymás alatt legyenek. Csábitónak tűnik, hogy egy sorban van egy zeneszám és a heti lejátszásokat mellé oszlopokba írjuk (pl. E-ben a 40 heti, F-ben a 41 heti és így tovább), de ez a feldolgozást nehezíti meg. Szóval sorokban legyenek az adatok.
Amit lehet ezen még javítani azt adatbázis normalizációnak hívnak. Ebben a példában egy elütési hiba (pl. "Greenday", "Green day", "Green Day" vagy akár "green day") már gondot okozhat. Ezt normalizációval érdemes orvosolni, de most hagyjuk figyelmen kívül.
Ezek után kimutatással lehet eredményt mutatni.

Itt a trükk, hogy nem egyszerű pivot, hanem power pivot-ot használtam, mert van két számításom. Az egyik a legutolsó héthez tartozó lejátszásokat adja meg, a másik pedig az egy héttel korábbiakat.
Ezeket Power Pivot menüben a Measures opció alatt lehet létrehozni:

A képletek (a Power Pivotban csak angol nyelven használhatóak a képletek):=var utolso=CALCULATE(MAX(Range[Hét]);ALL(Range))return CALCULATE(SUM(Range[Hányszor játszották?]);Range[Hét]=utolso)illetve
=var elozo=CALCULATE(MAX(Range[Hét]);ALL(Range))-1return CALCULATE(SUM(Range[Hányszor játszották?]);Range[Hét]=elozo)Ezeket a számokat ha behúzzuk a kimutatásba, akkor megkapjuk hogy melyik számot az utolsó hetekben hányszor játszották.
A rangsort a kimutatásban lehet beállítani. Az "aktuálishét" mezőjénél a második fülön lehet számításokat végezni, itt a rangsort választottam. Ugyanezt a másik héttel megtéve megkapjuk az akkori helyezést. (Angol Excelben vagyok, de hasonló helyen van magyarban is.)
Végül pedig a két rangsort kell összehasonlítani, hol volt előrelépés vagy visszaesést vagy nem volt mozgás. Ehhez a "Mozgás" oszlopban ezt a képletet használtam:=IFS(AND(H4<>"";I4<>"";H4>I4);1;AND(H4<>"";I4<>"";H4<I4);-1;AND(H4<>"";I4<>"";H4=I4);0;1;"")
Végül pedig egy feltételes formázást tettem erre az oszlopra.üdv
-
-
underdark
aktív tag
Sziasztok
Egy saját zenei toplistán dolgozok, egy top 100 zenekar hallgatottság szerint
Szóval igazából az nincs meg a fejemben, hogy tudnám úgy megcsinálni, hogy amikor frissítem magamnak időnként és van változás, akkor azt egy nyíllal mutassa vagy valami hasonló pl ha a 10. feljebb lép
Itt akadok el igazából, hogy nem tudom ezeket a különböző tabellákat pl labdarúgás, zenei chartlistenek hogy készítik a háttérben
Én olyanra gondolok, hogy elsőnek kell egy kiinduló lista, majd egy frissített lista, és minden egyes frissítésnél az előző lesz a alap lista amihez viszonyítom
csak ez így elég fszságnak tűnik, csak van más megoldás is
Köszi!
-
Mutt
senior tag
válasz
-szabi-
#54721
üzenetére
Szia,
Excel verziótól függően ezekkel lehet próbálkozni:
1) Ha a szöveg végén van a pénznem, akkor egyszerűen levágjuk az utolsó pár karaktert (pl. 3-at)=--BAL(A1;HOSSZ(A1)-3)
2) Ha MS365-ön vagy, akkor van reguláris kifejezés is:=--REGEXKIVONÁS(A1;"[0-9]*[ 0-9]*")
3) Ha Office2021 vagy újabbad van, akkor van SORSZÁMLISTA, REDUCE és LET is. Itt két megoldás amik hasonlóan működnek (a szöveg.keresen belül fel vannak sorolva, hogy mely karaktereket tartsuk meg):=--REDUCE("";KÖZÉP(A1;SORSZÁMLISTA(HOSSZ(A1));1);LAMBDA(a;c;a&HA(SZÁM(SZÖVEG.KERES(c;"0123456789,"));c;"")))=LET(karakter;KÖZÉP(A1;SORSZÁMLISTA(HOSSZ(A1));1);--SZÖVEGÖSSZEFŰZÉS("";IGAZ;HA(SZÁM(SZÖVEG.KERES(karakter;"0123456789,"));karakter;"")))4) Excel 2013-tól van villámkitöltés (Kezdőlap - Szerkesztés - Kitöltés - Villámkitöltés) ami ha egymás alatt vannak az értékek, akkor a mellette lévő oszlopban pár példát megadva kitölti a többit.
5) Power Query is járható.
6) Végső megoldás pedig egy UDF (VBA Macro) ha a fentiek nem tetszenek. Ekkor a 2 vagy 3-as opcióban leírtakat valósítjuk meg VBA-ban.
üdv
-
-szabi-
addikt
Weboldalról kimásolt számokat szövegként tárolja a cellákban szóközökkel és pénznemmel.
Mi a legegyszerűbb módja, hogy számmá vagyis pénznemmé alakítsam? -
Mutt
senior tag
válasz
föccer
#54710
üzenetére
Szia,
1) XLSB formátummal elég nagy méret csökkenést lehet elérni. Pl. egy 75 MB xlsx fájl (40 oszlop és 500.000 sor, 75 millió karakter) nekem 22 MB-os lett. Egy hátránya van, ha sérül a fájl (közös megosztásnál ez esélyes lesz), akkor bukta lehet (backup sűrűn),
2) Ketté választanám a feladatokat:
- külön lenne egy fájl (javasolt hogy inkább egy CSV/TXT fájl legyen) ami tartalmazza a logokat (a fenti példa xlsx CSV-ként mentve 72 MB-os lett).
- egy másik ami a riportokat tartalmazza. Power Query-vel be lehet frissíteni és azt mutatni ami kell. Ha csak adatmodellben tárolod az adatokat, akkor ez az Excel nem lesz olyan nagy. A 72 MB-os CSV adatamodellbe téve és egy egyszerű pivottal 19MB-os xlsx fájlt adott. Be lehet állítani, hogy minden megnyitáskor frissüljön a háttérben, így a friss adatok is be fognak kerülni. A CSV/TXT fájlt gyorsabban feldolgozza a PQ mint egy akár kisebb XLSX fájlt!3) El kell engedni az Excel-t adatok tárolására. Kell egy adatbáziskezelő (pl. a MYSQL/MARIADB egy könnyen kezelhető, ingyenes megoldás) az adatokhoz. Ha a a friss logokat nem lehet egyből az adatbázisba rakni, akkor Python-al lehet automatizálni a folyamatot.
Ezek után a vizualizáció: ha kell akkor maradhat az Excel és PQ-val lehet az adatokat lekérdezni. A PQ gyorsabb lesz ez esetben mint a TXT fájlnál.
Ha az Excel-t lehet cserélni, akkor Power BI.
Itt már lesz/lehet "Query folding" ami nagyságrendekkel tudja meggyorsítani a lekérdezést és teljesen interaktívvá lehet tenni az adatokat.üdv
-
Fferi50
Topikgazda
Szia!
Borzasztóan egyszerű??? az oka:
A Thisworkbook mindig azt a munkafüzetet jelenti, amiből a makró elindult. Ha a Personalból indítod az ikonnal, akkor azt. Ha a munkalapra/munkafüzetbe másolod és onnan indítod, akkor pedig az a munkafüzet.
Így aztán - mivel a Personal aktív munkalapján nyilvánvalóan nincsenek adatok, ezért nem is talál semmit.
Megoldás szerintem, hogy a Thisworkbook helyett ActiveWorkbook legyen a hivatkozás.
Üdv. -
lappy
őstag
válasz
Fferi50
#54716
üzenetére
Public Sub OszlopbaTördelésOszloponként()
Dim ws As Worksheet
Dim lastRow As Long
Dim chunkSize As Long
Dim skipCount As Long
Dim i As Long
Dim targetStartRow As Long
Dim pasteRow As Long
Dim pasteCol As Long
Dim dataRow As LongSet ws = ThisWorkbook.ActiveSheet
' Kérdés: hány elemet hagyjon ki
skipCount = Application.InputBox("Hány elemet szeretnél kihagyni az elején?", "Elemek kihagyása", Type:=1)
If skipCount < 0 Then Exit Sub' Kérdés: hány elemet másoljon egy oszlopba
chunkSize = Application.InputBox("Hány elemet szeretnél egy oszlopba másolni?", "Osztás megadása", Type:=1)
If chunkSize <= 0 Then Exit Sub' A oszlop utolsó adat sor
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row' Meghatározzuk, hova kezdje a másolást (ha már volt előző futás)
If Application.WorksheetFunction.CountA(ws.Range("B:ZZ")) = 0 Then
targetStartRow = 1
Else
targetStartRow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row + 1
End If' Másolás
dataRow = skipCount + 1
pasteCol = 2 ' B oszlop
pasteRow = targetStartRowDo While dataRow <= lastRow
' Egy oszlop feltöltése chunkSize elemmel
For i = 1 To chunkSize
If dataRow > lastRow Then Exit For
ws.Cells(pasteRow, pasteCol).Value = ws.Cells(dataRow, 1).Value
pasteRow = pasteRow + 1
dataRow = dataRow + 1
Next i' Következő oszlop, vissza a kezdő sorra
pasteCol = pasteCol + 1
pasteRow = targetStartRow
LoopMsgBox "? Kész! Az adatok oszloponként lettek átmásolva."
End Sub
itt a teljes kód és a
Do While dataRow <= lastRow részt hagyja ki -
KAMELOT
titán
Sziasztok!
Egy kis segítség kéne!
Van egy nagy méretű fájlom benne 8000 sor kb.
Néha azt csinálja, hogy amikor mentem akkor RECOVER csinál aztán újraindul a excel és nem menti el!
SAVE----valamit gondolkozik aztán újraindul az Excel vagy cska simán kilép!
Ezt megcsinálom 20-30x aztán megint jó egy darabig......az olyan 5-6x mentés!
Érdekes mert más excel fájlt meg simán ment!
Ez mitől lehet?Köszönöm előre is ha valaki tud segíteni!
Szerk: Feldobott valamit az EXCEL, hogy ez régi formátum.....Na most már jó minden!
Egyszerű dolgok.....nem is figyeltem erre!
-
-
lappy
őstag
personal ban van két darab makró amihez rendeltem 1-1 ikont az egyik lefut a másik nem
viszont ami nem fut le munkalapra bemásolva teljesen jól működik
hol lehet a hiba? -
föccer
nagyúr
Sziasztok!
Szokásos brainstorming.
Egy ~100 MB-os file ami hálózaton van. Van benne log. Ki nyitja meg, hová menti, mit nyomtatott ki, melyik nyomtatón, ilyesmi. Alapértelmezetten mindenkinél be van kapcsolva az autosave, de nem mindenkinek. A fáljt alapvetően bármi nézheti, mert jogosultság korlátozása nincs, ugyan akkor (amolyan KPI jelleggel) látni szeretnék, hogy ki dolgozott rajta. A fájl egy adatgyűjtő/elemző eszköz, ami segíti a felhasználók munkáját, de az usereknek nem kell adatot felvinniuk, csak a rendelkezésre álló adatok között legördíthetőből/kattintással választani. A felhasználók új információt nem adnak be a táblázatba, így alapvetően nem is kell menteniük.
Minden egyes log bejegyzésnél menteni makróból erős lenne, lévén megnyitás/mentés 10-15 másodperc a hálózati elérés függvényében. Ugyan akkor szeretném elkerülni, hogy ha csak simán bezárják mentés nélkül a file-t, akkor a log adatok nincsenek mentve.
Minden egyes log bejegyzésnél egy külső fájlt nyitni, beleírni, menteni megint időigényes és feltűnő, zavaró.
Illetve ott van még az, hogy hogyan viselkedik, hogy ha valami csak olvasásra nyitja meg a fájlt, mert valakinél éppen nyitva van. Ez utóbbira meg végképp semmi ötletem nincs... Úgy érzem tapogatom az excel ilyes téren jelentkező korlátait...
Van valami ötletetek, hogy hogy oldjam meg?
Köszi szépen

fg
-
jjohn
aktív tag
-
Mutt
senior tag
Szia,
Az egyezési mód (match mode) az egyik legnagyobb eltérés az FKERES és XKERES között. Az FKERES-ben alapból közelítő találatot ad vissza, míg az XKERES pontos egyezést. (A másik, hogy XKERES tud balról találatot visszadni.)
Az hogy 3-as opcióval (ami reguláris kifejezés használatát jelenti) megy csak az XKERES azt sugallja nekem, hogy a keresési érték nem pontosan úgyanúgy van a keresési tartományban (pl. lehet szóköz előtte vagy utána).
A mintában az OTJV25 lapon a számok szövegként voltak a cellákban, ezt csak cella formázással nem lehet elérnni, hanem bevitelkor apsztróf + szám kell, pl. '476
vagy ha már vannak számok akkor mellette oszlopban a képlet =A1&"" . Ezt az eredményt visszamásolva az A-oszlopba szövegmarad a szám.Próbáld ki, hogy 3-as helyett 1-et adsz meg. Ekkor is hiba lesz vagy műkődik rendben?
Reguláris kifejezések hasznosak tudnak lenni, de külön "szakma" jól használni őket.
pl. Ha megakarjuk találni a különböző Attilákat a szövegben akkor lehet próbálkozni vele. Itt pl. Attila, Atilla, Atila, Atika változatokat keresünk.

üdv
-
jjohn
aktív tag
Szia!
Mindig vevő vagyok az új dolgokra, xkeres-t még nem használtam.
Pl. nálam ez a képlet csak akkor működik, ha az egyeztetési módot beállítom. Nem értem az okát MS365-öm van.
=XKERES(A2&"";OTJV25!A:A;OTJV25!B:B;"";3)
Állíthatok szöveg formátumot, szám formátumot nem akarja az igazat.Az fkeressel minden hiba nélkül megy.
-
Mutt
senior tag
válasz
PeLa87
#54704
üzenetére
Szia,
EV lapon ez a képlet:
=XKERES(A2&"";OTVJ25!A:A;OTVJ25!B:B;"")
Feri csak arra figyelmeztet, hogy a kereső függvények csak azonos típusok (szöveget szövegekben és számokat számok) között tud keresni. Excelben a számokat szövegként is lehet tárolni (ilyenkor a számok balra vannak a cellában automatikusan igazítva, míg a számok jobbra igazodnak).Az OTVJ25 lapon a számok szövegként vannak, ezért ha az EV lapra számként írod be őket akkor nem lenne találat, de a képletben a &"" résszel mindent szöveggé alakítunk, így műkődni fog a képlet.
üdv
-
Fferi50
Topikgazda
válasz
PeLa87
#54702
üzenetére
Szia!
Az Fkeres, Xkeres esetében a keresendő értéknek olyan formátumban kell lenni, mint ami a keresési oszlopban van.
A kép alapján az OVTJ2025 kód oszlopban szövegként tárolt szám van. Így a Keresőfüggvényben a keresendő paraméterként szövegként kell beírnod az értéket. Másik megoldás, hogy a kód oszlopban levő értékeket átalakítod számmá - erre több módszer is van, a hibaüzenetre kattintva is megteheted, kiválasztva ezt az opciót - és akkor számként írhatod be az EV fülre a keresett értéket.
Üdv. -
PeLa87
aktív tag
Sziasztok!

Hogy tudom az OVTJ25 lapról képlet segítségével kiíratni, hogy az EV lapon, ha mondjuk beírom a kódot pl.: 476101 akkor a EV fülön kiírja ugyan ezt nekem a hozzátartozó szöveggel...? Póbáltam fkeres-sel, xkeres-sel, de úgy látszik béna vagyok... :/
-
mindanee
tag
Szia,
nagyon köszi.
Nem értetted félre a problémát

A "c" pontot nem értettem elsőre, kipróbálás után persze rögtön le is esett.
Kicsit azért sajnálom, hogy nem lehet ilyen formátumot összehozni, nem gondoltam volna, hogy pont ezzel érem el az Excel határait.
Köszi még egyszer!
Új hozzászólás Aktív témák
- Path of Exile 2
- Direct One (műholdas és online TV)
- One otthoni szolgáltatások (TV, internet, telefon)
- AMD Navi Radeon™ RX 9xxx sorozat
- Xiaomi 15 Ultra - kamera, telefon
- gban: Ingyen kellene, de tegnapra
- E-book olvasók
- Milyen routert?
- Kutya topik
- Allegro vélemények - tapasztalatok
- További aktív témák...
- REFURBISHED - Lenovo ThinkPad 40AF Dock (DisplayLink)
- Bontatlan iPhone 17 Pro Max (256 GB) (rendelhető)
- BESZÁMÍTÁS! GB B450 AORUS Elite R5 5600X 32GB DDR4 1TB SSD NITRO+ RX 6700XT 12GB Rampage SHIVA 750W
- IKEA Format lámpák eladóak (Egyben kedvezménnyel vihető!)
- Samsung Galaxy S24 / 8/128GB / Kártyafüggetlen / 12 Hó Garancia
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: ATW Internet Kft.
Város: Budapest
)



szerintem jó a számítás és valamennyire logikus a táblázatom
A formázás még kicsit hiányos ha a legördülőből kiválasztom, hogy Nyert akkor nem az egész sort színezi =$A$6:$K$7;$C$8;$G$8:$G$27;$J$8:$K$27







