-
Mobilarena
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
-
jack982
senior tag
copilot nem csinálja meg?
-
Louro
őstag
Uh, ez így reggel... Én lehet azért, hogy az egyszeri kolléga is talán megértse sok IF-et ágyaznék egybe.
Első munkalapot én Árazás-nak neveztem el, a másodikon pedig A,B és C oszlopokat vettem.
Így még az F4-gyel sem kell bajlódni, mert lefelé húzod és az oszlopok nem másznak elLátványra sok az XLOOKUP, de talán egy mezeibb Excel felhasználó is tudná módosítani, bővíteni szükség esetén.
A függvény annyi, hogy megnézi, hogy a rendelt mennyiség a legnagyobb tier-be esik-e, ha igen, akkor annak árazását veszi, majd felszorozza a rendelt mennyiséggel. Ha nem, akkor megnézi, hogy a következő tier-be tartozik-e.=IF(XLOOKUP(A2;Árazás!A:A;Árazás!J:J)>=J2;XLOOKUP(A2;Árazás!A:A;Árazás!K:K)*B2;IF(XLOOKUP(A2;Árazás!A:A;Árazás!J:J)>=H2;XLOOKUP(A2;Árazás!A:A;Árazás!K:K)*B2;IF(.... )))
-
Mutt
senior tag
Sziasztok,
Van egy termék listám, ahol a termék "sávos árai" (az adott ár érvényes, ha a termékből a megadott darabszámnál kevesebbet vásárolsz egyszerre, ha többet akkor a következő sáv - ha van - ára lesz a darabár) vannak vízszintesen feltüntetve egymás után.
Első oszlop a termék neve, a második a mennyiség ameddig az ár érvényes, a harmadik a darab ár, aztán jöhet egy újabb sáv mennyiség és ár páros és így tovább.Itt a minta:
"Természetesen" nekünk függőlegesen kell az eredmény; első oszlopban termék neve, majd mellé a mennyiség és végül az egységár.
A B és C termékre pl. majd ez kellene:A munkatárs kezdő Excelben, Power Query-t ezért inkább kerülöm. Gondoltam, hogy egy sima transzponálás lesz majd Excelben, de nem az lett.
Ha vkinek a fenti problémához van megoldása, akkor nyugodtan dobja ide be, mert szerintem én túlgondoltam az egészet. MS365 van a gépeken.
Ha vkit inkább a megoldás érdekel az olvasson tovább, hasznosítsa amit összeraktam.
Első gondolatom az volt, hogy mivel párosan vannak az adatok azért csak azt kell elérnem, hogy új sorba kerüljenek a párok. ELTOLÁS(adatok;;0;1;2) megadja az első párt, a 0-t 2-re cserélve (2 oszloppal jobba megyek) meg van a második pár és így tovább. De tömb-függvényként nem működik az ELTOLÁS.
Ezek után elindultam azon, hogy minden második oszlopban vannak a nekem fontos adatok, vagyis előbb kiválasztom minden mennyiséget tartalmazó oszlopot, az eredményt transzponálom. Majd melléteszem az transzponált árakat tartalmazó oszlopokat.
Ehhez lehet használni vagy az INDEX vagy az OSZLOPVÁLASZTÁS/CHOOSECOLS függvényeket.
pl.=OSZLOPVÁLASZTÁS(adatok;1;3;5;7;9)
csak a páratlan oszlopokat tartja meg (mennyiségek). Ezt már egy TRANSZPONÁLÁS-ban lehet használni, hogy sorokban legyen az eredmény.Az eredményeket pedig a VÍZSZ.HALMOZÁS/HSTACK tudom egymás mellé tenni.
A fentieket mind egybegyúrva az eredmény "kis csalódás". Szebb lenne ha a termék megnevezés ismétlődne.
A képlet eddig (elnézést hogy a változók angolul vannak):
=LET(mat;A2;
arr;KIMETSZÉSITARTOMÁNY(B2:K2;;3);
row;INT(DARAB(arr)/2);
seq;SORSZÁMLISTA(row;;1;2);
q;OSZLOPVÁLASZTÁS(arr;seq);
v;OSZLOPVÁLASZTÁS(arr;seq+1);
res;VÍZSZ.HALMOZÁS(mat;TRANSZPONÁLÁS(q);TRANSZPONÁLÁS(v));
res)
A második sorban a KIMETSZTÉSTARTOMÁNY/TRIMRANGE hasznos tud lenni, ha nincs minden oszlopban adatunk, a minta 4-6. sorai ilyenek.
Hogy mindenhol legyen termék nevünk az egy szenvedés. A SOKSZOR/REPT függvény sajna nem tud segíteni. A halmozás (FÜGG.HALMOZÁS vagy VÍZSZ.HALMOZÁS) tud segíteni, ezt kell többször meghívni (iterálni). Az iterációhoz a REDUCE függvényt szoktam használni. Ahhoz hogy tetszőleges számmal (pl. 5x) tudjuk egymásra halmozni a terméknevet egy ilyen függvény kell:
=LET(terméknév;A2;ismetlés;5;REDUCE(terméknév;SORSZÁMLISTA(ismetlés-1);LAMBDA(teljes;aktuális;FÜGG.HALMOZÁS(teljes;terméknév))))
Itt majd figyelni kell, hogy ez a technika hibára fut a 4-6-os sorokon, mert ott nincs mit ismételni. Ezt egy HA elágazással meg lehet oldani.
A képlet már majdnem kész, csak az a gond, hogy a LET-ben fixen meg kell adni, hogy melyik sorral dolgozzon, de jobb lenne ha mint egy saját függvény (UDF) mi tudnánk megadni a tartományt. Ehhez a LAMBDA függvénybe kell ágyazni a LET tartalmát, a változókat pedig "egyeztetni", vagyis ha LAMBDA-nak megadjuk a sort, akkor a LET-ben már nem kell definiálni, csak használni a helyes névvel.
A végeredmény pedig ez lett:
=LAMBDA(array;[norepeat];
LET(
mat;ÁTHELYEZ(array;;1);
arr;KIMETSZÉSITARTOMÁNY(ELTÁVOLÍT(array;;1);;3);
row;INT(DARAB(arr)/2);
seq;SORSZÁMLISTA(row;;1;2);
mat_r;HA(ISOMITTED(norepeat);mat;"");
m;HA(row=1;mat;REDUCE(mat;SORSZÁMLISTA(row-1);LAMBDA(acc;curr;FÜGG.HALMOZÁS(acc;mat_r))));
q;OSZLOPVÁLASZTÁS(arr;seq);
v;OSZLOPVÁLASZTÁS(arr;seq+1);
res;VÍZSZ.HALMOZÁS(m;TRANSZPONÁLÁS(q);TRANSZPONÁLÁS(v));
res
))
Célszerű névkezelőben egy névvel elmenteni, én myTRANSPOSE nevet adtam neki.
Nézzük át hogy mit csinál a képlet:
1) A LAMBDA függvénynek az első paramétere kötelező, a második opciónális (ezt a szögletes zárójelezéssel lehet elérni). Az array-ben egy sort hivatkozást adunk meg, pl. "A2:K2", a második lehet üres vagy bármi más pl. 1.
2) A fenti tartománynak az első celláját elmentjük a "mat" változóba (ÁTHELYEZ/TAKE függvény).
3) A tartomány többi része a mennyiség-ár párosokat tartalmazza.
4) Az iterációkhoz tudnunk kell, hogy hány ilyen párosunk van, ehhez van a "row" és a "seq" változó.
5) A "mat_r" változót csak azért tettem be, hogy lehessen választani, hogy a terméknév legyen ismételve-e vagy sem. Az ISOMITTED megnézi, hogy a LAMBDA-nak adtunk-e második paramétert. Ha nem adtunk (omit = kihagy), akkor ismételjük majd a terméknevet, ha adtunk akkor pedig üres karaktert ismételünk.
6) Az m-q-v változókban tároljuk az ismétlődő termékneveket, a mennyiségeket és árakat.
7) VÍZSZ.HALMOZÁS-ben a fenti 3 tömböt egymás mellé tesszük és az utolsó lépésként cellába írjuk.Sajnos nem vagyunk kész, mivel a fenti függvény csak 1 db sort tud kezelni. Ha többet adunk meg, akkor hibával megáll.
A BYROW függvénnyel el tudjuk érni, hogy egy tartomány sorait egyesével dolgozza fel.
A=BYROW(A2:K7;LAMBDA(sor;myTRANSPOSE(sor)))
azonban nem megy. (Elméletben #SPILL hibát kellene adni, de #SZÁMÍTÁS-al megáll, amit nem értek.)A célunk, hogy minden myTRANSPOSE eredményt egymás alá halmozzunk, és ezt az eredményt írjuk ki. Ehhez megint egy REDUCE kell, az egészet egy LAMBDA-ba tettem és névkezelőben "AllTRANSPOSE" nevet adtam neki.
=LAMBDA(arr;[norepeat];
REDUCE({"Material","Scale Qty","Scale Price"};
SORSZÁMLISTA(SOROK(arr));
LAMBDA(acc;curr;FÜGG.HALMOZÁS(acc;myTRANSPOSE(INDEX(arr;curr;0);norepeat)))
))
Ez a vége.
üdv
-
Louro
őstag
Köszi a biztatást. Bár data analystként dolgoztam 10+ évig és most üzemeltetek, bár be-besegítek az elemzőknek. (A vérem nem bírja látni, amit művelnek olykor.)
Sokat Exceleztem, majd a VBA-t megismerve rájöttem, hogy sok munka leegyszerűsíthető.Aztán jött az SQL, majd a Powershell. A Pythonnal ismerkednék, de én úgy tudok a leghatékonyabban tanulni, ha a munkámba be tudom iktatni, tudom gyakorolni. Sajnos a Pythont még nem támogatja a cég, bár pletykák vannak. A Powerquery felé nyitnék, csak túl nagy elánnal estem neki egy feladatnak, hogy átültetem a lemakrózott megoldásom, mert volt szabad fél napom.
A PowerBI nem rossz dolog, de nálunk sajnos nagy az Excel-szerelem és hiába dashboard-ok, a vezetők adathalmazokat akarnak, nem grafikonokat.Előző munkahelyemen egész jó riportokat tudtunk PBI-ben összerakni, amiben jól le tudtak fúrni.Bocsi az offért!
-
Mutt
senior tag
Szia,
Amíg lesz desktop változat (tippre még vagy 20 évig) addig a VBA velünk lesz. Nagy fejlesztések persze nincsenek ott, de támogatás a spill formulákhoz, PQ-hez benne van, még DAX-ot is lehet VBA-val írni.
Az online változatra pedig több mint 10 éve ott van - a szerintem hallott - Office Script.
Az előző hozzászólásomban leírtam a PQ elsődleges célját. Lehet vele összaadni, de én nem javasolnám csak arra. Viszont vannak esetek (főleg ha nem 1 db oszlop alapján kell a keresést elvégezni, vagy több értéket kell visszaadni), amikor V/XLOOKUP hatékonyabb alternatívája.
Power Map tényleg hallott, kb. 1 hónapja íde írtam is róla, hogy aki térképen akar megjeleníteni a Power BI (PBI) marad, ami viszont nagyon pörgetve van (ebben van már online is használható PQ). Nálunk a főnökség rá van cuppanva, szeretik hogy interaktív és egyszerre tud átfogó és részletekig menő képet adni. Ehhez persze jónak kell lennie a riportnak.
Ne engedd el a VBA-t, de ha időd engedi akkor próbálkozz PQ-vel és PBI-al (ahol a DAX a nehéz). Érdemes még az újabb függvényekkel is ismerkedni közben. Mindegyikhez érdemes dokumentációt/könyveket olvasni, mert hamar akadályokba fogsz ütközni.
A fórumon próbálunk segíteni mindenkinek.
üdv
-
Louro
őstag
Sokszor hallottam, olvastam fórumokon, hogy VBA leáldozott, na meg a Powerquery mennyivel jobb is. Igaz sok-sok éve még a Powermap is felcsigázott, de hiába építettem be egy-egy dashboard-ba ahol láttam értelmét, leggyakrabban az adat kellett a managementnek és mindenki a saját szája íze szerint forgatta ki az adatokat. Nagyon minimál csináltam meg a pivotokat és raktam be a szeletelőket.
Én naívan azt gondoltam, hogy ha megadom a forrást, akkor a szerkesztő felületen, ha nyomok egy Add custom column-t, akkor az Excel képletet megadom és végighúzza rá. Ezzel is segítve a mezeibb felhasználókat.
Tegnapelőtt Geminivel végül összeraktam a kódot, de lehet maradok a VBA-nál, mert úgyis max fél évig kell egy procedúra, amíg az üzlet finomhangolja az adatforrást.
Lehet csak túlbuzgó voltam ezzel a dologgal, hogy transzparens akartam maradni. Lehet egyszerűbb lett volna Powershell segtségével megcsinálni és csak a végeredményt odavetni ellenőrzésre.
-
Mutt
senior tag
Szia,
Én nem látom, hogy túl lenne tolva a Power Query (PQ) marketingje Excelben, azonban ez egy céleszköz amely az ETL (extract-transform-load) feladatokban tud segíteni.
Nem programozási nyelv, hanem olyan "függvények" tárháza ami adat feldolgozásban tud segíteni.Abszolút nem KEZDŐKnek van; a célközönség a data analyst, aki otthonosan kezel Pivot/SUM/SUMPRODUCT/COUNTIFS függvényekket.
Mellesleg egyre több olyan függvény is van már Excelben, amely alapfelhasználóknak is kihívás. LAMBDA/REDUCE/AGGREGATE függvények haladóknak vannak.
Előnye (nem teljes a lista):
1) makró mentesen hajtja végre a feladatokat,
2) van hozzá jó sok connector amivel távoli adatbázisokból lehet adatot kinyerni (VBA-hoz drivert kell telepíteni, majd referenciában aktiválni),
3) van hozzá kezelőfelület (PQ Editor), ahol bárki tud módosítani a lépéseken,
4) nagy mennyiségű adattal is boldogul (persze lassulás itt is lesz).Hátránya (nem teljes a lista):
1) ha az adat formátum nem fix, akkor küzdeni kell,
2) M-nyelvet ismerni/tanulni kell, pl. a függvény nevek mellett tudni kell, hogyan lehet sorra vagy oszlopra hívatkozni, mi a különbség record/list/table között és ezek között hogyan lehet mozogni. Néha kézzel jobb M-kódot lehet írni, mint amit a szerkesztő ad.
3) nem real-time az eredménye, frissítés kell (lehet kézzel vagy időzítve, VBA-val),
4) sok adatnál a script elkészítése lassú tud lenni (megoldás, hogy egy kisebb adatsor, kb. max 50 ezer sor segítségével készítsük el a scriptet és ha jó akkor lehet tolni a teljest)
5) VertiPaq (calculation) engine zavaró tud lenni, pl. táblák összefűzése (merge) után nem garantált hogy a sorrend ugyanaz marad mint előtte.Az általad említett fájlok feldolgozására itt van egy M-kód, próbáld ki. Ha kell segítünk.
let
Forrás = Folder.Files("C:\Temp\ImportFiles\"),
Sorok = Table.SelectRows(Forrás, each Text.Upper([Extension]) = ".CSV"),
Fajlok = Table.AddColumn(Sorok, "Adatok", each Csv.Document(_[Content], [Delimiter="#(tab)", Columns=1, Encoding=65001, QuoteStyle=QuoteStyle.None])),
FeleslegesSorokEltavolitasa = Table.AddColumn(Fajlok, "Adatok1", each Table.Skip([Adatok], try List.PositionOf(Table.ToList([Adatok]), "exporter start") + 1 otherwise 0)),
Osszefuzes = Table.Combine(FeleslegesSorokEltavolitasa[Adatok1]),
Index = Table.AddIndexColumn(Osszefuzes, "Index", 0, 1, Int64.Type),
BlokkStart = Table.SelectRows(Index, each ([Column1] = "{")),
BlokkIndex = Table.AddIndexColumn(BlokkStart, "BIndex", 1, 1, Int64.Type),
Egyesites = Table.NestedJoin(Index, {"Index"}, BlokkIndex, {"Index"}, "Join", JoinKind.LeftOuter),
Kibontas = Table.ExpandTableColumn(Egyesites, "Join", {"BIndex"}, {"BIndex"}),
KitoltLe = Table.FillDown(Kibontas,{"BIndex"}),
KapcsokEltavolitasa = Table.SelectRows(KitoltLe, each ([Column1] <> "{" and [Column1] <> "}")),
Felosztas = Table.SplitColumn(KapcsokEltavolitasa, "Column1", Splitter.SplitTextByEachDelimiter({":"}, QuoteStyle.Csv, false), {"Mező", "Érték"}),
Sorbarendezes = Table.Sort(Felosztas,{{"Mező", Order.Ascending}}),
OszlopTorles = Table.RemoveColumns(Sorbarendezes,{"Index"}),
Forgatas = Table.Pivot(OszlopTorles, List.Distinct(OszlopTorles[Mező]), "Mező", "Érték"),
Sorbarendezes2 = Table.Sort(Forgatas,{{"BIndex", Order.Ascending}})
in
Sorbarendezes2
üdv
-
Louro
őstag
válasz
Fferi50 #54549 üzenetére
Hello,
a feladat igazából az, hogy adott egy mappa. Példa kedvéért C:\Temp\ImportFiles\
Ebben a mappában találhatóak .csv fájlok, amik igazából egy program hibanaplói.A fájlok tartalma úgy néz ki, hogy az első X sor technikai hablaty. Addig a sorig - beleértve azt is - törlöm, amelyik sorban megtalálható az, hogy "exporter start". Alatta pedig:
{
mezőnév: adat
mezőnév: adat
mezőnév: adat
}Mivel van 15 mező, amit tartalmaz, így rövidítettem. Ráadásul, ha az adott mezőhöz nem tartozik adat, akkor az nem kerül a fájlba. Így a kapcsos zárójelek a kapaszkodók. (Ezeket később blokkoknak nevezem.)
Az elvárt output egy transzponált nézet, hogy megvan a fix fejléc (mezőnevekkel egyező) és egy-egy blokk, egy-egy sor.
Az Excel makróval azt csinálom, hogy törlöm a fájlok elejét. Maradnak a blokkok. +1 oszlopban megsorszámozom a blokkokokat. +1 oszlopban kiveszem a kettőspont előtti mezőneveket. (A kollégák miatt nem egy függvényben kezelem, mert sokaknak értelmezhetetlenek az összetett függvények.) +1 oszlopban pedig a blokk sorszámát és a mezőnevet konkatenálom. A transzponált adatokat egy másik munkalapon tárolom. Ott az első oszlopban a sorszámokat vezetem. B1-től pedig a mezőneveket sorolom fel. Majd B2-be betettem egy képletet (, majd értékével felülírom), amivel kiszedem az első munkalapról az adatokat.
Az egész vége egy SQL táblába való betöltés, de előtte sajnos társosztállyal validáltatnom kell az adatokat. Ezért nem SQL-ben van az egész kezelve. (Na meg, ha szabadságra megyek, akkor más is tudja kezelni. Excel pedig mindenki gépén van, de SQL nincs és tudás sincs.)
Nem mondom, hogy a powerquery ellen vagyok, csak a marketingbullshit, hogy ez a jövő és ha a VLOOKUP megy, akkor ez is menni fog, erős túlzás szerintem. Még azon is gondolkodtam, hogy powershell scriptet írok rá, ami megcsinálja a transzponált kivonatot és a végén csak egy fájl lesz, amivel dolgozzon a társosztály. (Csak így a lépések vesznek el, ha valaki ránézne a lépésekre. Vagy, ha módosítani kell, megint kevesen értenek a ps-hez.)
-
Fferi50
Topikgazda
Szia!
Szerintem a PQ egy kicsit más gondolkodást igényel, mint a VBA, "szinte adatbázis kezelés" módba kell kapcsolni.
"ha az adott sor első karaktere szóköz, akkor legyen üres az a sor... háááát. "
Pl. szűrés után egyből ki lehet törölni az összes ilyen sort.
Kérdés, hogy ott egy üres sornak kell-e maradnia valamilyen okból, vagy nincs is szükség a sorra.
A PQ-val egész állományokat manipulálhatsz egy-egy művelettel.
Ha teszel fel mintát, lesznek itt fórumtársak, akik segítenek a megoldásban.
Üdv. -
Louro
őstag
Sziasztok!
Végre engedtem egy kolléga csábításának - na nem úgy - és megnéztem ezt a powerquery-t.
Volt egy makróm, ami azt csinálta, hogy egy mappából felolvasta a fájlokat és különböző transzformációk révén egybegyúrta azokat.Ugyanezt egy darabig könnyű megcsinálni a powerquery-ben, de amint egy olyan feltételt kellett írnom, hogy ha az adott sor első karaktere szóköz, akkor legyen üres az a sor... háááát. Lelkesen megírtam Excel képlettel, aztán AI segítségével rádöbbentem, hogy if then else van itt. A left() helyett text.start().
Lehet, hogy robosztus feladatokra hatékony, de azért azt mondani, hogy aki tudja használni az Excelt, az tudja használni a powerquery-t is nem kicsit túlzás. Valamiért a VBA szimpatikusabb, bár tudom, hogy a M$ már nem támogatja a VBA-t és praktikusabb lenne nem abban megoldani automatizmusokat, de hát na. Egy mezei Excel-felhasználó szerintem előbb megérti a VBA kódot, mint a powerquery-t vagy egy powershell scriptet.
Vagy csak én néztem be valamit?
-
csongi
veterán
Koszonom
-
Mutt
senior tag
válasz
csongi #54544 üzenetére
Hali,
A már javasoltak mellett még ezeket is szóba jöhetnek:
1. Kimutatás készítés (ez kézzel kell alapból frissíteni, de lehet automatikust is beállítani)
2. MS365-ben van olyan függvény, hogy CSOPORTOSÍTÁS.ALAP.SZERINT
üdv -
Fferi50
Topikgazda
válasz
csongi #54544 üzenetére
Szia!
Nem írtad, milyen Excel verziód van. Mindegyikben műxik:
1. A B oszlopot átmásolod az új helyre, majd adatok - ismétlődések eltávolítása
2. A mellette levő oszlopban pedig használod a SZUMHA függvényt.
Ha van a verziódban, akkor használhatod az EGYEDI függvényt az ismétlődések eliminálására.
Üdv. -
csongi
veterán
Sziasztok!
Van egy táblázatom.
A B oszlopban lévő adatok egymás alatt, és időnként ismédlódnek.
Az E oszlopban pedig az mennyiségek vannak.
Olyat szeretnék, hogy az ismétlődéseket szedje össze, egy külön oszlopba, és csak egyszer legyen jelen. Mellette lévő oszlopba pedig adja össze az E oszlop értékeit, az egyezés alapján. -
-
Mutt
senior tag
válasz
Reinhardt #54538 üzenetére
Szia,
Excel 2021 vagy frissebben az EGYEDI, SZŰRŐ és LAMBDA függvények segítségével meg lehet oldani. Azonban Excel táblázatnak nem lehet része olyan függvény, amely LAMBDA-t tartalmaz így a táblázat mellett van egy segédoszlopban a képlet, amelyre lehet a feltételes formázásban hívatkozni.
Mintám:
A D2-ben (színezés oszlopban) a képlet:
=MARADÉK(XHOL.VAN(Táblázat1[PO];EGYEDI(SZŰRŐ(Táblázat1[PO];BYROW(Táblázat1[PO];LAMBDA(sor;RÉSZÖSSZEG(3;sor))))));2)
Feltételes formázásban erre az értékre lehet hivatkozni.
üdv
-
Mutt
senior tag
válasz
-szabi- #54535 üzenetére
Szia,
...hogyan kell színes cellákat számolni...
Alapfüggvényekkel nem lehet, csak makróval.
http://www.excelexchange.com/SumByColor.html oldalon a CountByColor makró kell.üdv
-
Reinhardt
őstag
Hello,
Van egy tablazatom rendelesekkel, az elso oszlopban van a rendeles szama, ha egy rendeles csak egy elemet tartalmaz akkor 1 sor, de van hogy tobbet es akkor minden elem kulon sorban van. tehat van hogy egy rendeles csak 1 sor de van hogy akar 7 is lehet.
Hogyan tudom egyszeruen megformazni, hogy jol elkulonuljenek egymastol, mondjuk feher es kek szinek valtjak egymast rendelesenkent? -
-szabi-
addikt
Hi
Kis segítség kellene, hogyan kell színes cellákat számolni.
Egy sorban van 20 cella több különböző színnel, piros, sárga, zöld.
A sor végén 21. cellában azt szeretném tudni mennyi volt a piros cella, 22. cellában a sárga cellák száma, stb és így tovább.
Lehetőleg függvény és ne script.
Erre van megoldás?
Előre is köszi.üdv
szabi -
Mutt
senior tag
válasz
Zoli1222 #54531 üzenetére
Szia,
Alternatív megoldás arra hogy egy napról kiderítsük, hogy munkanap/ünnepnap/hétvége.
A hétvégére a HÉT.NAPJA függvény is használható.
pl.HA(HÉT.NAPJA(A2;2)>5;"hétvége";"nem hétvége")
Ünnepnapok kikeresésére a HOL.VAN is használható, vhogy így:
SZÁM(HOL.VAN(A2;Ünnepnapok!$B$2:$B$100;0))
(A függvény vagy egy pozíciót - egy számot - ad vissza, ha a nap az ünnepnapok között megtalálható, vagy egy hibaüzenetet. A SZÁM függvény ezt a kapott eredményt IGAZ vagy HAMIS-ra alakítja.)
Ezeken túl érdemes még egy listát nyilvántartani az áthelyezett munkanapokra is (idén május 17, október 18 és december 13).
Ezek után a sorrend az hogy megnézzük, hogy egy adott nap
1) áthelyezett munkanap-e (ha igen, akkor "munkanap", ha nem akkor 2-es lépés),
2) ünnepnapra esik-e (ha igen, akkor "ünnepnap", ha nem akkor 3-as lépés),
3) hétvége-e (ha igen, akkor "hétvége", ha nem akkor 4-es lépés)
4) "munkanap" maradt vissza (kivétel, ha külön akarod listázni a szabadságokat, betegszabikat).A fenti logikára lehet HA függvényt is használni, de sokkal jobb (érthetőbb) a HAELSŐIGAZ függvény.
A képlet a fenti minta alapján:=HAELSŐIGAZ(SZÁM(HOL.VAN(A2;$J$2:$J$4;0));"munkanap";SZÁM(HOL.VAN(A2;$G$2:$G$17;0));"ünnepnap";HÉT.NAPJA(A2;2)>5;"hétvége";1;"munkanap")
üdv
-
Zoli1222
addikt
Sziasztok!
Újra itt. Egy olyan hibába ütköztem, ami az ai-n is kifogott!
Egy kezdetleges fizetéskiszámító táblázatot csinálok.
egyik fülön szerepelnek az ünnepnapok
másikon alap adatok
3. fülön adott hónap és napjai a lényeges opciókkal
A lényeg, h szinte minden képletnél #név? hibát hoz=HA(VAGY(B3="szombat";B3="vasárnap");"hétvége";"munkanap")
ez megfelelően működik, és ez is:=HA(SZUM(HA(A2=Ünnepnapok!$B$2:$B$100;1;0))>0;"ünnepnap";"nem ünnep")
de ha ezt írom be:=HA(SZÁMLÁLHA(Ünnepnapok!$B$2:$B$100;A2)>0;"ünnepnap";HA(VAGY(B2="szombat";B2="vasárnap");"hétvége";"munkanap"))
ezzel már jön a hiba
hogy vagy mit javítsak, h jó legyen? ha bármi infó kell írom! köszönöm -
Traxx
őstag
válasz
Fferi50 #54528 üzenetére
Köszönöm szépen, ez nagyon klassz így
Még egy dolog ütött szöget a fejemben, de ez nem tudom, mennyire megvalósítható. A sok kategóriám közül van 4-5, amihez tartozik kiegészítő infó. Megoldható-e valahogy, hogy ezek is megjelenjenek, ha szükséges?
Arra gondolok, hogy ha pl. kiválasztok, hogy alma, akkor a fenti képlet szerinti tartalom töltődik be az adott cellába. Ha pedig barack, akkor szintén, kiegészülve egy kis extrával, hogy pl. "1 rekesz, 2 doboz", körte esetén "1 láda", stb. -
Fferi50
Topikgazda
Szia!
Ha megoldható, hogy egy oszlopban a kategória neve benne legyen az adott sorban (ami szerintem hasznos információ is), akkor az INDEX - HOL.VAN függvény párossal INDIREKT nélkül is lehet képlet. (Bocs a magyar képletnevek miatt.)=SZÖVEGÖSSZEFŰZÉS(";";IGAZ;HA(INDEX(Sheet1!$D2:$AE20;HOL.VAN(Sheet2!A1;Sheet1!$A$2:$A00$20;0);0)="x";Sheet1!$D$1:$AE$1;""))
Itt a Sheet1 A oszlopban vannak a kategóriák.
Az INDEX függvény a HOL.VAN függvény által meghatározott teljes sort fogja visszaadni, mivel az oszlop paramétere 0. Az ebben a sorban meghatározott igaz értékek alapján hajtja végre az összefűzést a függvény.
Üdv. -
föccer
nagyúr
Én ilyet indirekttel oldottam meg és egy segéd táblázattal. A cellában előfordulható kategóriákat egymás alatt felsoroltam, majd mellé betettem azt a szöveget, ami az indirektnek kell beadni (ami a hivatkozás tartományt adja). Ezután simán megy az indirekt(fkeres()).
üdv, föccer
-
Traxx
őstag
Sziasztok!
Ugyanebben a témában szeretnék még segítséget kérni. Maga a megoldás hibátlan, viszont "automatizálni"szeretném.
Jelenleg így néz ki a képletem, ami az A1 cellában van:=TEXTJOIN("; ";TRUE;IF('Sheet1'!$D2:$AE2="x";'Sheet1'!$D$1:$AE$1;""))
Ez a Sheet2 A1 cellájába megy, és a
$D2:$AE2
-ben a szám attól függ, hogy a Sheet2 A2 cellában mi található. Tudnátok abban segíteni, hogy ez a tartalom függvényében változzon?
Arra gondolok, hogy ha pl. ennek a cellának a tartalma alma, akkor$D2:$AE2
legyen a forrás, ha körte, akkor$D3:$AE3,
ha barack, akkor$D4:$AE4,
stb.Nagyon köszönöm előre is!
-
Delila_1
veterán
=SZÖVEGÖSSZEFŰZÉS(";";IGAZ;HA(Munka1!D7="X";Munka1!D$1;"");HA(Munka1!E7="X";Munka1!E$1;"");HA(Munka1!F7="X";Munka1!F$1;"");HA(Munka1!G7="X";Munka1!G$1;"");HA(Munka1!H7="X";Munka1!H$1;"");HA(Munka1!I7="X";Munka1!I$1;"");HA(Munka1!J7="X";Munka1!J$1;"");HA(Munka1!K7="X";Munka1!K$1;""))
-
Traxx
őstag
Sziasztok!
A segítségeteket szeretném kérni, mert sehogy nem tudok előrébb lépni
Van egy ilyen mátrix-om:
Egy másik fülön szeretném kilistázni egy cellába azokat az oszlopokat, ami az M1 számára X-el van jelölve, de az üres és az NA nem játszik. Vagyis valahogy így: 4.1; 4.2; 4.3; stb
Tudnátok segíteni kérlek, hogyan lehetne ezt kivitelezni?
Köszönöm szépen előre is!
-
Mutt
senior tag
válasz
Zoli1222 #54514 üzenetére
Dinamikus tömbök nem műkődnek Excel táblázatban ha nem tudnak "elterülni", mivel csak azt a cellát használhatják ahova be lettek írva.
Az elmondásod szerint Power Query műkődhet, mivel az egy táblázatot készít, de ahogy mondod hogy mit szeretnél ott az lesz a gond, hogy az adatok el fognak veszni ha egy új honapot indítasz. (Önhivatkozással ez megkerülhető.)
Azonban én inkább máshogy érném el a célt, ami sokkal egyszerűbb lesz.
Egész évre létrehozzuk már most a táblázatot, szinezzük ahogy kell a napokat. Kirakunk egy szeletelőt és azzal szűrőd a téged érdeklő hónapot.
Angol Excelben mutatom: egy képlet van a hónaphoz, minden más statikus.A táblázat végére tudunk egy összegzést is tenni automatán, így egyből lesz végeredményed akárhogy szűrsz.
-
Zoli1222
addikt
Köszönöm!
Az az igazság, h táblázatok-at használok és ebben nem jó a kód. Jövő héten jön a notebook-om rendes office-szal akkor újra próbálom. Amúgy egy olyan táblázatot szeretnék ha kivitelezhető, hogy!:
-az adott hónap napjait dinamikusan sorolja fel pl beírom, H június akkor : 1. Vasárnap
2. Hétfő stb
-az hétvégéket jelölje szürke mezővel, az ünnepnapokat pirossal
- ha beírom, H "Sz" akkor a mező zöld legyen, ha azt írom "P" akkor kék, de ha később a P mellé beírom, hogy 8 akkor azt duplán számolja fizunál.
A következő oszlopban be lehessen a napok mellé írni a ledolgozott órákat az az utániba pedig a kiszámolt napi fizetést.
A lényeg, a megkapott beosztásom alapján ki tudjam számolni a következő havi fizetésem nagyjából vagy akár pontosan.
Van rá esély? -
Mutt
senior tag
válasz
Zoli1222 #54511 üzenetére
Hali,
Excel 2021-től van SORSZÁMLISTA függvény, amivel ezt el lehet érni könnyedén. Az egészet egy LET-be tettem, hogy jobban átlátható legyen hogyan épül fel a képlet.
Első lépésként a DÁTUMÉRTÉK függvénnyel a szöveges bevitelből egy dátumot csinálunk.
Ebből a dátumból a hónapvégét is kiszámítjuk. Végül pedig a SORSZÁMLISTÁ-val a két dátum közötti napokat kiíratjuk.
Ezeket a dátumokat speciális számformátummal megformázva (n - nnnn
) kapjuk meg az eredményt.Ha Excel 2021-nél régebbid van, akkor ha szükséges egy Power Query-vel (Excel 2016-től integrálva van, Excel 2010/2013-hoz telepíteni kell) is lehet ilyet csinálni.
Ha Excel 2010-től régebbid van, akkor talán egy tömb-függvénnyel megoldható.
Valószínű ronda lesz.
Itt a tömb (CSE) képlet:=DÁTUMÉRTÉK(A1&" 1")-1+SOR(INDIREKT("A1:A"&FKERES(A1;{"jan"\31;"feb"\28;"már"\31;"ápr"\30;"máj"\31;"jún"\30;"júl"\31;"aug"\31;"szept"\30;"okt"\31;"nov"\30;"dec"\31};2;0)))
Hónapot "jan", "feb", "már" ... "dec" szövegként kell neki megadni, lehet bővíteni az FKERES-ben más formátumokkal. Szökőévet nem fog tudni ez kezelni.
üdv
-
Zoli1222
addikt
sziasztok!
van olyan függvény vagy képlet amivel egyik mezőbe beirom a hónap nevét, akkor egymás alá kiadja a napokat? mondjuk beirom, h június és alá 1től 30ig beszámozza a mezőket? Esetleg még a napok neveit is mellé biggyeszti? előre is köszönöm!
-
[CS]Blade2
addikt
Egyenlőre jó a 2-es verzió. Aztán később kiderül. Ez amolyan munkaóra, túlóra nyilvántartó, és van egy adat rögzítő táblája, személyenként 1-1 kimutatás, és most kellett bele nekik külön 2 havi időkerethez az összes túlóra, egy másikba meg 4 havi, de külön 1 lapon az összes ember. Valamint napról napra is akarják nézni, ezért kellett, hogy mindig adjon eredményt, meg azt is kiszámolja, amikor már ott lesznek, hogy okt-nov van pl.
-
Mutt
senior tag
válasz
[CS]Blade2 #54505 üzenetére
Szia,
Több lehetőség is van:
1) Érdemes HAHIBA-ba tenned a képleteket. Ezeket már gond nélkül össze tudod adni.=HAHIBA(KIMUTATÁSADATOT.VESZ("Tökmindegy";'Nagy Ferenc'!$A$3;"Hónap (kezdete)";2);0)
2) Ugyanez tömb (CSE) függvénnyel rövidíthető:
=SZUM(HAHIBA(KIMUTATÁSADATOT.VESZ("Tökmindegy";'Nagy Ferenc'!$A$3;"Hónap (kezdete)";{2;3;4;5;6});0))
A képlet végefelé egy kapcsos zárójelben fel vannak sorolva a minket érdeklő hónapok, ezzel kényszerítjük az Excelt, hogy a függvényt minden változatra futassa le, az eredmény egy tömb lesz, amit a SZUM függvény tud kezelni. Itt annyi, hogy Excel 2021 előtti változatban Ctr-Shift-Enter-t kell nyomni miután a cellába bevitted a képletet.3) A kimutatást lehet helyettesíteni más függvényekkel.
SZORZATÖSSZEG, SZUMHATÖBB DARABHATÖBB ás ÖSSZESÍT régóta van, Excel 2021-től van REDUCE, és MS365-ben van már KIMUTATÁS.ALAP.SZERINT. Ezekkel is lehet végeredményt kapni, de ehhez több információ kell.4) B-kérdésben írod, hogy adott hónapok csoportot alkotnak. A 2-5 az 1 csoport, a 6-9 a 2-es és a 10-12 a 3-as.
Ez esetben azt is csinálhatod, hogy az eredeti adatsor végére adsz egy új oszlopot amibe meghatározod a hónap alapján a csoport számát. Ezt megtudod tenni HA/HATÖBBIGAZ vagy FKERES-el illetve Power Pivot esetén elég az adatmodellben hozzáadni az csoportszámát.
A kimutatáshoz hozzáadod a csoportszámot így lesz nem csak havi hanem csoport szám alapján is összeged, és azt olvasod ki a KIMUTATÁSADATOT.VESZ-el.üdv
-
Fferi50
Topikgazda
válasz
[CS]Blade2 #54505 üzenetére
Szia!
Esetleg próbáld meg a HAHBA függvénybe ágyazni a KIMUTATÁSADATOT.VESZ függvényt, pl. =HAHIBA(KIMUTATÁSADATOT.VESZ.---;0)
Üdv. -
föccer
nagyúr
válasz
[CS]Blade2 #54506 üzenetére
Használd az ÖSSZESÍT (vagy összesítés?) függvényt. Ott paraméterezhető, hogy mellőzze a hibás cellákat.
Egyébként mi a célja a táblázatnak?
-
[CS]Blade2
addikt
válasz
[CS]Blade2 #54505 üzenetére
=SZUMHA(D13:D16;">0")
Ez így jó lenne, hogy ne zavarja #HIV! cellák jelenléte?Nekem sincs előttem, de gondolom máskor is kellhet ilyen.
-
[CS]Blade2
addikt
Van 4 cella:
=KIMUTATÁSADATOT.VESZ("Tökmindegy";'Nagy Ferenc'!$A$3;"Hónap (kezdete)";2)
=KIMUTATÁSADATOT.VESZ("Tökmindegy";'Nagy Ferenc'!$A$3;"Hónap (kezdete)";3)
=KIMUTATÁSADATOT.VESZ("Tökmindegy";'Nagy Ferenc'!$A$3;"Hónap (kezdete)";4)
=KIMUTATÁSADATOT.VESZ("Tökmindegy";'Nagy Ferenc'!$A$3;"Hónap (kezdete)";5)Alatta az 5. cellában SZUM-al össze akarom adni. Csakhogy az elsőnek van már értéke, mert egy létező összeg rész a kimutatásban, de a másik 3-nak még nincs, így azok most még #HIV! -el vannak, de majd lesz értéke az idő előrehaladtával.
cellákban egyébként:
[ó]:pp
van, ilyen 95:30 értékek.Na most hogy tudom összeadni, hogy ne #HIV! -et adjon eredménynek, hanem azokat adja össze, aminek már van értéke?
B kérdés:
Lehet, hogy van jobb ötlet. A lényeg, hogy kimutatásban vannak ilyen cellák, és össze kellene adni a 2-3-4-5-öt, a 6-7-8-9-et, a 10-11-12-t, ráadásul másik munkalapon. Simán ugye nem megy, mert ezek kibontható hónapok.Én erre gondoltam, hogy =KIMUTATÁSADATOT.VESZ -el odaviszem, és ott összeadom valami SZUMHA-val, de azt hittem, hogy 0:00 lesz ami még nincs meg.
-
Fferi50
Topikgazda
válasz
Lasersailing #54502 üzenetére
Szia!
A hiperlink/hiperhivatkozás sajnos nem szöveg! Az indirekt függvény szöveget vár, tehát olyan cellát kell megadnod forrásként, amiben szöveg van.
Az aposztrófra szükség van akkor, ha nem egytagú a munkalap/fájl neve és be is kell zárni a felkiáltójel előtt.
Ha hiperhivatkozás a külső fájlra mutat, akkor az indirekt csak akkor ad eredményt, ha a hivatkozott fájl is meg van nyitva, egyébként hibaértéket ad vissza.
Üdv. -
Lasersailing
senior tag
válasz
Fferi50 #53973 üzenetére
Sziasztok,
A megválaszolt HSZ-ben segített nekem FFeri korábban indirect függvényt használni, de sehogyan sem sikerül ismét alkalmaznom, ebben kérnék segítséget:
=COUNTA(INDIRECT(CQ7 & "!A:A"))
Az Aoszlopban kitöltött cellák számát szeretném megkapni, de sehogy sem akar működni. A sheet neve a CQ7-es cellában található: '6AA-0-3-0E07 Rev A
Az aposztróf lehet a gond, de máshol az nem okozott gondot...Még egy dolog jut eszembe: A CQ7 egy hiperlinket tartalmaz az adott sheetre. ez lehet gond?
-
föccer
nagyúr
Pont operátort még a céges excel nem ismeri. Pont operátor nélkül brutális terhelést adott a gépnek, ha a teljes oszlop volt megadva tartománynak, viszont lekorlátoztam a képletben a tartományokat, így mér szépen dolgozik és visszaadja amit kell.
Köszönöm szépen a segítséget.
üdv, föccer
Új hozzászólás Aktív témák
Hirdetés
- C# programozás
- Suzuki topik
- Bambu Lab 3D nyomtatók
- Házimozi haladó szinten
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- VR topik
- Hamarosan rézhiánytól szenvedhet az egész chipgyártás
- Eredeti játékok OFF topik
- Fókuszban a One UI 8 és a biztonság
- További aktív témák...
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Eladó Steam kulcsok kedvező áron!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- ÁRGARANCIA!Épített KomPhone i9 14900KF 32/64GB RAM RTX 5070Ti 16GB GAMER PC termékbeszámítással
- AKCIÓ! Lenovo Thinkpad P15 Gen1 15 FHD notebook - i7 10750H 16GB RAM 512GB SSD Quadro T1000 W11
- NYÁRI BOMBA AKCIÓK! STEAM, UBISOFT CONNECT, EA APP, XBOX EREDETI KULCSOK 100% GARANCIA
- Bomba ár! HP EliteBook 2560P - i5-2GEN I 4GB I 320GB I 12,5" HD I W10 I Garancia!
- HATALMAS AKCIÓK! GARANCIA, SZÁMLA - Windows 10 11, Office 2016 2019 2021,2024, vírusírtók, VPN
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest