- Redmi Note 13 Pro 5G - nem százas, kétszázas!
- Milyen okostelefont vegyek?
- Google Pixel 9 Pro XL - hét szűk esztendő
- One mobilszolgáltatások
- Samsung Galaxy S25 - végre van kicsi!
- 45 wattos vezeték nélküli töltés jön az új iPhone-ba
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Fotók, videók mobillal
- iPhone topik
- Motorola Edge 50 Neo - az egyensúly gyengesége
-
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
-
Mutt
senior tag
válasz
ny.janos #53684 üzenetére
Szia,
Megnéztem a fájlt és zavaró, hogy a sorrend változik egyszerű műveletek után, de ez nem hiba, hanem a rendszer műkődésének "terméke". Már 2018-ban is panaszkodtak erre ahogy most keresgéltem és azóta nincs változás. Ahogy korábban beszéltünk róla, ha fontos a sorrend, akkor az utolsó lépés(ek)ben kell elintézni.
Az okosok szerint ez azért történhet meg, mert az optimalizáció jegyében a Power Query nem mindig abban a sorrendben hajtja végre az átalakításokat mint ahogy a lépések/a felhasználói logika adja.
A legtöbben a Table.Buffer-t (ami a memóriába teszi az adott lépés eredményét, ezzel felgyorsítva az elérését az adatoknak később) javasolják. A puffereléshez elő kell állítani a kész eredményt, nem fog tudni menetközben kavarni.
A mintádban az utolsó kibontás előtti lépés került memóriába és tényleg utána nem változik a sorrend. Ha hamarabb teszem RAMba az adatokat, akkor már megint van kavarás.
Még egy dolgot módosítottam, hogy te is szokd/gyakorold a tábla kibontást másik módon. A 13. lépésed a "Mérkőzés indexszámmal" táblák kibontása/egyesítése. Ezt a GUI-ról könnyen el lehet végezni, de 2 problémája van:
- fixen rögzíti az oszlop neveket amikkel dolgozni fog és
- elveszíted az oszlopok adattítpusát
Láthatod hogy egyik korábbi oszlopnak sincsen típusa.Helyette lehet használni a Table.Combine-t.
A teljes M-kód:let
Forrás = Excel.CurrentWorkbook(){[Name="Eredmenyek"]}[Content],
#"Típus módosítva" = Table.TransformColumnTypes(Forrás,{{"Forduló száma", Int64.Type}, {"Versenyző sorszám", Int64.Type}, {"Mérkőzés száma", Int64.Type}, {"Hazai/vendég", type text}, {"Versenyző", type text}, {"Csapat", type text}, {"Teli 1-25", Int64.Type}, {"Össz 1-50", Int64.Type}, {"Teli 51-75", Int64.Type}, {"Össz 51-100", Int64.Type}}),
#"Sorok szűrve" = Table.SelectRows(#"Típus módosítva", each ([#"Össz 51-100"] <> null)),
#"Érték felülírva" = Table.ReplaceValue(#"Sorok szűrve",null,0,Replacer.ReplaceValue,{"Teli 1-25", "Össz 1-50", "Teli 51-75", "Össz 51-100"}),
#"Összeadás beszúrva" = Table.AddColumn(#"Érték felülírva", "Teli", each [#"Teli 1-25"] + [#"Teli 51-75"], Int64.Type),
#"Összeadás beszúrva1" = Table.AddColumn(#"Összeadás beszúrva", "Összesen", each [#"Össz 1-50"] + [#"Össz 51-100"], Int64.Type),
#"Kivonás eredménye beszúrva" = Table.AddColumn(#"Összeadás beszúrva1", "Tarolás", each [Összesen] - [Teli], Int64.Type),
#"Oszlopok eltávolítva" = Table.RemoveColumns(#"Kivonás eredménye beszúrva",{"Teli 1-25", "Össz 1-50", "Teli 51-75", "Össz 51-100", "Teli"}),
#"Sorok rendezve" = Table.Sort(#"Oszlopok eltávolítva",{{"Forduló száma", Order.Ascending}, {"Mérkőzés száma", Order.Ascending}, {"Összesen", Order.Descending}, {"Tarolás", Order.Descending}}),
#"Sorok csoportosítva" = Table.Group(#"Sorok rendezve", {"Forduló száma", "Mérkőzés száma"}, {{"Mérkőzés", each _, type table [Forduló száma=number, Versenyző sorszám=number, Mérkőzés száma=number, #"Hazai/vendég"=text, Versenyző=text, Csapat=text, #"Teli 1-25"=nullable number, #"Össz 1-50"=nullable number, #"Teli 51-75"=nullable number, #"Össz 51-100"=number, Csere=any]}}),
#"Egyéni oszlop hozzáadva" = Table.AddColumn(#"Sorok csoportosítva", "Mérkőzés indexszámmal", each Table.AddIndexColumn([Mérkőzés], "Index", 1, 1, Int64.Type)),
#"Többi oszlop eltávolítva" = Table.SelectColumns(#"Egyéni oszlop hozzáadva",{"Mérkőzés indexszámmal"}),
Combine = Table.Combine(#"Többi oszlop eltávolítva"[Mérkőzés indexszámmal]),
#"Feltételes oszlop hozzáadva" = Table.AddColumn(Combine, "Egyéni pont", each if [Index] <= 4 then 1 else 0),
#"Egyesített lekérdezések" = Table.NestedJoin(#"Feltételes oszlop hozzáadva", {"Versenyző sorszám", "Forduló száma", "Mérkőzés száma"}, Manualis_info, {"Versenyző sorszám", "Forduló száma", "Mérkőzés száma"}, "Manualis_info", JoinKind.LeftOuter),
Buffer = Table.Buffer(#"Egyesített lekérdezések"),
#"Kibontott Manualis_info" = Table.ExpandTableColumn(Buffer, "Manualis_info", {"Manuális információ"}, {"Manuális információ"})
in
#"Kibontott Manualis_info"
üdv
-
bozsozso
őstag
válasz
ny.janos #53670 üzenetére
Köszi a javaslatot, ezt is megnézem. Úgy látom hogy alapvetően minden esetben annál a kb. 10 oszlopnál meg kell csinálnom az átalakítást. Az excel spec. beállítások módosítása meg azért nem jó, mert folyamatosan állítgatnom kell. Mindegy akkor megcsinálom mindig az átalakítást valamelyik módszerrel.
-
Mutt
senior tag
válasz
ny.janos #53610 üzenetére
Szia,
BCTI videója hasznos volt nekem is, a lényegét tudtam eddig Marco Russo-tól, de itt jobban ki lett fejtve.
...Van egyáltalán összefüggés az adatmodellbe töltés és a sorbarendezés között?..
Van. Amikor adatmodell-be teszük az adatokat, akkor egyben a hatákonyság növelése miatt tömörítve lesznek. Az oszlopokat külön-külön tárolja (tabular format) és tömöríti a Vertipaq engine.
A videóban a tömörítés típusait is elmagyarázzák, de a lényeg az hogy az ismétlődések csak egyszer kerülnek letárolásra és ha sok ismétlődés van akkor nagyot lehet itt nyerni.A sorbarendezésre viszont ez a tömörítés károsan fog hatni, mivel elvesztjük az "egyedi értékek" tárolásakor a sorrendet. Ami azért nem gond amikor dolgozunk az adatmodellel, mert a képletek/kapcsolatok nem sorrend szerint dolgoznak hanem tartalom/érték alapján (pl. lényegtelen hogy amikor megszámoljuk vagy összeadjuk az értékeket, akkor azok növekvő vagy csökkenő sorban vannak, az eredmény ígyis-úgyis ugyanaz). A videóban 9:10 körül ugyanezt mondják.
A videóban az eredeti problémára/kérdésre a megoldás szerintem az, hogy amikor a Vertipaq rendszer újra összerakja a tömörített táblákból az eredményt, akkor azzal a táblával kezd ahol a legkevesebb egyedi érték volt és rakja mellé az egyre több értékeket tartalmazó táblákat. Az ottani példában valószínű a régió (Region) volt a legkevesebb elemű (talán 4 db) , aztán a jön a termék (product) és utánna az állam (state) és így tovább.
A sorbarendezés termeszetesen fontos dolog nekünk embereknek, így kell és használjuk is, de csak ott ahol van értelme. Vagyis:
1. a végső eredmény (CSAK Excel munkalapra töltés esete ez, Power BI esetén vizualizációk esetén teljesen felesleges) előállításakor az utolsó lépésben,
2. olyan köztes lépéseknél amikor fontos a sorrend, pl. egy olyan csoportosítás előtt amikor nem csak összegzünk hanem az összes adatot is beletesszük a csoportosításba és abból mondjuk a legelső sort akarjuk kiemelni/tovább vinni. pl. a fenti videóban ha tudni szeretnénk termékenként az utolsó államot ahol eladtuk azt, akkor ha dátum szerint csökkenő sorba rendezünk, majd termék alapján csoportosítunk akkor a belső táblában az első rekord a legrissebb eladás adatait fogja tartalmazni termékenként.Amivel furcsasággal találkozom az hogy adatmodellbe töltéskor nem csak a sorok, de az oszlopok sorrendjét is elveszítem. Céges fájlban van kb. 400 ezer sor és vagy 60 oszlop, de Kimutatás/Pivot kibontásakor mindig ABC sorrendben jönnek az oszlopok.
üdv
-
Mutt
senior tag
válasz
ny.janos #53561 üzenetére
Szia,
Egy trükk, hogyan tudod a számokat kinyerni egy vegyes adatsorból.
Az M-kód pedig:let
Forrás = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Forrás, "Számok",
each
Text.Trim(
List.Accumulate(Text.ToList([Adat]),
"",
(s, c) => if Text.Contains("0123456789- ", c) then s & c else s)
)
, type text)
in
#"Added Custom"
Ezzel a kódodban kb. 10 lépést (kb. Érték felülírva - Oszlopok eltávolítva3 részt) tudsz megspórolni.
üdv
-
bela85
aktív tag
válasz
ny.janos #53561 üzenetére
Köszönöm! Mára végeztem és nincs előttem a tábla, de holnap, ahogy időm engedi kipróbálom. Remélem tényleg a 2016-os verzióban is megvannak ezek a függvények.
A számlaszámok átalakítását meg akár makróval, akár "kézzel" manuálisan meg fogom tenni, (végülis egyszer kell megtenni és utána már ezt a formátumot tartani.) -
válasz
ny.janos #53560 üzenetére
Bravo, szép megoldás!
Bevallom PQ meg sem fordult a fejemben (ritkán használom, de majd téli éjszakákon belemélyedek jobban)Most már csak az van, hogy a kibővített számlaszámokat a forrás- és cél oszlopban is lecserélni ill. (ha időd engedi) egységes formátumra/kinézetre hozni a cellákat (ne mindenféle elválasztó legyen, hanem csak pl. kötőjel stb stb)
Akkor ebbe már nem keverünk bele makrót.
Én is szívesen venném, ha leírnád a menetét, hasznos lenne, számomra biztosan.
-
bela85
aktív tag
válasz
ny.janos #53551 üzenetére
Annyiból tetszik ez a megoldás, hogy megmutatná, hogy hol van az azonosság, és utána nem kéne azt külön bogarászni.
Bocsánat, hogy itt egyben válaszolok mindenkinek.
Nos, a számlaszámok mindig kötőjellel vannak elválasztva, maximum előtte a név,bank lehet, hogy ott nincs kötőjel, vagy szóköz.
A számlaszám egyezésnél fontos lenne az úgymond teljes egyezés, de pl: van olyan bankszámlaszám a táblámban ahol csak 2x8 karakterként lett felvíve az egyik helyen, a másik helyen ugyanaz 3x8 karakterként, mert az utolsó 8 karakter nyilván a 8db nulla. (na itt nyilván jó lenne, ha a 2x8 karakter miatt érzékelné, hogy az ugyanaz a két számla, de pl ahol 3x8 számból áll egy számlaszám, ott nem elegendő a 2x8 karaktert vizsgálni. -
válasz
ny.janos #53551 üzenetére
Ezt újra kell gondolnod, nem pedig tovább, mert hibás a dolog...
Az első sorban szereplő 24 számjegyű számlaszám csak 1x szerepel, nem 3x...
Az 1,3,7 sor azt a 24 jegyű számlaszámot nem tartalmazza.Sajnos a makrómat is kukázni lehet, mert ha valóban így néznek ki az adatok (és nem csak tesztelés miatt hoztad létre), hogy még a számlaszámok formátuma is el van baszarintva, nem egységes (különböző elválasztók, egybe is van írva stb)), akkor oldja meg az a vadegér, aki ezt így összehozta...
-
válasz
ny.janos #53548 üzenetére
Module1 kód
Option Explicit
'Fire/SOUL/CD - 2024
Public Function Fire_BankAccount_FX(MyCell As Variant) As String
'MyCell -> forrás cella címe (amit fel kell dolgozni)
'elválasztó karakter (itt kötőjel),
'ezzel vannak elválasztva számalászom 8-as csoportjai a cellá(k)ban
Const MYDELIMITER = "-"
'szöveg típusú dinamikus tömb
Dim MyStringArray() As String
'ciklusszámláló
Dim i As Long
'ebben hozzuk létre a cellákból kiszedett számlaszámot
Dim BankAccount As String
'FELOSZTÁS függvény segítségével, a MYDELIMITER paraméterrel tömböt hozunk létre
MyStringArray = Split(MyCell.Value, MYDELIMITER)
BankAccount = ""
For i = 0 To UBound(MyStringArray)
'eltávolítjuk a felesleges szóközöket a szöveg jobb- és bal oldaláról
MyStringArray(i) = Trim(MyStringArray(i))
'egy számlaszám 8-as csoportja akkor érvényes
'ha 8 karakter hosszú és számként lehet értelmezni
'(0-9 karaktereket tartalmazhat, mást nem)
If (Len(MyStringArray(i)) = 8) And (IsNumeric(MyStringArray(i))) Then
BankAccount = BankAccount + MyStringArray(i) + MYDELIMITER
End If
Next i
'számlaszám végén mindig keletkezik egy felesleges kötőjel karakter, töröljük
BankAccount = Left(BankAccount, Len(BankAccount) - 1)
'függvény visszaadja a megtalált, érvényes formátumú számlaszámot
Fire_BankAccount_FX = BankAccount
End Function
Ez a makró függvény(másolható) semmi mást nem tesz, csak az adott cellából kiszedi a számlaszámokat. Innentől hagyományos keresőképletekkel kivitelezhető, hogy a keresési tartományban lévő cellák melyike tartalmazza az adott számlaszámot.
-
Mutt
senior tag
válasz
ny.janos #53237 üzenetére
Szia,
Tegnap küldtem hibajelentést a Microsoftnak, hogy Excel Power Query-ben nem műkődik jól a sorbarendezés ékezetes betűk esetén. Meglátjuk, hogy mikor lesz belőle vmi.
Amivel próbálkoztam és háthat segítség neked:
1. Power BI Desktop-ban jó a rendezés, M-kód teljesen azonos. Pár perc alatt megvagy ott vele.
2. Ha átmenetileg lecseréljük az ékezetes betűket az ékezetesmentes változatukkal és úgy rendezünk, akkor jobb eredményünk lesz, de ez sem tökéletes.
Ezt simán a GUI-val is meg lehet csinálni többlépéssel, de itt egy list-et tartalmazó változat.
Van két segédlistám, ABCIn és ABCOut tartalmazza az ékezetes betüket és azok ékezetmentes változatát. Az M-kódjuk:= {"á", "é", "í", "ó", "ö", "ő", "ú", "ü", "ű"}
= {"a", "e", "i", "o", "o", "o", "u", "u", "u"}
Az Excel lapról jön a lista, amihez egy új oszlopot adtam amelynek a képlete:
=Text.Combine(
List.Transform(Text.ToList(Text.Lower([Nevek])),
each try ABCOut{List.PositionOf(ABCIn, _)} otherwise _)
)
A képlet legelőször kisbetűsre alakítja az eredeti szöveget, majd betűnként felszabdalva listába teszi. Ezen a listán végigmegyünk és ott ahol ékezetes betűt találunk lecseréljük a megfelelőre, a többi értéket nem változtatjuk. A végén az egészet összefűzzük.Az új oszlop alapján sorbarendezünk, utána törölhető az oszlop.
A teljes M-kód:
let
Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Added Custom" = Table.AddColumn(Source, "Sorrendhez", each Text.Combine(
List.Transform(Text.ToList(Text.Lower([Nevek])),
each try ABCOut{List.PositionOf(ABCIn, _)} otherwise _)
)
),
#"Sorted Rows" = Table.Sort(#"Added Custom",{{"Sorrendhez", Order.Ascending}}),
#"Removed Columns" = Table.RemoveColumns(#"Sorted Rows",{"Sorrendhez"})
in
#"Removed Columns"üdv
-
Fferi50
Topikgazda
válasz
ny.janos #53225 üzenetére
Szia!
Az Excelben is rendezhetsz több szinten.
" első 4 oszlop az első oszlop alapján, míg az 5-8 oszlop az 5. oszlop alapján van rendezve."
Ezt nem egészen értem. Tehát külön rendezed az első 4 oszlopot és külön a második 4 oszlopot, akkor hogyan függ össze a 8 oszlop?
Egyébként Excelben is működik, hogy kijelölöd az első 4 oszlopot, rendezed az első oszlop szerint, majd kijelölöd a második 4 oszlopot és rendezed az ottani első -azaz 5.- oszlop alapján. Nem kell emiatt kettészedni az eredményt.
Üdv. -
ny.janos
tag
válasz
ny.janos #53053 üzenetére
Bár a kérdésem korábban már megválaszolásra került itt a fórumban, ma pont ezen problémát taglaló videóba futottam bele, ezért gondoltam érdekességképpen megosztom (bár nem tudom hányan foglalkoznak a jelenlévők közül behatóbban a PQ-vel, Muttnak pedig úgysem fogok újat mondani).
-
Mutt
senior tag
válasz
ny.janos #53053 üzenetére
Szia,
Cseréld le erre az átlag számítást:
=Table.AddColumn(#"Oszlop elforgatva", "Átlag", each List.Average(List.Range(Record.ToList(_), 3, List.Count(Table.ColumnNames(#"Oszlop elforgatva")))), type number)
Annyi, hogy a fenti képletben a 3-as azt jelenti, hogy ennyi oszlop van az eredmények előtt (a mintád szerint).
üdv
-
Fferi50
Topikgazda
válasz
ny.janos #53053 üzenetére
Szia!
Változóba kell tenned az oszlopok számát, amelyet a fordulók szerint hozhatsz létre, mielőtt "ráengednéd" a munkatáblára.
Pl. egy lehetőség:Sub oszlopos()
Dim fordulo As Integer, xvalt As Integer
Dim fordulas As String
M_kod = "= Table.AddColumn(#""Oszlop elforgatva"", ""Átlag"", each List.Average({oszlopszam}), type number)"
fordulo = 14 ' pl. Range("A1").Value
For xvalt = 1 To fordulo
fordulas = fordulas & "[" & xvalt & "],"
Next
fordulas = Left(fordulas, Len(fordulas) - 1)
M_kod = Replace(M_kod, "oszlopszam", fordulas)
MsgBox M_kod & vbLf & vbLf & fordulas
End Sub
A lényeg, hogy az oszlopszam szöveg helyére be fog cserélődni a tényleges oszlopoknak megfelelő névlista.
A fordulók számát veheted az eredménytáblára beírva egy cellából (mint a kommentben van, beírhatod a futás előtt, vagy bekérheted Inputbox-szal.
Az MsgBox természetesen a vizuális ellenőrzés érdekében van most benne.
Üdv.
Ps. Bocs a változónevek esetlegesek lettek, alakítsd a saját ízlésednek megfelelően. -
Mutt
senior tag
válasz
ny.janos #52804 üzenetére
Szia,
..fogalmam nincs, hogy miért csinálja azt, amit.
Én sem tudom megmondani, hogy miért csinálja a kibontásnál az átrendezést.Amit én javaslok, hogy a csoportositás után egyből nyerd ki a nyertes és vesztes adatait közvetlen hivatkozással. A tábla első sorára, ahol a nyertes van, [Páros]{0}-val, a vesztesre pedig [Páros]{1}-el tudsz hivatkozni. Oszlopnév megadással mélyebbre tudsz menni, pl. [Páros][Név]{0} a nyertes nevét adja.
A teljes M-kód:
let
Forrás = Excel.CurrentWorkbook(){[Name="Táblázat1"]}[Content],
#"Típus módosítva" = Table.TransformColumnTypes(Forrás,{{"Név", type text}, {"Páros sorszám", Int64.Type}, {"Teli", Int64.Type}, {"Tarolás", Int64.Type}, {"Összes", Int64.Type}, {"Üres", Int64.Type}}),
#"Sorok rendezve" = Table.Sort(#"Típus módosítva",{{"Páros sorszám", Order.Ascending}, {"Összes", Order.Descending}, {"Teli", Order.Descending}, {"Tarolás", Order.Descending}, {"Üres", Order.Ascending}}),
#"Sorok csoportosítva" = Table.Group(#"Sorok rendezve", {"Páros sorszám"}, {{"Adatok", each _, type table [Név=nullable text, Páros sorszám=nullable number, Teli=nullable number, Tarolás=nullable number, Összes=nullable number, Üres=nullable number]}}),
NyertesAdatok = Table.AddColumn(#"Sorok csoportosítva", "NyertesAdatok", each [Adatok]{0}),
VesztesAdatok = Table.AddColumn(NyertesAdatok, "VesztesAdatok", each [Adatok]{1}),
#"Kibontott NyertesAdatok" = Table.ExpandRecordColumn(VesztesAdatok, "NyertesAdatok", {"Név", "Teli", "Tarolás", "Összes", "Üres"}, {"Nyertes Név", "Nyertes Teli", "Nyertes Tarolás", "Nyertes Összes", "Nyertes Üres"}),
#"Kibontott VesztesAdatok" = Table.ExpandRecordColumn(#"Kibontott NyertesAdatok", "VesztesAdatok", {"Név", "Teli", "Tarolás", "Összes", "Üres"}, {"Vesztes Név", "Vesztes Teli", "Vesztes Tarolás", "Vesztes Összes", "Vesztes Üres"}),
#"Típus módosítva1" = Table.TransformColumnTypes(#"Kibontott VesztesAdatok",{{"Nyertes Név", type text}, {"Nyertes Teli", Int64.Type}, {"Nyertes Tarolás", Int64.Type}, {"Nyertes Összes", Int64.Type}, {"Nyertes Üres", Int64.Type}, {"Vesztes Név", type text}, {"Vesztes Teli", Int64.Type}, {"Vesztes Tarolás", Int64.Type}, {"Vesztes Összes", Int64.Type}, {"Vesztes Üres", Int64.Type}})
in
#"Típus módosítva1"üdv
-
Fferi50
Topikgazda
válasz
ny.janos #51836 üzenetére
Szia!
Nézd meg a következőt:
1.Kijelölöd a szükséges területet. Ezután jobb egérgomb - cellaformázás - szám - 2 tizedes - OK
2.Marad a kijelölt terület - Kezdőlap - Feltételes formázás - új szabály - a formázandó cellák kijelölés képlettel - a képlet: =MARADÉK(A1;1)=0
Lenyomod a formátum gombot. Kiválasztod a szám fület - majd a Szám-ot és a tizedest 0-ra állítod:
OK és ismét OK.
A képen láthatod az eredményt is.
Üdv.
-
vince
őstag
válasz
ny.janos #50543 üzenetére
Köszi, a billentyűkombók nagyjából megvannak, nekem kifejezetten az egérgörgővel történő kijelölésbővítésre lenne szükségem, de ha nem tud ilyet az Excel, akkor nincs mit tenni, nem tudja
Csak azért furcsa ez, mert eddig nem nagyon találkoztam olyan programmal (általánosabb célú, nem valami spéci célszoftver), amiben ez a funkció ne működött volna, például a Wordben is megy ugyanez, táblázat esetén is.
-
Pá
addikt
válasz
ny.janos #50547 üzenetére
Mindenképp jó, hogy megosztod. A PQ bevallottan egy vakfoltom, biztos, hogy nem használom eleget és szerintem ezzel nem is vagyok egyedül, szóval hasznos, ha néha felhívják rá a figyelmem.
És ha makrós megoldás nem működik, akkor ebbe az irányba indultam el, de ebben a helyzetben ez most egyszerűbb és jobban passzol a file többi részéhez.Ezzel együtt köszönöm mindenkinek, aki időt szánt a problémámra, akár írt végül, akár csak magában gondolkozott rajta.
Már az évek alatt sokszor írtam, hogy ez az egyik legjobb topic a PH!-n, mert mindig kapok legalább 1 megoldást olyasmira is, amire nem is feltétlenül reméltem, hogy lesz és még tanulok is közben. -
Pá
addikt
válasz
ny.janos #50531 üzenetére
+Mutt
Ahh, bocsánat, azt hiszem félreérthető voltam. Sajnos a szöveg egyáltalán nincs ilyen szépen tagolva, záró- és kötőjelekkel. Azt csak azért írtam be, hogy nagyjából tudják mi áll a szövegben, de sajnos nem struktúrált semennyire, kb random szövegből áll. Ez a fő baj.Az egyetlen ismétlődő és sosem változó elem az a | jel és utána az időbélyeg.
| 2023-01-17 14:53:30 +0100:De közben eszembe jutott egy lehetséges megoldás, csak technikailag nem tudom megvalósítani.
VBA macroval meg lehetne oldani, a következőt?1. Keresse meg a kulcsszót a cellában. ("ellenőrzés").
2. Keresse meg a kulcsszótól jobbra és balra eső első | jelet. És a két | jel közötti szöveget vágja ki és tegye át a szomszédos cellába.Így két oszlopom lenne. Az egyikben csak a rendes project munka szerepelne, a másik oszlopban csak az ellenőrzés. Innentől pedig nagyon könnyű lenne számolgatni mindkettővel külön-külön.
Nem tudom a fenti megvalósítható-e, de talán így lehetne legjobban kihúzni a fogát a feladatnak. -
TillaT
tag
válasz
ny.janos #50530 üzenetére
Szia!
Köszönöm, én is ezzel próbálkoztam, de nekem nem működött, amikor kijelöltem a tartományt. Aztán próbálkoztam úgy is, hogy csak egy sorra jelöltem ki, majd arról ecsettel átmásoltam az egész tartományra. Akkor előfordult, hogy működött. Pedig előtte minden formázást töröltem a munkalapról. Nagyon dühített, ezért gép kikapcsolás, vacsora és újra nekifutottam. Most már úgy működik, ahogy kell.
Egész nap makróztam. valószínűleg az agyam is és a gépem is nagyon lezsibbadt már reggel 5 óta.
Még egyszer köszönöm a választ.
Szép estét és hétvégét!
Üdv -
BigBadPlaYeR
senior tag
válasz
ny.janos #48750 üzenetére
Igen, pontosan erre az esetre szolgálna a dolog
És első teszt alapján egész jól működik is. Nekem megette az Érvényesítésnél a
=NEM(ÜRES(A1))
feltételt. És még a LibreOffice is lekezelte! A gond csak a legutolsó cellánál van, mert azt még így is üresen hagyhatják. De a többi legalább működiklappy-nak is köszönet a válaszért!
-
Brandynew
őstag
válasz
ny.janos #48709 üzenetére
Ez az ÖSSZES.TŐKERÉSZ függvény nagyon menő, eddig nem ismertem, de most gyakran fogom tudni használni.
Rátaláltam egy másikra is, ha jól értem, ezzel azt lehet megcsinálni, hogy kiírja, hogy adott hónapban mennyi a kamat rész a törlesztőrészletből.
Így próbálom:
=ÖSSZES.KAMAT(3,79/12;3,79*12;83770;11;11;0)
Azért 11;11, mert a 11. hónapban járok a törlesztéssel. Viszont valami nem jó, 1326 Ft-tal kevesebbet ír.
Mit nem csinálok jól? Köszönöm előre is!
-
-
ny.janos
tag
válasz
ny.janos #47741 üzenetére
Ha az oszlopaidra nem igazak az általam feltételezettek, akkor az én megoldási javaslatom az alábbi:
1. A táblázatod munkalapját (neve az én példámban eredeti) másold le egy új munkalapra (neve az én példámban masolat).
2. Minden adat kijelölése utánCtrl+G
, irányított, állandók-at pipálod csak be, majd delete gomb.
3.Alt+.
4. Teljes tartományt kijelölöd, Ctrl+H, az egyenlőségjeleket cseréled valami olyan karaktersorozatra (az én példámban ###, ami garantáltan nem fordul elő egyik képletedben sem.
5. Új munkalapon A1 cella képletének megadod a következőt (szintén kell a végére egy speciális karakersorozat, ami nem szerepel a képleteidben - én másikat használtam - &&&& -, mint előbb, de akár azonos is lehet):=HA(ÜRES(masolat!A1);eredeti!A1;"=HAHIBA("&HELYETTE(masolat!A1;"###";"=")&";&&&&)")
6. A teljes tartományt kijelölöd ezen a munkalapon és csere funkcióval cseréled az utóbbi karaktersorozatot - &&&& - két darab idézőjelre (így lesz a hiba esetén üres a cellád).
7. Kijelölöd a teljes tartományt, másolást követően beilleszted egy jegyzettömbbe, majd onnan kimásolva visszailleszted az eredeti munkalapodra.
8. A segéd munkalapokat törlöd. -
rvn_10
senior tag
válasz
ny.janos #47491 üzenetére
A cégnél a megmunkáló rész 4 részre van osztva, ebböl a 4 tablabol kellenek nekem az adatok. Cikkszamok vannak a sorok ban es az oszlopokban a tervdb szam a jó db szam es a selejt. Első felallásban a terv dszamokat kellett áthozni az én táblámba a hozza tartozo cikkszámokhoz, most az uj felallas a tény dbszamok kellenek, de azok már nem abba a sorba vannak ahol a cikkszám hanem 1el lejebb.
-
Sasos
senior tag
válasz
ny.janos #47310 üzenetére
Szia!
Köszi a választ. Ha ennyire egyszerű lenne...
HTML kódot kell összefűznöm ami tartalmaz idézőjelet is. Vagyis az összefűzött szövegben van idézőjel.
A JOBB HOSSZ-1, BAL HOSSZ -1 simán működik. csak reméltem, hogy van erre valami beállítás, amivel elkerülhető, hogy odategye azokat a fránya idézőjeleket... -
bela85
aktív tag
-
bela85
aktív tag
válasz
ny.janos #45784 üzenetére
Szia!
Nem teljesen értettem a dolgot.. ezért dobok fel egy fiktív adatokkal levő "rövidített" táblát.
Tehát vmi olyasmi lenne a lényeg, hogy a Krit.Fő.állapot amit szűrnék elsőre, hogy az összes IGEN, TALÁN állapotút szeretném venni (ez az amit mindig nézek), és úgy hogy, aki ott IGEN, TALÁN azután nézem, hogy a Krit.1. állapotot, hogy ott is IGEN legyen, majd nézem a Krit.2. állapotot, hogy IGEN legyen, és így tovább..de nyilván aki mindkettőnek megfelel nem számolnám duplán, hanem csak 1x. (tehát aki a Krit.1. állapotban is IGEN és aki a Krit.2. állapotban is IGEN).
Egyedül a Krit.Fő.állapotban van több változó ami miatt korábban kellett a tömbfüggvény, a többiben csak IGEN, NEM érték van)Az már más tészta, hogy utána még ezeket szűrném, hogy férfi vagy nő külön-külön. (de azt már nem nehéz megoldjam)
Köszi előre is a segítséget!
-
bela85
aktív tag
válasz
ny.janos #45729 üzenetére
Szia!
A korábbi táblás feladathoz egy újabb probléma társult amit nem igazán tudtam megoldani, ahogy korábban is volt hogy több oszlopban krétium van amikben "Igen, nem, talán," részek vannak. Hogy lehetne megoldani, hogy ne csak 1 oszlop kritériumát nézze hanem több oszlopét is.. ez összeágyazott Darabhatöbb függvénnyel megy, de van olyan aki mindkettő feltételbe is megfelel, őket meg összeadja.. pedig csak 1x kéne szerepelnie... ezt ki lehet valahogy küszöbölni?
(remélem érthető amit leírtam..siettem)
-
DeFranco
nagyúr
válasz
ny.janos #44922 üzenetére
köszönöm, ezt eddig én is összeraktam, az IGAZ/HAMIS műveleti trükk is megvan
ami nekem kimaradt, hogy ezt tömbfüggvényként írjuk be (bár gyanús volt, de gondoltam ha így lenne, lenne jezelve is) így már érthető az is, hogy lesz egy tömbünk egyesekkel és #zéróosztókkal
a paraméter elhagyás szintén megvolt, az is hogy ezzel a keresési értékhez mérten legnagyobb kisebb-vagy-egyenlő számot keresi meg
az is megvan hogy array módban a fenti találat pozícióját adja vissza az érték helyett.
de az nem világos, hogy ebben az esetben {1,1,1,1,1,#,#,#,#} miért pontosan az utolsó találat pozícióját adja, miért nem az elsőét vagy bármelyik másikét a (szükségszerűen) egyenlő értékek közül
egyébként mindig elvarázsol hogy excelben mit össze lehet bűvészkedni a képleteken belül logikai műveletekkel, tömbökkel és keresőfüggvényekkel, egyszerűen hihetetlen hogy szinte mindent le lehet írni egy függvénnyel és akkor még a makróba bele sem nyúltunk. dolgozok vele vagy 20 éve de nekem ez még mindig mesevilág csodaföldjén.
-
3DFan
aktív tag
válasz
ny.janos #42320 üzenetére
Köszönöm!
Oszlop adatait összesítem, egy cellába beírom mely oszlopról van szó aktuálisan (pl. G1).
Az oszlopokba utólag még adatok kerülnek. Szeretném feltételes formázni az aktuális
oszlopot, a formázás kövesse az oszlop kiterjedését. Én dinamikus tartományokat hoztam létre az oszlopokra külön-külön, majd ezek neveit adtam meg a feltételes formázásnál. Ha pl. az első oszlopot összesítem, akkor az első oszlop dinamikus tartomány neve a formázandó
terület, tehát annyi tartomány ill. formázás szükséges ahány oszlop van. Megoldható egy
képlettel a dolog? -
bara17
tag
-
ny.janos
tag
válasz
ny.janos #42264 üzenetére
Hozzáteszem az általam javasolt segédoszlopos megoldás is adhat olyan eredményt, ami nem biztos, hogy megfelel az elvárásnak. Ha ugyanis egyazon dátum pl. kétszer szerepel egymás alatt, előbb 0, majd 1-es C oszlopbeli értékkel, úgy magát a keresett dátumot kapod eredményül, a másodikként szereplő C oszlopbeli 1-es miatt. Azonban lehet, hogy ilyen esetben te azt szeretnéd, hogy a következő dátumot adja vissza, ahol 1-es szerepel.
-
bara17
tag
válasz
ny.janos #42247 üzenetére
Köszi, időközben megoldottam egy csodás tömbképletes megoldással
Annyi, hogy a HOL.VAN keresési értéket 1-re állítottam, a keresési tömböt pedig úgy adtam meg, hogy szorozza össze a c oszlop = 1 tömböt és a B oszlop nagyobb egyenlő, mint a kritérium érték tömböt (esetünkben ez: 2019.11.01).
=INDEX(B1:B20;HOL.VAN(1; (((B1: B20)>=H3)*1)*((C1: C20)=1)*1);0))
-
Fferi50
Topikgazda
válasz
ny.janos #42073 üzenetére
Szia!
Akkor már talán egyszerűbb, ha a segédoszlopba a feltételes formázás képlete alapján értékeket írunk, mert azokat utána csak meg kell számolni.Pl. =HA(A1>30;"C";HA(A1>20;"B";HA(A1>10;"A";"X")))
Ezután már csak a betüket kell megszámolni DARABTELI függvénnyel.Üdv.
-
karlkani
aktív tag
válasz
ny.janos #42063 üzenetére
Háttérszín alapján cellaszám, cellaérték összegzésre találtam makrót. Nekem olyan kellene, ami feltételes formázással módosított betűszínű cellák számát összegezi. A táblában több, feltételes formázással módosított betűszínű cella van, melyek közül csak a piros színűek darabszáma kell. Neten csak olyan makrót találtam, ami abban az esetben működik, ha a betűszín nincs feltételes formázással módosítva.
-
Peterhappy
őstag
válasz
ny.janos #42032 üzenetére
Próbálkoztam most kicsit vele. Érdekes ez, mert működött és így tudtam pl. a pivotban hónapos szűrést beállítani neki, ugyanakkor a dátum formátuma szétesett, pl. 1.szept jelent meg "2019. 09. 01." helyett (amit az összefűzésekkel én adtam meg).
Finomítanom még így is kellett a táblázaton, plusz nullákat bedöfködnöm, ha egyszámjegyű a hónap vagy a nap, szóval nem mondanám szépnek a képletet, de elméletileg most teszi a dolgát
Nekem pedig a napi kimutatás elégséges - egy hónapos szűrővel szebb lenne ugyan, de így is gyakorlatilag tökéletes
Nagyon szépen köszönöm a segítségedet!
-
bozsozso
őstag
válasz
ny.janos #41985 üzenetére
Igen nyert. Csak mivel nem volt reakció így nem válaszoltam saját magamnak. Én is ezt a megoldást találtam ki, hogy a szétosztandó mennyiséghez hozzáadom az össz kosár mennyiséget és azt osztom szét a fogyás arányában majd kivonom belőle a személyre vonatkozó kosár tartalmat.
Köszi, hogy foglalkoztál vele.
Új hozzászólás Aktív témák
Hirdetés
- Beszámítás! Apple Watch SE 2024 44mm Cellular okosóra garanciával hibátlan működéssel
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X3D 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- Országosan a legjobb BANKMENTES részletfizetési konstrukció! Dell G15 5530
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X3D 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone i9 14900KF 32/64GB RAM RTX 5070Ti 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest