- Külföldi SIM-ek itthon
- Milyen okostelefont vegyek?
- A sógorokhoz érkezik a kompakt Vivo X200 FE
- CMF Buds Pro 2 - feltekerheted a hangerőt
- Apple iPhone 15 Pro Max - Attack on Titan
- Motorola Moto Tag - nyomom, követ
- One mobilszolgáltatások
- Garmin Forerunner 970 - fogd a pénzt, és fuss!
- Xiaomi Mi 11 Ultra - Circus Maximus
- Az Oppo Find X8 Ultra lett a legvékonyabb kameramobil
-
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
-
Pá
addikt
válasz
Geryson #54250 üzenetére
Irányítószám egyszerű, feltételezve, hogy A1 cellában van a szöveg, amiből ki akarod nyerni
Ez mindig a szöveg első 4 karakterét adja vissza=LEFT(A1,4)
A helységnévre most hirtelen két módszert látok, de talán lehetne ennél elegánsabban is?
Itt a 6. karaktertől az első vesszőig adja vissza az értéket:
=MID(A1, 6, FIND(",", A1)-6)
Itt pedig az első space és az első vessző közti értéket adja vissza
=MID(A1, FIND(" ", A1) + 1, FIND(",", A1) - FIND(" ", A1) - 1)
Ezek a függvények az angol excelben működnek.
Ha magyar exceled van, akkor
LEFT helyett használd, hogy BAL
MID helyett, hogy KÖZÉP
FIND helyett, hogy SZÖVEG.TALÁL -
Pá
addikt
válasz
föccer #54237 üzenetére
Mostanában sokat dolgozom vele, tényleg sokat segít, de érteni is kell hozzá valamennyire.
Standard dolgokat szinte hibátlanul megoldja, de gyakran túlbonyolítva és nem optimalizálva. Pl ha bármit akarok keresni vagy elemeket megszámolni, akkor majdnem mindig végigiterál az egész range-n, ahelyett, hogy find vagy match-et használna, vagy countA vagy ilyesmit. Feleslegesen telepakol változóval mindent és ír 3 sort egymás alá, ahol egyik változóból kifejezi a másodikat, abból a harmadikat. Ezeket simán össze lehet vonni egy sorba meg ilyenek. Szóval végül is működik a kód, csak nem túl elegáns meg kicsit erőforrás pazarló.
De ezzel együtt lehet élni.Ha viszont valami kacifántosabb vagy nagyon nem standard dolgot kérsz tőle, akkor hajlamos nagyon belezavarodni, elkezd haluzni és szar megoldásokkal traktálni, amik nem működnek és ilyenkor nagyon könnyen bele lehet csavarodni és a végén elmegy 2 óra azzal, hogy vitatkozom vele és a szar megoldásait próbálom működésbe hozni.
Ez olyankor idegesítő, amikor amúgy a kódot megírhattam volna magamnak fél-1 óra alatt, csak gondoltam előtte gyorsan megkérdem, hátha összejön 10 perc alatt és a végén ott vitatkozom vele két órával később is. -
Pá
addikt
válasz
Fferi50 #54214 üzenetére
Köszi, ezen átsiklottam, mert nem értek hozzá és emiatt elsőre macerásnak tűnt.
Az a baj, hogy ez a mostani projectemnek ez csak egy kicsi és viszonylag jelentéktelen része, szóval nem éri meg az extra időráfordítást, hatékonyabb egy gyors, ismert megoldás.De hosszú távon hasznos lehet, szóval megpróbálom észben tartani és egy nyugisabb időszakban kicsit utánaolvasni, mert sok lehetőséget megnyithatna, ha része lenne ilyesmi is az eszköztáramnak.
-
Pá
addikt
válasz
Fferi50 #54206 üzenetére
Köszi! Hétvégén nem foglalkoztam a témával, majd holnap újra előveszem.
De ha csak így lehet megoldani, akkor inkább nem eröltetem a validálást, mert akár 100 sornyi is lehet, az meg már 200 textbox.Valszeg akkor az marad, hogy ha rányomnak a userform OK-ra, akkor kiírom egy lapra az értékeket és azt validálom egyben, majd újra feldobálom a userformot, amíg van benne fals adat.
User ebből annyi érzékel, hogy rányom az OK gombra, de nem történik semmi.Esetleg messageboxban ki tudom jelezni neki ilyenkor, hogy melyik sorokkal van probléma.
-
Pá
addikt
Van egy userformom, amin az első sorban van sokféle vezérlő, ezek közül 2 textbox, most csak ezek az érdekesek.
BeforeUpdate eventre beprogramoztam néhány validálási szabályt, hogy a userek ne írjanak be minden hülyeséget. Eddig minden jó.Viszont ez egy dinamikus userform, szóval úgy működik, hogy az első sor vezérlőit a megfelelő számban sokszorosítja. Szóval ha pl a munkafüzetben 18 elem van, akkor a userformomon is 18 sornyi vezérlőm lesz, így már összesen 36 textbox-szal.
Arra nincs ötletem, hogy alkalmazzam a validálási szabályokat a dinamikusan létrehozott textboxokra? Ugye a BeforeUpdate csak az első, eredeti sort fogja figyelni. A többiben szabadon garázdálkodhatnak a userek.
szerk: gondolom ezt a beforeupdate eventtel nem lehet megoldani, szóval valami más approach kell.
Legrosszabb esetben kiírhatom egy lapra az értékeket, ha a user rányom az OK-ra és azon a lapon validálom az értékeket és újra feldobálom nekik a userformot, addig, amíg sikerül normálisan kitölteni. De ez csak olyan végső, favágó megoldás, jó lenne valami elegánsabb, ami nem is engedi a user-t leokézni a formot, amíg nem jó.Ki lehet valahogy írni egy globális változóba esetleg, amit bevisznek értékeket és azt validálni valahogy? Csak az a baj, hogy ezek mind valami eventtel működnének, de nem tudok eventet rendelni a dinamikusan létrehozott vezérlőkhöz.
-
Pá
addikt
Lehet, hogy kicsit kuszán írtam mit szeretnék.
Szóval a lényeg és, ami fontos, hogy a Personal.xlsb-m ThisWorkbook részébe tennék egy Workbook_Open subot, aminek az lenne a célja, hogy bizonyos szempontból automatikusan megvizsgáljon mindegy egyes excel-t, amit megnyitok.
Az a problémám, hogy az excelek egy része jelszóval védett, amiket megnyitok. És úgy kéne ezt a subot beállítani, hogy a jelszóval védett exceleknél várja meg, amíg megadom a jelszót, mielőtt lefut.
Igazából nem tudom, hogy excelben van-e bármi jele, hogy megkapta a jelszót a file és ehhez tudnám kötni a macro futását.
MsgBox-szal tesztelgettem a workbook open-t de jellemzően már azelőtt elkezdte dobálni a MsgBoxot, mielőtt egyáltalán feljött a jelszó kérő ablak, szóval valahogy késleltetni kéne a macrot addig.
-
Pá
addikt
a personal.xlsb-be szeretnék tenni egy macrot, amit azt csinálná, hogy
1. Minden esetben, amikor megnyitok egy bármilyen excel-t (igazából elég lenne xlsm fajta)
2. Vizsgálja meg, hogy bizonyos szempontoknak megfelel-e (ez a része könnyű, ezt tudom)
3. Ha megfelel, akkor tegyen ki néhány gyorsvezérlő gombot felülre és rendeljen hozzájuk néhány macrot szintén a personal.xlsb-ből
4. Ha nem felel meg, akkor ne csináljon semmit.Két nehézségem van ezzel.
1. Nem vagyok benne biztos, hogy tudok ilyen macros gyorsvezérlőket kipakolni, csak az adott megnyílt file-ra, mindezt VBA-ból
2. Néhány file-amit megnyitok jelszót kér megnyitáskor. (amit keresek és amire akarom pakolni a gyorsvezérlőket is pont ilyen, jelszókérős)
Valahogy úgy kéne A Workbook_Open eseményt csinálni, hogy szépen várja meg, amíg beírom a jelszót és utána fusson le rendesen. Eddig tesztelgetésnél úgy láttam, hogy már lefut mielőtt egyáltalán feljön a jelszó bekérő ablak. -
Pá
addikt
Ez is jó ötlet. Ha saját használatra csinálok excel-t akkor egyszerűbb mint VBA-val szórakozni.
Viszont, ha úgy készítem, hogy megosztom másokkal, akkor igyekszem kerülni a feltételes formázást, mert az a tapasztalatom, hogy a sok copy&paste-tel meg cellák huzigálásával nagyon hamar szétcseszik a userek.
-
Pá
addikt
válasz
Fferi50 #54150 üzenetére
Amúgy sokszor már az sokat segít, hogy idejövök és leírom a nyűgöm.
Ehhez kicsit át kell gondolnom és összegeznem a problémát. Nagyon sokszor küldöm a hsz-t és utána 1-2 perccel már jön is egy újabb megközelítésre egy ötlet.
Ennek most különösen örülök, mert a csíkozás sokkal könnyebben olvashatóvá teszi a sok oszlopos táblázatokat és mindig is zavart, hogy a filter sokszor elrontja a csíkozást, szóval ezt sok helyen fogom tudni használni.
-
Pá
addikt
válasz
Fferi50 #54148 üzenetére
Közben sikerült egy egészen jól működő verziót fabrikálnom.
Betettem egy Subtotal 109-et a táblázat egyik oszlopára, ahol jellemzően 6-8 számjegyű egyedi értékek vannak, így a subtotal cella értéke 99.99%-ban változni fog, ha Autofilterezgetek.És akkor ennek a cellának a változására már lehet indítani a macrot.
Szóval a "CHECK" tartományban ez a formula=SUBTOTAL(109,S4:S100000)
Ez meg indítja a macrot, ha változik a CHECK
Private LastSubtotal As Double
Private Sub Worksheet_Calculate()
Dim NewSubtotal As Double
NewSubtotal = Me.Range("CHECK").Value
If NewSubtotal <> LastSubtotal Then
LastSubtotal = NewSubtotal
Call ZEBRA_STRIPE
End If
End Sub
Talán lehetne még finomítani ezen, de most végre elég jól működik így.
-
Pá
addikt
válasz
Fferi50 #54144 üzenetére
Hát, közben kiderült, hogy sehogy.
Van egy VBA, ami megcsinálja pont azt, amit kell, de nem tudom megbízhatóan triggerelni Autofilterre, szóval nem működik megbízhatóan. Vagy csak nagyon eröltetett megoldással lehetne, (pl másodpercenként időzítéssel betenni valami check-et, de ezt túl favágó megoldásnak érzem).Van arra ötlet, hogy mivel lehetne triggerelni Autofilterre a VBA kódot? Ez lenne a legtisztább.
Ha nincs akkor megpróbálom táblázatként. Tegnap futottam ezzel egy gyors 5 perces kört, akkor nem működött (hiába filtereztem, nem csíkozta át). De lehet, hogy rosszul csináltam, mert táblázatokat szinte sosem használok, szóval nincs tapasztalatom vele.
Vagy esetleg ha táblázatként van benne, akkor már könnyebb triggerelni a VBA-t?Amúgy ez a kód (megkeresi a range utolsó+1 sorát, aztán, azt becsíkozza, majd a végén az összes többi sort befeketézi)
Private Sub ZEBRA_STRIPE()
Dim ws As Worksheet
Dim rng As Range
Dim rowIndex, visibleRow, lastRow As Long
Set ws = Sheet1
lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).row + 1
Set rng = ws.Range("A4:BU" & lastRow)
Application.ScreenUpdating = False
visibleRow = 1
For rowIndex = 4 To rng.Rows.Count + 3
If Not ws.Rows(rowIndex).Hidden Then
If visibleRow Mod 2 = 0 Then
ws.Rows(rowIndex).Interior.color = RGB(220, 220, 220)
Else
ws.Rows(rowIndex).Interior.ColorIndex = xlNone
End If
visibleRow = visibleRow + 1
End If
Next rowIndex
ws.Rows(lastRow + 1 & ":" & ws.Rows.Count).Interior.color = RGB(0, 0, 0)
Application.ScreenUpdating = True
End Sub
-
Pá
addikt
Újra bizonyíthatjuk felsőbbrendűségünket chatGPT felett!
Szóval van egy tartományom, a neve:
"DATA" ($A$4:$BU$1048576)
A könnyebb olvashatóság miatt a sorok háttérszíne felváltva fehér és világosszürke. Szóval minden páratlan sor fehér, a párosak pedig szürkék.Azt szeretném, ha ezt a szép zebra csíkozást megtartaná minden esetben. Pl ha kitörlök egy sort, vagy másolok egyet. De ami a legnehezebb része talán, hogy ha filtereket használok. Ugye ilyenkor csak rejti kiszűrt sorokat, szóval a sorszámuk nem változik, emiatt előfordul, hogy sok páros vagy páratlan számú kerül egymás mellé.
Szóval lényegében azt kéne elérni, hogy a visible sorok legyenek szép zebra mintásak. A legtöbb ötletem eddig ezen vérzett el, mert általában a kézenfekvő megoldás a sorok sorszámából indul ki és nehéz kiszűrni a hideolt sorokat.VBA, conditional formatting vagy bármi frappáns megoldás játszik.
-
Pá
addikt
válasz
föccer #54124 üzenetére
Jah, igen, ilyen nagyon eröltetett izéket nem akartam, hogy macroval mindig visszaírom, amit módosítanak, ennyi azért nincs benne.
Viszont a validation nagyon jó ötlet, elegánsan működik, pont ilyesmiért jöttem ide.
Egyelőre az emberiség még veri az AI-t.Szóval így a worksheetet tudom lockolni, hogy ne engedje a formázást. A néhány cellát pedig, ahol szeretném engedni a formázást, azokat kiveszem a lockolás alól és validatiönnel megvédem az értékeket, szuper!
-
Pá
addikt
Sziasztok!
ChatGPT-nek ebbe beletört a foga.
Én sem hiszem, hogy megoldható, de hátha van valami trükkös megoldás rá.Szóval egy munkalapon kéne megoldani azt, hogy
1. A cellák értékét lehessen változtatni, de formázás-t ne engedje a usereknek.
2. De lenne néhány cella (A4:AZ4), ahol viszont pont fordítva kéne. Szóval az értékét semmiképpen se lehessen változtatni, de formázni lehessen.Kis plusz info, hogy ahol a formázás tiltva van, azokon a cellákon conditional formatok vannak beállítva, szóval úgy kell letiltani a usereket a formázgatásról, hogy attol a condi formatok még tudjanak lefutni.
Jól sejtem, hogy vagy az értékeket tudom protectelni munkalapon belül vagy a formázást? De cella szinten ezt kevergetne nincs mód?
Esetleg valami cseles macro erre? -
Pá
addikt
válasz
Delila_1 #52460 üzenetére
Köszönöm, a makró jól működik, csak pont a tegnapi filehoz nem tudtam használni. De félretettem későbbi hasonló esetekre.
Viszont a ByVal működést/logikát nem igazán értem. Ezt nem szoktam használni.
Így raktam be és végül is működik, de nem tudom ez a helyes interpretáció-e vagy barbárkodtam.Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$A$1" Then
Dim ter As Range
Set ter = Range("B2:B" & Range("B2").End(xlDown).Row)
ter.NumberFormat = "#,##0 [$" & Range("A1").Text & "]"
End If
End Sub
-
Pá
addikt
válasz
Fferi50 #52458 üzenetére
Igen, köszi, ez valóban működik és már csináltam is, bár akkor csak 2 extra deviza volt.
Viszont most, mivel nem saját workbook, nem akartam kihúzni a gyufát azzal a másik csávónál, hogy ezt elkezdem vele beállíttatgatni az exceljében ~15 devizára.
Így is szívességet tesz, hogy egyáltalán beleteszi.Ettől függetlenül köszönöm az ötleteket, nem kizárt, hogy még felhasználom majd egy későbbi projectben. Most tervezek bár fejlesztést a saját meglévő tábláinkon, szóval még jól jöhet.
-
Pá
addikt
Ja, semmiképp nem úgy értettem, hogy a ti hibátok, éreztem, hogy valószínűleg nem tudtam jól átadni amit akartam.
Tegnap volt egy pár órás ablakom leadni egy változást egy file-ra munkahelyen, mivel nem mi kezeljük azt, így át kellett küldenem valakinek, miket írjon át benne. Emiatt makrót sem lehetett beletenni, ez számomra nyilvánvaló volt, de most látom, hogy nem írtam az eredeti hozzászólásomban.
Amúgy a makrós megoldásaitok működtek volna, így átnézve a kódot.
Közben más dolgokat is csináltam, szóval elég kapkodós volt, nem tudtam erre szentelni a teljes figyelmem. Csak néha ránéztem a file-ra 5-10 percet, két másik dolog között.Elsősorban azt akartam gyorsan megtudni, hogy ha custom formátumot állítok be, akkor abban valamilyen módon lehet-e cellára hivatkozni, vagy bármilyen függvényt használni, de arra jutottam, hogy nem igazán és innentől hagytam az egészet, mert nem akartam nagyon túlbonyolítani, úgy, hogy nem is én kezelem a file-t és nem is volt időm elmerülni a kérdésben. Ez amúgy sem befolyásolt volna funkciót, csak ilyen utolsó simításnak szántam.
-
Pá
addikt
Köszi mindkettőtöknek!
Igazából annyira nem volt fontos, csak apró vizuális tuning lett volna, ha könnyen megoldható. Sajnos egyik ötlet sem pont olyan volt, amilyet szerettem volna, és kereséssel sem találtam rá megoldást, szóval inkább elengedtem. -
Pá
addikt
válasz
Delila_1 #52450 üzenetére
Az a baj, hogy egy táblázatban lévő számokra szeretném.
Sok országban használják a táblázatot Europán belül és nem egyértelmű, hogy mikor melyik pénznemben mutatja az értékeket tábla.Jelenleg a tábla sarkában van egy cella, ami aktuálisan mutatja, hogy milyen pénznemben kell érteni a benne lévő számokat.
Szóval szerepe nincs (nem is kell őket átváltani), egyszerűen csak vizuálisan jobb lenne, ha a táblázatban lévő számok is fel tudnák venni a táblázat sarkában lévő pénz formátumot.szerk: pontosan ezt az egyéni formátumot szeretném --> # ##0" USD"
Csak azt kéne, hogy az USD helyett mondjuk mindig azt írja ki, ami az A1 cellában van.
Szóval az USD rész kéne dinamikusan változzon egy cella alapján. -
Pá
addikt
Van egy cella, amiben van 3 betű (pénznem), tehát CHF, HUF, USD, EUR stb
Van sok más cellám, amiben számok vannak.
Azt szeretném, hogy ezek után a számok után legyen írva az első cellában lévő pénznem. (de a cella továbbra is számként viselkedjen, tudjak vele műveleteket végezni, szóval simán &-del mögé rakni nem jó). Custom formátumként kellene gondolom, csak nem tudom, hogy csináljak abból dinamikusat. -
Pá
addikt
Köszönöm mindenkinek a hozzászólást, közben kicsit módosítottam a projekten, így meg fogom tudni oldani más oldalról közelítve, de kellett ez a gondolkodás, hogy eljussak odáig.
-
Pá
addikt
válasz
Fferi50 #52411 üzenetére
Köszi, de ez sajnos nálam nem annyira működik, mindenképp excelen belül kéne megoldani az egészet.
Ez munkahelyi project és az excel ráadásul még csak nem is hozzánk tartozik, hanem egy másik részlegé. Annyit el tudtam érni, hogy ha elküldöm nekik a kódot, akkor beleteszik, de ennyi. Lényeg, hogy felhasználó szempontjából faék legyen, tényleg ne legyen más dolguk, mint rányomni egy gombra az excelben, amit már úgyis használnak.
-
Pá
addikt
Van egy 10-15 soros szerződés template, ahova be kell szúrogatni a megfelelő helyekre megfelelő szavakat. (széria szám, tipus/modell, különböző díjak és egyebek).
Szóval azt szeretném megoldani, hogy excelben legyen egy "create contract" gomb, amire ha rányomok, akkor kiköpi a kész template-t. Szóval, hogy a megfelelő széria, tipus etc be vannak már szúrva a szöveg megfelelő helyére.
Az lenne a legelegánsabb, ha nyitna ennek egy notepad-t vagy word-ot, és oda szúrná már be a kész végeredményt.Egyelőre nem feltétlenül kell részletes guide, inkább csak pár ötlet, hogy merre induljak el, hogy a legegyszerűbb ezt megoldani? 2 fő probléma van.
1. Egy hosszabb szövegben megfelelő helyekra bizonyos cella értékeket beszúrogatni.
2. Notepad/wordot megnyitni és bemásolni, úgy, hogy megbízhatóan működjön mind Apple, mind Windows környezetben. (Microsoft Office adott minden gépen). -
Pá
addikt
válasz
Fferi50 #51283 üzenetére
Köszi!
Munkafüzetet nyitok meg.
Igazából ezek teljesen különálló fileok, megnyithatom őket a gépről is, shared driveról is, netről letöltve is, chatprogramon keresztül megkapva is stb...Igazából annyit szeretnék, hogy mondjuk a gépen dupla katt-al megnyitom az excel filet és amikor felugrik a password ablak, akkor VBA ismerje fel, hogy most egy "olyan" file-t nyitottam meg és írja be a jelszót magától és okézza le.
Az a nehézség, hogy ha jól tudom, akkor az Excel nem tekinti megnyitottnak a munkafüzetet, amíg a jelszót nem írtam be, így nem tudom mivel triggereljem a makrót, mert azt olvastam, hogy az openworkbook ebben az esetben nem működik.
-
Pá
addikt
Munkám során naponta megnyitok egy csomó excel munkalapot.
Az a közös bennük, hogy mindegyik ugyanazzal a jelszóval van védve és a filenév közepén van egy ugyanolyan rész, amiről felismerhetőek.Szeretnék a personal.xlsb-be egy makrót tenni, ami minden alkalommal beírja automatikusa a passwordot, amikor olyan file-t nyitok meg, aminek a nevében szerepel ez a kifejezés.
Ehhez kérnék egy kis útbaigazítást, hogy induljak neki. -
Pá
addikt
Azt gondolom, hogy nincs erre megoldás, főleg, hogy mindenképpen VBA nélkül szeretném, de azért teszek egy próbát.
Azt kellene megoldani, hogy legyenek olyan celláim, ahova adatot tud bevinni a user, de a formátumot nem tudja módosítani.
A formázás eszköztárat felül le lehet tiltani, de a copy&paste ellen nem tudok kitalálni semmit.
Ráadásul ide tipikusan copy&pastelnek adatot más táblákból, szóval elég nagy az esélye, hogy előbb-utóbb elrontják a paste/value-t. -
Pá
addikt
Szerintem ha képlet van a cellákban, csak az eredménye üres, azt ilyen szempontból már nem számítja üresnek excel.
Sztem ha szűrni meg rendezni is szeretnéd, akkor célszerű lenne egy másik oszlopot megadni, ahol már az A oszlop szűrt és rendezett elemei találhatóak és arra hivatkoztatni az adat érvényesítést. Ezzel az üres cella probléma is kezelhető.
-
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
Fferi50 #50539 üzenetére
Csak most tudtam megnézni, mert hétvégén másik laptop volt nálam.
Köszi, ez tökéletesen működik, pont azt csinálja, amit szerettem volna tőle. Egy dolgot kéne még megoldani. Hogy amit kiírtunk az új cellába (tehát a függvény eredményét) ki is törölje az eredeti cellából. Vagy a függvények alapvetően nem tudják módosítani a cél cellát és erre egy külön subot kéne írni?Ráadásul talán sikerült is nagyjából visszafejtenem és megértenem, hogy működik, szóval még tanultam is.
Egyedül a végén a "For Each a In b" kifejezés nem logikus. Ha jól értem az a "a" nagyobb egység mert az egész cellára utal. A "b" pedig a kisebb egység, hiszen csak két határoló bizbasz közti rész, nem? Akkor miért nem "For each b In a"?
Mármint látom, hogy valamikor "a" lett a kisebb egység, hiszen a értékér írjuk ki a függvény eredményeként. Csak az nem világos, hogy mikor ment át "a" a teljes cella értékéből csak az adott résszé.ny.janos: neked is köszi, de a fenti megoldás ebben a helyzetben jobban passzol, mert egyéb design okokból sokkal jobb így adott helyen egy extra oszlopból megoldani ezt, mint ennyire szétszedni.
-
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. -
Pá
addikt
Igazából egy olyan logikára lenne szükségem, ha megoldható, hogy
1. Megnézi, hogy a cellában megtalálható-e az adott kulcsszó. ("ellenőrzés")
2. Ha nincs, akkor az eredmény nulla.
3. Ha megtalálható, akkor onnan jobbra elkezdi keresni az adott ember nevét és az időbélyeget. Ha először az időbélyeghez ér, akkor az eredmény szintén nulla. Ha az időbélyeg előtt megtalája a nevet, akkor az eredmény 1.Annyi könnyebbség, hogy rájöttem, hogy minden időbélyeg előtt van egy | jel. Szóval elég a " | " jelet keresni.
Ugye a Szöveg.Keres függvény megadja, hogy hányadik karakternél van a kulcsszó. Annyit kéne megnézni, hogy utána hamarabb jön-e az adott név, mint a | jel.
A nehézség pedig az, hogy | jelből jó sok van a cellában, mivel minden munkafázis azzal kezdődik, illetve az adott név is többször szerepelhet, ha több munkafázisban részt vett az emberke.
De minket csak a kulcsszó utáni első név vagy " | " jel érdekel. -
Pá
addikt
válasz
Fferi50 #50523 üzenetére
Köszi! Indulásnak jó, de úgy látom, hogy ez minden névre találatot ad a cellában, amelyikben megtalálható a kulcsszó. Nekem arra lenne szükségem, hogy csak arra a névre adjon találatot a cellán belül, ami két időbélyeg között szerepel együtt a kulcsszóval. (egy cellán belül jelenleg sok munkafázis és név van, ebből csak konkrétan egyet keresek)
Most minden névre találatot ad, amik a cellán belül szerepelnek, függetlenül attól, hogy a kulcsszavas, vagy másik munkafázisban szerepelnek.
-
Pá
addikt
Ez egy teljesen új project lesz, érdekelne, hogy érdemes nekilátni, illetve konkrét segítséget is elfogadok.
Van egy oszlopban sok cellám (ezres nagyságrend). Mindegyikben sok száz vagy ezer karakternyi szöveg. A szöveg az alábbi logika szerint épül fel.
[időbélyeg] - [munkafázis] - [név] - [pozició] - [időbélyeg] - [munkafázis] - [név] - [pozició] - [időbélyeg] - [munkafázis] - [név] - [pozició] - [időbélyeg] - [munkafázis] - [név] - [pozició] - [időbélyeg] - [munkafázis] - [név] - [pozició] - [időbélyeg] - [munkafázis] - [név] - [pozició] - stbstb
Változó, hogy hány ilyen ciklus szerepel egy cellában. Általában van legalább 3-4, de lehet akár 10-12 is. Az időbélyegen kívül minden fázis teljesen random szöveg, változó kötőszavakkal összekötve, szóval nincs bennük semmi logika.
Van ezen kívül egy 10-15 névből álló listám.2 dolgot szeretnék megkapni.
1. Minden név mellé egy szám, hogy hány projectben vett részt. (gyakorlatilag annyi, hogy hány celláben szerepel a neve. Az lényegtelen, hogy egy cellán belül hányszor van a neve, szóval a munkafázisok száma szerencsére nem kell.) --> ez elég egyszerű egy =DARAB(SZÖVEG.KERES(NÉV,OSZLOP)) fügvénnyel meg is vagyok.2. Ez a macerás rész. Minden név mellé, hogy egy bizonyos munkafázisban (ami az ellenőrzés) részt vett-e. Itt lényegében arra kellene egy függvény, hogy 2 [timestamp]között szerepel-e az adott név ÉS egy kulcsszó (legyen mondjuk ellenőrzés). Sok projectben egyáltalán nincs ilyen munkafázis egyébként, szóval nem minden cellában szerepel a kulcsszó.
Nyilván legrosszabb esetben fel lehetne darabolni cellákat timestamponként munkafázisokra és ott keresgélni, de az sok szempontból nem lenne ideális, így első körben főleg az érdekel, hogy enélkül megoldható-e. Szöveggel buherálással nincs sok tapasztalatom excelben.
Szóval csak, hogy egyértelmű legyen, a végén mind a 10-15 név mellé két számot szeretnék kapni.
1. Hány projectben vett részt aktív szereplőként. (hány cellában szerepel a neve a kulcsszó nélkül)2. Hány projectben vett részt ellenőrként. (hány cellában szerepel a neve ÉS a kulcsszó két időbélyeg között)
+1. Előfordulhat, hogy valaki aktív résztvevőként és ellenőrként is részt vesz. Szóval lehetséges, hogy szerepel a neve a kulcsszóval, de szerepel a neve a kulcsszó nélkül is a cellában. Ez esetben mindkét mezőhöz oda kéne számolni. --> de mivel ez meglehetősen ritka, így ha ezt nem sikerül megoldani, azzal ki tudok békülni.
Ez pedig az időbélyeg formátuma, szerencsére ez teljesen egységes az egész projecten keresztül.
2023-01-17 14:53:30 +0100: -
Pá
addikt
válasz
Fferi50 #50512 üzenetére
Közben találtam még pár apróságot, de a fő ludas valóban az volt, hogy egy Transpose függvényem volt, dinamikus indirektes range-dszel és emiatt lefoglalta magának az egész sorokat, plusz valahogy a formázást is vitte magával. Ezt alig tudtam kitörölni.
De így már sikerült elérni a 2.5MB fogyókúrát és most nagyjából reálisnak is tűnik a fileméret.
-
Pá
addikt
Tudja valaki mi alapján tartja számon Excel a használt cellákat?
Ha nyomok egy Ctrl+End-et, akkor elvileg az utolsó használtba ugrik, de nekem a legutolsó oszlop 2027-es sorára ugrik.
Annak ellenére is, hogy ha kijelölöm az egész területet és ClearAll-t nyomok. Ugyanúgy ragaszkodik hozzá.Azért nyomozgatok, mert rejtélyesen nagyra nő a file mérete és próbálok mindent kitörölni belőle, ami nem feltétlenül szükséges, de ezek szerint nem jól csinálom.
-
Pá
addikt
Nem tudom működésre bírni az alábbit.
Sub DYN_UNI()
Dim r As String
Dim lstrw As Integer
lstrw = 35
r = "Input!D2:D" & lstrw
Sheet5.Range("J39").Formula2 = "=UNIQUE(r)"
End Sub
Azt szeretném elérni vele, hogy betegye a "=UNIQUE(Input!D2 : D35)" formulát.
Nyilván aztán a 35-öt szeretném benne dinamikusan változtatni.De ebből valamiért mindig UNIQUE(39:39) lesz....
Már több oldalról végigpróbálgattam, de sehogy sem akarja. -
-
Pá
addikt
Sziasztok!
Van egy ilyen kódom, ami azt csinálja, hogy kijelöl egy 4 oszlop széles range-t és aztán a kijelölt range-t szépen átmásolja egymás mellé és teszi mindezt (itemnbr - 2) alkalommal.
Sub PAYMENT_SETUP()
Dim itemnbr, i As Integer
Application.ScreenUpdating = False
Range("CO1:CR97").Select
Selection.Copy
Range("CO1").Select
itemnbr = Application.WorksheetFunction.Max(Range("CG:CG"))
Let i = 2
Do While i < itemnbr
ActiveCell.Offset(, 4).Activate
ActiveSheet.Paste
i = i + 1
Loop
Application.ScreenUpdating = True
End Sub
Nincs baj bele, jól is működik. Az egyetlen gond hogy nagyon lassú, mivel konkrétan copy&pastelgeti a sorokat. Már a screen update-t is azért kapcsoltam ki, hogy ne kelljen végignézni, de ettől nem lett gyorsabb sajnos.
Szóval van erre a copy&pastre valami alternatív megoldás? Jah az fontos, hogy az eredeti mezőben, amit másolgatok, formulák vannak, relatív hivatkozásokkal, amiket jó lenne megtartani.
-
Pá
addikt
válasz
TillaT #50386 üzenetére
A fenti menüsorban a személyre szabással el tudsz helyezni új menüpontokat és azon belül mindenféle parancsot. Én még nem csináltam, de több fileból is dolgozom, ahol így van megoldva, szóval biztos lehetséges, ha ez neked megfelel.
Szóval ide új menüpont és abba a vezérlők. -
Pá
addikt
Sziasztok!
Van egy ODBC powerquery-m excelben, aminek a paramétereit dinamikusan tudom változtatni bizonyos cellák átírásával. Ezzel már nincs meló, kész van.
Csináltam egy gombot, ami a következő makrót hívja meg.
Sub Table_Refresh()
'
' Table_Refresh Macro
''
ActiveWorkbook.Connections("Query - XYZ").Refresh
End SubNyilván az lenne a cél, hogy a user átírja a paramétereket a cellában, aztán rábök a gombra és befrissül a tábla.
Annyi ezzel a baj, hogy a táblának kell egy jó 4-5mp, amire frissül, ami elég zavaró, olyan, mintha nem történne semmi. Szóval szeretném kibővíteni a makrót annyival, hogy kb freezeljen le mindent, amíg megtörténik a frissítés és utána jöjjön egy messagebox, hogy kész, frissült.
Ebben tudtok segíteni? -
Pá
addikt
Nem túl elegáns, valószínűleg lehetne rajta optimalizálni, de alapvetően nem ebbe az irányba szeretnék menni, szóval nem öltem bele sok energiát, csak megnéztem, hogy működik-e.
szerk: a sárga mező adja a megoldást, ha 1, akkor jók vagyunk, ha nagyobb szám, akkor nem.
-
Pá
addikt
Ilyen kerülő úton meg tudom csinálni, hogy ez oszlop mellett egy másik oszlopban felismerem a nem nulla értékéket és megszámolom a közöttük lévő cellákat és megnézem, hogy ezek a számok egyformák-e mind. Szóval ilyen módon megvan.
Most arra keresnék módot, hogy lehetséges-e ezt frappánsan belesüríteni csak 1 cellába.
-
Pá
addikt
Sziasztok!
Oszlopban vannak számaim, felváltva nullánál nagyobb számok és nullák. Arra szeretnék egy formulát, ami eldönti, hogy a számok között mindig egyforma mennyiségű nullák vannak-e.
Szóval, akkor lenne TRUE a függvény, ha a első és második szám között pont annyi nullás cella van, mint a második és harmadik, harmadik és negyedik között és így tovább a végéig. Ha bármelyik 2 szám között más mennyiségű nulla van, akkor FALSE.
Az első szám előtti és az utolsó szám utáni nullák nem érdekesek, azokat nem kell nézni.Erre bárkinek egy frappáns ötlete macro nélkül?
-
-
Pá
addikt
Nekem is van kérdésem, bár sejtem a választ...de hátha.
Lehetséges Excelben két cellát összekötni? Olyan módon gondolom, hogy bármelyikbe írok be egy értéket, a másik cella is azt vegye fel. Emiatt nyilván formulával esélytelen, hiszen azt az első érték beírásnál felülírnám. Ide egy beépített feature kéne, ha létezik ilyesmi.
Az már csak hab a tortán, hogy az egészet Transposeolni is kéne, tehát egyik sheeten egy sort szeretnék ilyen módon összekötni egy másik sheeten lévő oszloppal.
-
Pá
addikt
Közben meg is lett a megoldás, hasonló esetre. Akit érdekel.
=OFFSET($A$1,0,0,COUNTA($A:$A),1)
Ezzel egy dinamikus range-t lehet létrehozni, ami pont olyan hosszú(annyi sor van benne), ahány eleme van az oszlopnak. Elvileg "Defined Name"-ként is működik, szóval elnevezheted, aztán lehet rá hivatkozni bárhol.
-
Pá
addikt
Köszi, de sajnos nem. Ugye alapvetően nem akarom a "blank" cellákat eltávolítani, mivel formulák vannak bennük. Azt szeretném, ha a DATA_VALIDATION funkció ignorálja őket.
A UNIQUE(FILTER) megoldás tökéletes lenne. Ha egy sima cellába beírom, akkor gyönyörűen működik is. De ahogy átmásolom a a formulát a data_validation-be, ott már jön a hibaüzi, hogy hibára fut a formula. Gondolom nem tudja kezelni a SPILL tipusu függvényeket.
-
Pá
addikt
Sziasztok!
Data Validation-t használok egy cellában, drop-down menüvel korlátozva, hogy milyen értéket vehet fel.
A drop-down menühöz az értékeket mondjuk A1:A100 rangeből veszi fel.
Előfordulhat, hogy A1:A100-ban csak 10-20 elem van és emiatt a drop down elég hülyén néz ki, hiszen van felül pár érték, aztán egy nagy üres tömb. Sokszor a user azt hiszi, hogy nincsenek is értékek, hiszen ahogy megnyitja a drop down-t, csak a nagy fehér tömböt látja és nem jön rá, hogy fel kéne scrollozni.Szóval az a kérdésem, hogy lehetne eltüntetni a blank cellákat a drop-downból.
Annyi csavar van még benne, hogy azok a blank cellák, amiket szeretnék eltüntetni, nem teljesen üresek, mert van bennük egy "" a formulák miatt. Emiatt az ignore blanks beállítás nem működik.
-
Pá
addikt
válasz
Fferi50 #50238 üzenetére
Közben eszembe jutott egy jó paraszt/favágó megoldás is.
A blokkokat oldalra kellene sokasítani. Szóval "lefelé" van helyem. Elvileg meg tudom csinálni, hogy az A1: D200 blokk első szabályának a hivatkozási celláját sokszorosítom A201 : D400-ban. A második szabálynak a celláját kiterítem A401 : D600-ban és így tovább. Így tudnék rájuk $$ nélkül hivatkozni és érvényesek lennének az egész blokkra.Azon túl, hogy nem túlságosan elegáns, az lenne a kérdésem, hogy ilyen méreteknél mennyire kell aggódni performance issuek miatt? Ugye az eredeti 200x200 blokkos tervemből, ami önagában 40,000 képletezett cella. Lenne kb 7-8x ennyi. Szóval bő 300,000 cella. A legtöbben ilyen halmozott képletek vannak, sok IF-vel, VLOOKUP-pal és INDEXMATCH-csel.
Szóval mennyire lehet számítani teljesítmény gondokra egy ilyen setupnál? Illetve mit és hogy lehet ilyenkor optimalizálni, ha egyáltalán. -
Pá
addikt
Feltételes formázással szenvedek éppen.
Van egy kb 400 cellás blokkom, ahol 1 cellában lévő blokk alapján változik a többi 400 formázása. Ezt viszonylag könnyű beállítani, hiszen kijelölöm az egész blokkot és a cél cellát beteszem $$ közé.Viszont utána ebből a szépen felsetupolt blokkból szeretnék még 200 másikat copy&pastelni.
Az a bajom, hogy így a $$ jelek miatt az összes copy&paste-t blokk is mind az első blokk cellája alapján fogja változtatni az értékét. Pedig mindegyik önálló egységként kéne működjön.Szóval nagyon leegyszerűsítve A1: D100 blokk formátuma A1 cella lapján kéne változzon.
Aztán E1:H100 az E1 alapján. Aztán I1:L100 pedig I1 alapján stb.A valóságban persze ez jóval bonyolultabb, mert egy blokkban nem egy szabály van, hanem sok. Ez a probléma szempontjából nem is lényeges, csak azért említem meg, hogy tudjátok, hogy a manuális megoldás elég esélytelen.
-
Pá
addikt
VLOOKUP-ban szeretném a tartományt dinamikusan megadni.
Tehát $A$X:$B$Y formában, ahol X és Y egy-egy cella értéke lenne.
Szóval X értéke mondjuk "C1", Y pedig "C2" cellából jönne, ahogy azokat módosítom, úgy módosulna a VLOOKUP-ban a vizsgált tartomány.Az oszlopok fixek, egyedül a sorokat szeretném mozgatni.
-
Pá
addikt
Kööszi szépen, tök jól működik. (közben nekem is sikerült megoldanom, egy nagyon favágó módszerrel, de ez mindenképp elegánsabb)
Delila_1 --> neked is köszi, így is működik. A tiédből kiloptam az ötletet, ha esetleg a user mégsem nyitna meg file-t (vagy rosszat nyitna meg), akkor álljon le a makró MsgBox-szal. Jó ötlet lefedni ezeket a lehetőségeket.
Egy nagyon picit szeretnék rajta finomítani még, ha lehet.
1. A file megnyitásánál le lehet valahogy lőni a különböző warningokat, hogy ne jöjjenek fel? (általában megkérdi, hogy updatelje-e a linkeket, engedje-e a makrókat, legyen-e read-only)
Láttam ezekre paramétereket, ha Open-nel nyitnám meg, de a DialogBox-szal nem jöttem rá, hogy lehet beállítani.2. Mielőtt átmásolom az adatokat szeretném lecsekkolni a tartományt, hogy van-e reference error rajta (és leállítani a makrót, ha esetleg lenne). Ennek van egyszerű módja?
-
Pá
addikt
válasz
Delila_1 #50171 üzenetére
Köszönöm szépen (neked és a többieknek is)! Sajnos ez még mindig nem az, amit szeretnék. Megpróbálom még egyszer leírni, csak nem tudom, hogy nagyon leegyszerűsítve lenne célravazető, vagy minden részletet megosztva?
Nagyon leegyszerűsítve arra lenne szükségem, hogy egy makró megnyisson egy user által kiválaszott file-t és aztán ne csináljon vele semmit. Azon túl, hogy a nevét(lehetőleg kiterjesztéssel, de az se világvége, ha nem) bemásolja annak a file-nak bármelyik cellájába, ahonnan indítottuk a makrót.
Ebben szeretnék segítséget vagy esetleg egy konfirmációt, hogy ez nem lehetséges és akkor tudok másik irányba is menni, csak azok mind macerásabbak és/vagy kevésbé elegánsak.Azért fontos, hogy a képletekkel "szívjam" be az adatokat a másik fileból, mert a másik fileban lévő adatoknak csak egy nagyon kis részére van szükségem. (10,000+ cellányi adatból kell ~100). Viszont az én cellámban folyó számolásoktól függ, hogy éppen mikor melyik 100 adat kell, szóval a lokáció dinamikusan változik. Ráadásul a képleteim már eleve a megfelelő sorrendben, formátumban, és helyre teszik be ,csak a szükséges adatokat, a további feldolgozásra.
Persze át lehetne tenni az egész sheetet az én fileomba és arra ugyanúgy ráereszthetném a képleteimet. Ezzel az a baj, hogy a másik fileban nem egy tabon vannak a szükséges adatok, hanem többön, ráadásul a számuk 2 - 15 között random módon változik. A "beszívó sheetem" ezt szépen le tudja követni. Nem szeretnék ennyi "szemetet" átpakolni az én fileomban, amikor valójában csak kb az 1%-ra van szükségem. (ezen a fileon kívül még 3 különböző adatbázisból is húz le adatokat a fileom és van 7-8 tab, amin a usereknek kell navigálni és ügyködni, szóval tényleg szeretném tisztán tartani, amennyire lehetséges).
Harmadrészt a forrás file felett semmi kontrollom nincs. Ha bármit változtatnak benne, akkor a makrót nem biztos, hogy tudom magamnak updatelni. Emiatt minél kevesebb munkát szeretnék a makróval elvégeztetni, tényleg csak, ami szükséges. Viszont a képleteimet nagyon modulárisan legózom össze. Szóval eleve olyan a design, hogy egy "kapcsolótáblában" lévő pár cella átírásával tudom frissíteni az egész sheetnyi képletet a változásoknak megfelelően, szóval így egyszerűbbnek látom a karbantartást. -
Pá
addikt
Köszönöm szépen, hogy megnézted. Sajnos ez egyelőre nem pont az, amit akartam, viszont ad reményt, hogy megoldható lesz, szóval már ennek is örülök
Megpróbálom másképp elmondani, mit szeretnék elérni, mert belátom, hogy elsőre nem tűnik logikusnak. (de van mögötte logika, csak nem intuitiv a részletek ismerete nélkül)Van egy excel "Original" --> ez van nyitva és innen indul a makró. Ezen belül van 3 sheet. Legyenek, "Name", "Feed", "Store".
Van egy másik excel "Update". Ezzel csak annyit kell csináljon a makró, hogy megnyitja, majd a file nevét (lehetőleg kiterjesztéssel, de elérési útvonal nélkül) bemásolja az Original file Name sheetjére, mondjuk A1-be. Más dolog nincs a a frissen megnyitott file-lal. Szóval a makró nem mozgat adatokat a két file között.
Az Update fileból szükséges adatokat az Original file Feed sheetje beszívja, amint a file név bent van a Name sheeten. (ez be van képletezve). Ide esetleg be lehet tenni 1mp delay-t, hogy biztos frissüljön, illetve egy checket, hogy a formulák Feed!A1:Z200-ban hibára futottak-e.
Ez után a makró annyit kéne csináljon, hogy az Original fileon belül Feed!A1:Z200-ból a formulák eredményét valueként átmentse Store!A1:Z200-ba.
-
Pá
addikt
Igazából arra jutottam, hogy a jelenlegi INDIRECT-es megoldásom minden szempontból jó begyűjteni az adatokat, szóval megtartanám. (és elég macerás lenne felsetupolni egy új rendszert)
Az egyetlen hátránya, hogy minden adatot elvesztek, ahogy bezárom azt a file-t, ahonnan veszem az adatokat. Ezt úgy hidalnám át, hogy klónozom azt a sheetet ami begyűjti az adatokat.
Az eredeti lenne a Feed sheet. Továbbra is szépen beszippantaná az adatokat a megnyitott file-ból. A klón lenne a Store sheet, ide csak "Value"-ként tenném át az adatokat egy az egyben a Feed sheetről. Innentől a fileomban minden további cella csak a Store sheetre hivatkozna, ahol megmaradnának az adatok, egészen addig, amíg újra meg nem nyitom a másik file-t, ami a Feed sheeten keresztül beupdatelné a Store sheetemet.Viszont ehhez macro-t kéne használnom, amihez sajnos csak nagyon minimálisan értek, szóval ehhez kéne a segítségetek. Leírom, mi lenne a legideálisabb működés számomra, aztán max egyszerűsítünk rajta, ha valamelyik rész túl problémás.
Macro - Gombnyomásra indul
1. Felugrik a file megnyitás dialog box és user kiválasztja és megnyitja a másik file-t, amiből átszívjuk az adatokat. Innentől nevezzük Update.xls-nek. (A valóságban ennek a neve teljesen random módon változik, a kiterjesztése pedig lehet bármilyen excel formátum, szóval xls, xlsx, xlsm stb)2. Az újonnan megnyitott file nevét kiterjesztéssel együtt be kéne írni egy cellába az én fileomba, hogy táplálja az INDIRECT függvényeket a Feed sheeten. Szóval abba, a fileba ahonnan a macro-t indítottuk. Legyen mostantól Original.xlsx. Írja mondjuk a Sheet1!A1-be.
(Ezt a lépést nem tudtam megoldani egyáltalán, de remélem van rá valami okos mód. Azt talán ki lehet használni, hogy gondolom az Update.xls lesz az active.workbook, mivel épp most nyitottuk meg. De sajnos annyira nem értek vba-hoz, hogy ezt ki tudjam használni és át tudjam lopni a nevét a macrot futtató workbookomba. Legjobb lenne a file nevet kiterjesztéssel együtt, de elérési útvonal nélkül beírni. Ha nagyon nem megy másképp, akkor lehet kiterjesztés nélkül is. Egyébként az én fileom neve sem fix, de arra talán lehet hivatkozni úgy, hogy ahonnan fut a macro. Nehezítés, hogy a usereknek ezeken kívül még számos másik excele is lehet nyitva, amik nem kéne bezavarjanak)3. Ide esetleg be lehet tenni 1mp delay-t, hogy biztos frissüljön be minden adat a Feed sheeten. Nem tudom ez szükséges-e. Viszont mindenképp jó lenne egy check, hogy bármelyik formula errorra futott-e a Feed sheeten(elég az A1:Z200 range-t nézni). Ha igen, akkor le is állhat a macro egy hibaüzenettel.
4. Ha nincs error, akkor Feed!A1:Z200 range-ben a formulák eredményeit kéne áttenni valueként a Store!A1:Z200-ba. (nem tudom számít-e, de ebben a range-ben van néhány merged cella is. Illetve nem kizárólag formulák vannak, hanem néhány szöveges cella is, leginkább a táblázat headerjei)
5. Kész is, sikeres message box-szal zárulhat az update.
-
Pá
addikt
Kicsit az előzőhöz kapcsolódik, de inkább külön postba teszem, hogy ne keveredjen.
A másik táblázatban néha szövegként van megadva a dátum. PL, valami nagyokos így írja be:
'30/06/2023
Ezt hogy tudnám a legegyszerűbben bepattintani a DATE függvénybe? Vagy bármi más módon használható dátumot faragni belőle? Az a baj, hogy nem mindig pont így szar, néha másképp rontják el, szóval jó lenne egy valami általános dátumgyártó csodaszer, ha egyáltalán létezik ilyen.
(text-to-column annyira nem működik, mivel ez alapvetően egy formula eredménye és a formulát akarja szétbombázni)
szerk: sokszor viszont jól van megadva a dátum. Szóval arra is kéne egy függvény vagy valami, amivel először el tudom dönteni, hogy használható-e a dolog, vagy sem. Hogy aztán csak az utóbbira szabadítsam rá a csodaszert.
-
Pá
addikt
Sziasztok!
Van egy nagy táblázatom (enyém, én szerkesztem), amihez egy másik táblázatból (erre nincs befolyásom, készen kapom) kell adatokat áthúznom . Eddig egyszerű, de van néhány bonyolító tényező.
- Ez a másik táblázat valójában több táblázat. Ami itt lényeges, hogy a táblázat szerkezete ugyanaz, tehát a szükséges adatok pont ugyanazokon a tabokon és cellákban vannak. Viszont a táblázat neve teljesen random mód változik. Muszáj valahogy updatelnem.
- Az én táblázatomban dinamikusan kell tudnom változtatni, hogy a másikból épp melyik tabokról és cellákból milyen adatokat húzok ki.
- A másik táblázatból 10+ tabról kell több száz cellányi adat, szóval az nem opció, hogy kézzel összekötögetem és azzal elvagyok. Mindenképp formulával kell megadni, hogy honnan és miket frissítsen.
- Az én táblázatomat igazából én csak fejlesztem, mások használnák helyettem, így fontos, hogy minél inkább userfriendly és bolondbiztos legyen.Szóval a kérdésem, hogy mi a legoptimálisabb megoldás a fenti paramétereket figyelembe véve?
Jelenleg úgy oldottam meg, hogy az én táblázatomba egy cellába beírom a másik táblázat nevét (XY.xls) és onnantól INDIRECT fügvénnyel össze tudom legózni, hogy épp melyik tabjának melyik cellájából kell az adat.
Ez nagyon jól működik, szóval szívem szerint megtartanám az INDIRECTES megoldást. Viszont két hátránya van, amit szeretnék kiküszöbölni.
1. A másik táblázatot is meg kell nyitnom jelenleg, hogy áthúzza az adatokat. (ez a kisebbik baj).
2. Minden adatot azonnal elfelejt, ahogy bezárom a másik táblázatot.Ez így sajnos nem jó. Ideális esetben úgy kéne működjön, hogy amikor kijön a másik táblázat, akkor abból befrissítem az adatokat az enyémben. Utána a másik táblázatot elfelejtem és dolgozom az enyémben az így szerzett adatokkal. Aztán ha néhány nap vagy hét múlva megint frissül a másik táblázat, akkor megint befrissítem az enyémet és utána megint elvagyok csak azzal.
-
Pá
addikt
Sziasztok!
Van két oszlopom, mondjuk "A"-ban van 16ezer egyedi azonosító jel. "B"-ben pedig ezek közül 400.
Az A oszlopban meg kéne találni hol van ez a 400 és azokat a sorokat kitörölni. Erre van valami frappáns megoldás?
-
Pá
addikt
Segít valaki értelmezni az alábbi formulát?
=MATCH(2,1/(E29:E148>0))
Elvileg az lenne a feladata, hogy megmutassa, hogy az adott tartományban (E29:E148) hányadik sorban van az utolsó, nem zéró érték. (ebbe a tartományba eleve csak pozitív számokat lehet írni).
És tulajdonképpen ezt is csinálja, csak nem értem a logikáját.A spreadsheetet örököltem és szeretném fejleszteni, de ahhoz nem ártana, ha érteném, hogy működik.
Ha az első argumentet 2-ről lecserélem bármire, az nem igazán változtat az eredményen, így is úgy is működik. :S Vagyis 1-gyel néha jó eredményt ad, néha nem, de 2 vagy nagyobb számok esetén mindig ugyanazt adja, szóval nem pontosan világos ennek a szerepe.
Meg azt sem teljesen értem, mit jelent az, hogy 1-et osztjuk a tartománnyal.edit: ok, az 1/(E29:E148>0) része mondjuk, hogy megvan. Úgy látom, hogy tesz egy 1-est, minden sorba, ahol teljesül a >0 feltétel.
Szóval már csak a Matches részt nem teljesen tiszta. -
Pá
addikt
Sziasztok!
Meg lehet oldani makró nélkül hogy egy sort hide/unhideoljon excel bizonyos feltételek esetén? Mondjuk conditional formatting, vagy bármilyen egyéb okos módszerrel?
-
Pá
addikt
Köszi szépen a tippeket, Fferi, Delila és vízilabdás!
Mindegyik hasznos a maga módján, megpróbálok belőlük összelegozni valamit, ha nem sikerül kibújni a feladat alól holnap.
-
Pá
addikt
válasz
Fferi50 #43761 üzenetére
Heti adatok vannak az elmúlt 15 évből, minden hétnek egy külön
tabmunkalap. Kb így néz ki.
A sheetek fixek, már nem változnak és nem szúrnék be közéjük semmit. Szóval ha esetleg van sorszámuk vagy ilyesmi, arra lehet hivatkozni.Igen, nem összeadni kén, hanem egymás mellé kirakni az adatokat. Chartot kéne majd rajzolni belőle, hogy változtak hétről-hétre.
Köszi, sajnos én is csak attól féltem, hogy makroval lehet, egyelőre várjunk vele, megpróbálom másik oldalról megoldani.
Aztán, ha sehogy se megy, akkor visszajövök kitalálni a makrót. -
Pá
addikt
Sziasztok!
Van egy excel táblám, amiben van sok 100 tab. (fülecske alul
)
Arra lenne szükségem, hogy egy új üres tabon egymás mellé vagy egymás alá kigyűjteni a többi tabról mondjuk a B5 cella tartalmát. Esetleg megadhatnám, hogy a 65-től a 122-es tabig gyűjtse ki mindegyikről a B5-B8-B12 cellákat, ilyesmi.
Az a baj, hogy a tabok elnevezésében nincs semmi szabály, szóval teljesen random.
Van erre bármi okos módszer? -
Pá
addikt
Sziasztok!
Excel 365-öt használok, és nem működik a lenti parancs valamiért.
SendKeys "[End]"
Azt írja, hogy illegal keyword...
Enter-t meg space-t enged ütni, csak az END gombbal van baja. Van bárkinek bármi ötlete, hogy tudnék END-et nyomni? kööszi! -
Pá
addikt
Sziasztok!
Van két sheetem, ahol az egyik gyakorlatilag tükrözi a másikat.
A1 = A1, B1 = B1 stb módon
persze néhány cella meg van szorozva, vagy el van osztva valamivel, de alapvetően egyként lélegeznek.Annyi a gondom, hogy az első inputos sheeten néha törölnöm kell sorokat. Viszont ilyenkor a második (result) sheeten elbarmolódnak a formulák #REF-et mutatva.
Van erre valami okos megoldás, hogy tudjak nyugodtan sorokat törölni az első sheetről és ez ne zavarja össze a másodikat?
-
Pá
addikt
Sziasztok!
Formázós kérdésem lesz.
Van egy több száz soros táblázatom, ahol a sorok zebra mintára vannak színezve, hogy könnyebben átlátható-olvasható legyen. Szóval minden páratlan sor fehér, minden páros pedig szürke mondjuk.
Viszont ebben a táblázatban nagyon gyakran kell a 'Sort' funkcióval átrendeznem a sorok sorrendjét, Szóval viszonylag gyakran keverem össze a sorokat, mindenféle szempont alapján, ami tesrmészetesen tönkreteszi a szép "zebra" mintát is. Előfordul, hogy sorokat kell törölnöm is belőle, természetesen ez is elrontja a mintát.
Van valami okos megoldás arra, hogy amikor a sort funkcióval rendezgetem a sorokat, az ne barmolja szét a formátumot? Valahogy befixálni, hogy minden páros sor fehér, páratlan meg szürke? És a sorok variálása ezt ne befolyásolja?
köszi előre is
-
Pá
addikt
válasz
Overtaker #35544 üzenetére
Szupi, ez egész jól működik.
Egy valamit lenne jó még finomítani rajta. Előfordul, hogy holtverseny van, szóval 2-3 egyforma nagy érték van a táblázatban.Emiatt a Large függvénnyel kilistázom az 5 legnagyobbat. Viszont, ha holtverseny van, akkor a Match csak az első helyét találja meg. A másodikat nem. :S
-
Pá
addikt
válasz
sztanozs #35541 üzenetére
köszi!
most más irányból próbálom megoldani a feladatot.
Ehhez egy olyan függvényre lenne szükségem, amelyik megmondja, hogy egy oszlopnyi értékből hányadik sorban van a legnagyobb szám.
Szóval olyasmi, mint a MAX függvény. De nem a legnagyobb cellának az értéke kell, hanem a helye vagy sorszáma, vagy igazából bármi jó, amivel be tudom azonosítani a cellát.
szerk: másképp fogalmazva: nem arra vagyok kíváncsi mekkora a legnagyobb érték. Hanem az oszlopnyi adatból mindig a legnagyobb értékűre szeretnék hivatkozni.
-
Pá
addikt
Sziasztok!
Solver problémám van, megpróbálom egyszerűen leírni, remélem sikerül.
Van 3 cellám. Mindháromba 1-20 közötti egész szám kerülhet csak.
Mindegyik számhoz tartozik egy másik, amit VLOOKUP-pal hívok elő a mellettük lévő cellában. A két szám között semmilyen szabályszerűség nincs.
Pl ha a 3 input cellába azt írom, hogy 4-16-11 -->akkor az output mondjuk 25-0-13 lesz
ha pl 5-2-19-et írok inputnak, akkor output lesz mondjuk 15-4-3Annyit szeretnék kérni solvertől, hogy keresse meg azt a 3 input számot, amivel maximalizálhatom a 3 output cella összegét.
Nem gondolnám, hogy túl bonyolult a probléma, összesen pár ezer kombináció van, akár mind végignézhetné egy tizedmásodperc alatt. De úgy tűnik, megzavarja a vlookup, meg az integer megkötést sem veszi túl komolyan, mert valamiért mindig a tört számokat erölteti az input cellákban.Erre van esetleg valami megoldás, vagy okos beállítás? előre is köszi
szerk: Excel 2007-et használok, ha ez számít
-
Pá
addikt
válasz
föccer #34375 üzenetére
Szóval ez csak RAM?
Céges gép, szóval RAM bővítés nem igazán jön szóba, viszont kérdés, hogy a táblázatokkal mit lehet csinálni esetleg, hogy ne menjen fel az égbe a memóriaszükséglet? Lehet valahogy optimializálni? Van valami ami nagyon megdobja?
Azért nem értem, mert ha egyzer "elromlik", akkor hiába zárok be 3-4 excel táblát, már nem javul meg, addig amíg újra nem indítom az excelt.
-
Pá
addikt
Valaki találkozott már a lenti hibaüzenettel?
Elég gyakran megkapom mostanában az exceltől, viszont mindenféle rendszer nélkül.
van, hogy minden gond nélkül enged 10+ excelt is megnyitni, máskor meg már 3-nál kiakad. Ilyenkor nem enged megnyitni új excelt, de a már nyitottakkal simán tudok dolgozni, minden gond nélkül.
Viszont ha már kiakadt, akkor nem segít, ha bezárok párat. Pl bezárok 5-öt, akkor sem enged már újat megnyitni. Mindig be kell zárni az összes excelt. De utána pl simán engedi visszanyitni az összeset és akár még pluszban azt is, amit akartam. -
Pá
addikt
Sziasztok!
Az alábbi formulát szeretném beírni B oszlopba
B1 --> sum(A1)
B2 --> sum(A1:A2)
B3 --> sum(A1:A3)
B4 --> sum(A1:A4)
etcHogy tudom a legegyszerűbben megoldani?
Új hozzászólás Aktív témák
Hirdetés
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RTX 4060Ti 8GB GAMER PC termékbeszámítással
- HP 200W (19.5V 10.3A) kis kék, kerek, 4.5x3.0mm töltők + tápkábel, 928429-002
- Xiaomi Redmi Note 12 Pro 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- Telefon felvásárlás!! Xiaomi Redmi 9, Xiaomi Redmi 9AT, Xiaomi Redmi 10, Xiaomi Redmi 10 2022
- Bomba ár! Lenovo ThinkPad X260 - i5-6G I 8GB I 256GB SSD I 12,5" HD I HDMI I CAM I W10 I Gari!
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged