-
GAMEPOD.hu
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
-
KaliJoe
csendes tag
válasz csferke #25748 üzenetére
Szia csferke,
Az Excel a dátum és idő értéket, egy egész (az 1900-01-01-től eltelt napok száma) és egy törtrész összegeként tárolja, amely törtrész az egy napon belüli értéket mondja meg.
Tehát, ha a teljes dátumérték - ami Neked az A oszlopodban van - FIX részét veszed, akkor megkapod a dátumot, leválasztva róla az időértéket.
És folytatva, ha a teljes dátumértékből kivonod a dátumérték egész részét megkapod a napon belüli törtértéket. Ezeket megfelelően formázva megkapod a szétválasztott dátumot, és időt.Képlettel (ez jobb):
"C" oszlop: =DÁTUMÉRTÉK(SZÖVEG(KEREK.LE(A1;0);"éééé-hh-nn"))
"D" oszlop: =A1-KEREK.LE(A1;0)
A "D" oszlophoz, még az időformátumot is be kell állítsd![ Szerkesztve ]
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
-
Fferi50
őstag
válasz KaliJoe #25754 üzenetére
Szia!
A következőt javaslom:
Az F oszlopba írd be a Szervezet munkalapról kivenni tervezett címeket:
F2 cella Szervezet!L2
A G oszlopba írd be a következő képletet:
G2 cella =CELLA("cím";INDIREKT(F2))
Ebben az esetben a B2 képletedbe a CELLA("cím";Szervezet!L2) helyett írhatod mindenhova, hogy G2,
vagyis a képlet: =JOBB(G2;HOSSZ(G2)-SZÖVEG.KERES("!";G2;1))
A D2 képlete: =SOR(INDIREKT(G2))Ezeket a képleteket (az F oszlop kivételével, ahová nyilván be kell írni tételesen minden cellába) végighúzhatod az adott oszlopon.
Üdv.[ Szerkesztve ]
-
KaliJoe
csendes tag
válasz csferke #25756 üzenetére
Szia csferke,
A formátumokat, és annak nemzeti vetületeit magad határozod meg... a megoldás ettől teljesen független.
A képletek angolul:
"C" oszlop: =DATEVALUE(TEXT(ROUNDDOWN(A1;0);"éééé-hh-nn"))
"D" oszlop: =A1-ROUNDDOWN(A1;0)Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
Fferi50
őstag
válasz csferke #25756 üzenetére
Szia!
Akkor most mi is a kérdés?
Mert elsőre azt írtad, hogy az A oszlop adatait szeretnéd szétbontani a C és D oszlop szerint.
Most azt írod, a C oszlopba dátumot, a D oszlopba időt szeretnél bevinni. Utána mi vele a célod???
Egyébként pedig annyit kell tenned, hogy a C oszlopot megformázod Dátum formátumra a cellaformázásban, úgy ahogyan Te szeretnéd a dátumot látni és máris írhatod be.
Ugyanezt kell tenni a D oszloppal idő formátumra. Amilyenre formáztad, olyan módon viheted be a cellákba az értéket.Üdv.
-
KaliJoe
csendes tag
válasz Fferi50 #25757 üzenetére
Szia Fferi_50,
A szűkített problémára megoldás, amit írtál, de a teljesség szempontjából nem. Mivel láttad a táblát, látod, h ez egy fa szimuláció kezdő munkalapjai. Később ezt makróban akarom megírni, ezek csak skiccek.
Vagyis, mivel a fa bővül / bővíthető, és programból fog bővülni, ezért az egyes linkek változnak! Nem tudom statikusan beírni őket... épp ez lenne a lényeg, hogyha a Szervezet fülön újabb szint keletkezik, és újabb elemek (személyek) épülnek be, akkor a meglévők automatikusan frissítődnek... és én már régen nem is tudom, h éppen melyik cella tartalmazza az egyes elemek helyét.
Előfordulhat, hogy 10-20-vagy több mélységben akarok modellezni egy bináris fát.Szóval, úgy kellene megoldani, h csak egyszer kelljen megadni a beíráskor egy új elem / cella helyét... a többi számítás már erre tudjon támaszkodni, majd, ha új elemet / szintet építek be, és a rajz bővülése miatt változik a cella koordinátája, akkor azt az Excel leköveti.
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
Fferi50
őstag
válasz KaliJoe #25760 üzenetére
Szia!
Ezen még gondolkodni kellene, egyrészt azon, hogy hova lehet beilleszteni új elemeket, másrészt pedig miként lehet ezt makróval követni.
Jó lenne, ha mélyebben kifejtenéd a modell lényegét - akár folyamatábrával megtoldva -, mivel úgy lehet igazán programozni, ha ismerjük a folyamatot.
Üdv.
-
csferke
senior tag
válasz Fferi50 #25759 üzenetére
Igen, sajna aki tudja, hogy mire gondol az úgy hiszi, hogy mások is látják a gondolatait
Nem írtam le pontosan, hogy mire is gondoltam. Elnézést a mellébeszélésem miatt.Tehát eddig az A1:A2-be vittem be az adatokat (nn.hh.éééé óó:pp) és számoltam az A3=A2-A1-ben (nn óó:pp)
A könnyebb adatbevitel véget szeretném a C1:C2-be beírni a dátumot (nn.hh.éééé) és a D1:D2-be az időt (óó:pp) és ezekből kiszámítani D3-ban ugyanazt az értéket mint A3-ban (nn óó:pp)
Még egyszer elnézést a pontatlan fogalmazásért
[ Szerkesztve ]
-
KaliJoe
csendes tag
válasz csferke #25762 üzenetére
Szia csferke,
Akkor most még kevésbé értem a problémád! Mivel, ha külön vannak ezek, akkor egy egyszerű kivonás már megadja az eredményeket. Napok tekintetében és az órák tekintetében is.
Ha tehát tényleg D3 a keresett cella, az egy egyzserű kivonás. Ha netán az A3-ra gondoltál, akkor csak össze kell adni a C3+D3 értékeit, és a kívánt formátumot beállítani...
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
pirit28
csendes tag
Sziasztok !
Van egy VBA -m, ami a következőket csinálja.
Gombnyomásra,be kell tallóznom egy megadott file-t
Majd 3 percenként újra meghívja az előzően betallózott file-t,és másolja egy megadott helyre.
A gond az, hogy néha x időközönként nem 3 percenként hanem van ,hogy 1 perc lejárta előtt 2* is frissít, vagyis másol.
A másik gond meg az ,hogy x időközönként meg olyan mintha 1-2 másodpercre lefagyna az excel,mert cella lépegetéskor nem történik semmi.
Ebben az érthetetlen feladat megoldásában szeretném a segítségeteket kérni.Köszönöm
-
Fferi50
őstag
válasz TrollBalint #25744 üzenetére
Szia!
A #25749 hozzászólásomban levő függvény nem teljesen jó sajnos, mert nem a munkanapokat számolja, hanem csak a napokat. Javítottam, ezt próbáld meg légy szíves:
Function munkanapos(ByVal mettol As Date, Optional hanynap As Integer) As Date
Dim unnepek As Range, munkanap As Date, napi As Range, napok As Date, napjai As Integer
Set unnepek = Sheet1.Range("G2:G19")
napjai = 0
munkanap = mettol
Do While napjai <= hanynap
napok = mettol + napjai
Set napi = unnepek.Find(what:=napok, LookIn:=xlValues, lookat:=xlWhole)
If Not napi Is Nothing Then
If Application.Weekday(napok, vbMonday) = 6 Then
munkanap = napok
End If
Else
If Application.Weekday(napok, vbMonday) < 6 Then
munkanap = napok
End If
End If
napjai = napjai + 1
Loop
munkanapos = munkanap
End FunctionÜdv.
-
slashing
senior tag
KaliJoe
nem lenne egyszerűbb megfordítani a dolgot és a fát kirajzolni egy táblából mint a fából kiíratni a táblába? Mert szerintem minden szempontból egyszerűbb lenne egy táblába felvinni a szinteket stb... és azt kirajzoltatni valahogy...
-
Fferi50
őstag
válasz pirit28 #25764 üzenetére
Szia!
Azt szeretném megkérdezni, mi az oka annak, hogy új Excel applikációt töltesz be a program futásához. Annak a betöltése is időt vesz igénybe, másrészt akár befolyásolhatja az időzítőt is (bár ezt nem tapasztalatból mondom).
Ha csak az értékeket szeretnéd átmásolni, akkor "be lehet rántani" egy tömbbe egyszerre az egész tartományt és egybe ki is lehet írni a másik munkalapra, nem kell hozzá ciklus.
dim uploadA()
uploadA=Fsheet.range(cells(1,1),cells(80,36)).value
Tosheet.range(cells(1,1),cells(80,36)).value=uploadAés törölni sem kell a tömb értékét.
De szerintem még annál is gyorsabb a közvetlen értékadás:
Tosheet.range(cells(1,1),cells(80,36)).value=Fsheet.range(cells(1,1),cells(80,36)).value
Hiszen egyébként a két munkafüzeted együtt nyitva van.
Üdv.
[ Szerkesztve ]
-
csferke
senior tag
válasz KaliJoe #25763 üzenetére
...akkor csak össze kell adni a C3+D3 értékeit...
Hogy én MEKKORA ökör vagyok
A legegyszerűbb megoldás a legkézenfekvőbb én meg valami bonyolult képleten törtem a fejem egész délután és nem jött össze. Nem láttam a fáktól az erdőt.D3=(C2-C1)+(D2-D1) (cellaformátum nn óó:pp)
Köszönöm, hogy volt türelmed velem foglalkozni.
[ Szerkesztve ]
-
KaliJoe
csendes tag
-
KaliJoe
csendes tag
válasz slashing #25766 üzenetére
Szia slashing,
Tulajdonképpen mindegy a feladatom szempontjából. Csak nézőpont kérdése. Nem a kirajzolás, hanem a kirajzolt elemek kapcsolata az adatbázissal a fontos.
A fa megrajzolása mellékszál a probléma szempontjából. Sajnos, arra is szükségem lehet, h egy már létező táblát, valahol - a fa egy pontjából - tovább folytassam. Így meg kell tudnom határozni a helyét a fában.Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
Fferi50
őstag
válasz KaliJoe #25770 üzenetére
Szia!
Annál inkább nem ártana egy viszonylag pontos modellt összerakni és utána folytatni a történetet. Esetleg érdemes lenne utánanézni a neten, hátha másvalakinek is eszébe jutott már ilyesmi.
Maga a feladat pedig eléggé zsetonos formát kezd ölteni (úgy tűnik, nem "kisujjból kirázós").
Üdv.
[ Szerkesztve ]
-
pirit28
csendes tag
válasz Fferi50 #25767 üzenetére
Szia !
Kösz a gyors reakciót.
A két munkafüzet nyitva van de két különböző gépen.
Az enyémben amibe a kért adatokat kell betölteni,az nyitja meg (csak olvashatóként) a file-t és abból másol adatokat az én munkafüzetembe.
Sajna azért másoltam be képet, mert DRM védett a file.De ha nagyon kell akkor holnap megoldom,és bemásolom karakteresen -
Fferi50
őstag
válasz pirit28 #25772 üzenetére
Szia!
Akkor nálad egyszerre van nyitva a két fájl egyazon alkalmazásban - ezt mutatja a kódod. Bár ettől még mindig nem értem, miért kell új Excel alkalmazást indítani hozzá - hiszen a makró az "anya" alkalmazásban levő munkafüzetben fut és ide hozzá lehetne nyitni a másik két munkafüzetet is. A fromBook és toBook ugyanúgy hozzárendelhető ezekhez itt is. Szerintem műxik a direkt értékadás - csak a tartományokat kell összehangolni, mert ez csak folyamatos egybefüggő tartománynál lehetséges.
Az időingadozás (de főleg a "lefagyás" tünet) oka lehet a hálózati hozzá(nem)férés időszükséglete is.
(Néha az én excelem is csinál ilyet, pedig csak egy gépen van - jól "elszórakozik" saját magával) Az automatikus mentésnek is van ilyen "fagyásosnak tűnő" hatása.Nem lenne baj, ha valahogyan szöveges formában is lehetne látni a kódokat. Ha így lehet látni a kódot, akkor nem tudod a modult exportálni vajon?
Üdv.
-
azopi74
addikt
válasz csferke #25768 üzenetére
Nem vagy ökör, csak az eredeti kérdés feltevés volt kissé rosszul fogalmazva
"Szeretném különválasztani az "A1:A2" mezőket "C1:C2" dátum és "D1:D2" óra:perc-re..."
helyett ha rögtön
"Szeretném egyberakni a C1:C2 dátum és D1:D2 óra:perc- mezőket teljes időadat mezőre, aztán különbséget képezni belőlük "
kellett volna rögtön, és akkor feltehetően megspóroltál volna pár felesleges kört.
Sőt, fel se kellett volna tenned a kérdést, mert hát a "+" az egyik legjobb módszer az összeadásra, kivonásra meg a "-" jel, szóval a TimeEnd - TimeStart, jelen esetben (c2+d2)-(c1+d1) tökéletesen járható útAz általad említett D3=(C2-C1)+(D2-D1) már kissé szofisztikált, mert bár mi ismerjük az alapműveletek azonoságait, bölcsészeknek pl nem biztos, hogy ez annyira átlátható és evidens képletezés lenne
[ Szerkesztve ]
-
azopi74
addikt
válasz TrollBalint #25744 üzenetére
"Az első feladat, amivel most szenvedek, az annyi lenne, hogy egy dátumtól számolva a paraméterben megadott számnyi munkanapot leszámol és azt a dátumot adja vissza. Viszont ha ezen túl vagyok lesz olyan is, hogy két dátum között kell kiszámolni a munkanapok számát."
De minek kell ehhez makró?
Ha úgyis már megvannak a típusok naptári naponként nézve egy táblában, akkor, (ha ezt a táblát pl elnevezed DayType-nak, a napot Day-nek, a típust Type-nak, és csinálsz egy plusz mezőt (WorkDayCum) az adott napig eltelt munkanapok számának meghatározására így : =COUNTIFS([Type],"Workday",[Day],"<="&[@Day])Ekkor a két dátum (Kezdodatum, ZaroDatum) közti munkanapok száma:
=COUNTIFS(DayType[Type],"Workday",DayType[Day],">="&mnapkalk[@KezdoDatum],DayType[Day],"<"&mnapkalk[@ZaroDatum])
relációs jeleket tetszőlegesen állítsd, attól függően, hogy az első és utolsó napokat bele akarok számítani
Az adott napra (KezdoDatum) rászámolt munkapok (mnapok) pedig:
=INDEX(DayType[Day],MATCH(VLOOKUP([KezdoDatum],DayType,3,0)+[mnapok],DayType[WorkDayCum],0),1)
Tömbfüggvénnyel persze segédoszlop nélkül is megoldható, mint minden, csak az már egy kicsit szofisztikáltabb megoldás lenne
-
Attila7298
újonc
Sziasztok! tudnátok segíteni a megoldásban. Van egy munkalap arról szeretnék a 3,5, 7 oszlop szűrésével adatokat másolni egy másik munkalapra. A gond az hogy nem tudom megoldani hogy ha a keresés lefut az egy sorba tartozok ne külön sorba kerüljenek.
Sub masolasi()
Dim i, p, n, sor As Integer 'i-sor, n- sor a Munka2-nsor = Worksheets("Idöszakos").Cells(1, 1) 'utolsó sor
n = 4
t = Worksheets("Adat szürés").Cells(17, 6) 'kereset szám
Sheets("Idöszakos").ActivateFor i = 4 To sor
p = InStr(1, Cells(i, 3).Value, t, vbTextCompare)
p1 = InStr(1, Cells(i, 5).Value, t, vbTextCompare)
p2 = InStr(1, Cells(i, 7).Value, t, vbTextCompare)If p > 0 Then
Worksheets("Sz_adat").Cells(n, 7).Value = Cells(i, 2).Value
Worksheets("Sz_adat").Cells(n, 1).Value = Cells(i, 1).Value
Worksheets("Sz_adat").Cells(n, 8).Value = Cells(i, 1).Valuen = n + 1
End If
If p1 > 0 Then
Worksheets("Sz_adat").Cells(n, 9).Value = Cells(i, 4).Value
Worksheets("Sz_adat").Cells(n, 1).Value = Cells(i, 1).Value
Worksheets("Sz_adat").Cells(n, 10).Value = Cells(i, 1).Valuen = n + 1
End If
If p2 > 0 Then
Worksheets("Sz_adat").Cells(n, 11).Value = Cells(i, 6).Value
Worksheets("Sz_adat").Cells(n, 1).Value = Cells(i, 1).Value
Worksheets("Sz_adat").Cells(n, 12).Value = Cells(i, 1).Valuen = n + 1
End If
Next iEnd Sub
ez az eredmény
Előre köszi minden segítséget
[ Szerkesztve ]
-
TrollBalint
addikt
válasz Fferi50 #25765 üzenetére
Hello,
köszi, kipróbáltam a makrót, tényleg meg lehet hívni függvényként és módosítja a cellát (ha éppen az excel hajlandó felajánlani, hogy engedélyezem-e makrókat, mert valamiért nem akarja mindig megkérdezni és ilyenkor értesítési sávba se teszi ki, hogy engedélyezzem, de ez már másik tészta ) viszont van vele egy kis gondom. Ha paraméternek 7-et adok meg, akkor nem 7 munkanapot számol le, hanem 7 napot. Amit írtál, hogy a G oszlopba másoljam át a H oszlop tartalmát, ott H oszlop alatt az I oszlopot értetted? Csak mert a H üres
Valamint, ezt miért is kell átmásolni? (közben nézegetem, hátha rájövök én is, mi a hiba){@azopi74: Köszi a segítséget, de el tudnád kicsit magyarázni ez hogy is működik? Mert az tény, hogy működik, csak nagyon nem bírom összerakni. Ez a sok hivatkozás, lista stb. nekem nagyon nehezen érthetővé teszi. Illetve van-e benne olyan függvény, ami esetleg 2007-es excel alatt nem megy?
[ Szerkesztve ]
https://www.pathofexile.com/account/view-profile/Haarkon/characters
-
Smogus
őstag
Sziasztok!
Olyan kérdésem lenne, hogy tudok-e olyat csinálni, hogy nem egy cellához adok megjegyzést, hanem egy egész munkafüzethez?
Tehát az egész munkafüzetre vonatkozóan szeretnék jegyzeteket elhelyezni, hogy mi az amit még később meg csinálnom az adott munkafüzeten. Jó lenne ha más számára is gyorsan átlátható, elő lehet hívni egy oldalsávra aztán az alapján el lehet végezni a módosításokat?Előre is köszönöm a segítséget.
Ha az emberi agy elég egyszerű lenne ahhoz, hogy megértsük, akkor egyszerűségünkben erre már nem lehetnénk képesek. -- http://smogus.deviantart.com/ --
-
azopi74
addikt
válasz TrollBalint #25778 üzenetére
Milyen sok hivatkozás és lista? Én a te általad készített hivatkozásokat és listákat használtam, és a te képletedet használtam a nap típus meghatározására is
Csak táblává alakítottam a range-eidet, mert utálok cellahivatkozásokkal szórakozni, így szerintem sokkal olvashatóbb a képlet, és átláthatóbb az egész, mintha Range hivatkozásokkal nyomnánk be (no meg a munka is sokkal gyorsabb vele, mint range-ekkel, és robusztusabb is)
Nem olvashatóbb az, hogy
=IF(COUNTIF(Munkanapok[Munkanapok],[@Day])>0,"Workday",IF(OR(WEEKDAY([@Day],2)>5,COUNTIF(Mszunet[Munkaszüneti napok],[@Day])),"Holiday","Workday"))
, mint az, hogy
=IF(COUNTIF(Settings!$K$2:$K$4,Settings!$E2)>0,"Workday",IF(OR(WEEKDAY(Settings!$E2,2)>5,COUNTIF(Settings!$I$2:$I$16,Settings!$E2)),"Holiday","Workday"))
?
(ez a te függvényed)
Ilyen adatbázis szintű feladatok, strukturált táblázatok esetén mindig egészségesebb táblákkal dolgozni minden szempontból. Megéri, egy mozdulat az egész (Insert - Table) Most részletezném minden előnyét, mert estig azokat sorolnám, kezdd el használni, sose fogz többé range-ekkel és cellákkal bajlódni (csak amikor nagyon muszáj,, mert pl olyan szemét formában kapod az adatokat) .
Táblák egyébként Excel 2002 óta vannak támogatva, valamiért mégis kevesen használják számomra érthetetlen módon.
A függvények, amiket használtam, alap excel függvények, mindegyiknek mennie kell 2007-en.
Countifs 2003 óta megy (előtte tömbfüggvényekkel kellett bajlódni ilyesmikhez)
Index, match és vlookup pedig emberemlékezet óta van az excel-ben, azok nélkül elég nehéz lenne az élet Bár vlookup-ut ki lehetne dobni . 97 óta biztosan benne vannek, előtte nem tudom, mert nem nagyon használtam. Más függvényt nem használtam.A képletek:
Eltelt munkanapok:
=COUNTIFS([Type],"Workday",[Day],"<="&[@Day])
Szerintem ezt nem kell magyarázni, (bár ezt lehetett volna sime countif-fel is, de az nem áll az ujjaimra
az mnapok - hoz használt képlet:
=COUNTIFS(DayType[Type],"Workday",DayType[Day],">="&[@KezdoDatum],DayType[Day],"<"&[@ZaroDatum])
Csak annyit tesz, hogy összeszámolja a kezdő és végső dátum közötti munkanapokat (ahol teljesül mindhárom feltétel)
Zarodatum-hoz használt kalkuláció egy kicsit összetettebb, de nem túl bonyolult:
=INDEX(DayType[Day],MATCH(VLOOKUP([KezdoDatum],DayType,3,0)+[mnapok],DayType[WorkDayCum],0),1)
VLOOKUP([KezdoDatum],DayType,3,0)+[mnapok] [I]-> Spoiler[/I]
Kikeresi a napok táblájában az adott napig eltelt munkapok számát, hozzáadja a hozzáadandó munkanap számot. Bár nem szép megoldás a vlookup, kerülendő a használata, egyrészt korlátoltsága, másrészt sebezhetősége miatt, így szinte mindig INDEX + MATCH használata javasolt helyette. De most ezt választottam az egyszerűség kedvéért.
=INDEX(DayType[Day],MATCH([I][SP]VLOOKUP([KezdoDatum],DayType,3,0)+[mnapok][/SP][/I],DayType[WorkDayCum],0),1)
Visszakeresi ugyanitt azt az első napot, ami az előző függvény által visszadott érték, vagyis ameddig az eredetileg eltelt + hozzáadandó munkanapok teltek el. Itt már ugye, ha akartam se tudtam volna VLOOKUP-ot használni a korlátai miatt, csak úgy, ha további segédoszlopot használok. Egyébként többfüggvénnyel mindenféle segédoszlop nélkül is meg lehetett volna oldani a dolgot
[ Szerkesztve ]
-
TrollBalint
addikt
válasz azopi74 #25780 üzenetére
Igazad van, olvashatónak olvashatóbb az első, amit te írtál, de nekem érthetőbb a második. Annyi Range van nálad, hogy egyszerre nehéz megjegyezni. De hosszabb távon tényleg kényelmesebb.
De pl azt a cellát (P oszlop) ahol csak annyi van, hogy =mnapok, nekem nem értelmezhető. De a délutánt (ebéd után) az időt erre szánom, mert egyébként a megoldás nagyon tetszik. (Főleg, hogy nem kell makrót engedélyezni)https://www.pathofexile.com/account/view-profile/Haarkon/characters
-
azopi74
addikt
válasz TrollBalint #25781 üzenetére
"Annyi Range van nálad, hogy egyszerre nehéz megjegyezni."
Nálam nincs Range, csak Tábla
De ha neked jobban tetszik a range-es módszer, mert azt szoktad meg, akkor simán alakítsd vissza
Range-ekké az összes táblát (jobbegér a táblában, -> Table, -> Convert to range) és akkor "hagyományos " nézetben látod a képleteket még valami, most vettem észre, hogy valamiért (már nem tudom mit akartam, fáradt voltam biztos )) beraktam Name-be a mnapkalk táblában a mnapok képletét, de az gondolom nem zavar meg, vissza lehet rakni a képletet, semmi szerepe, hogy Name-ként legyen. -
Fferi50
őstag
válasz TrollBalint #25778 üzenetére
Szia!
A javított függvényemben is sikerült egy hibát benne hagyni, ezért nem úgy számol, ahogyan kellene.
A napjai = napjai+1 sort oda kell átirni, ahol a munkanap=napok sorok vannak, az után a sorok után, mivel csak akkor szabad növelni, ha munkanapot talált.
Tehát az a rész így nézne ki:
Do While napjai <= hanynap
napok = mettol + napjai
Set napi = unnepek.Find(what:=napok, LookIn:=xlValues, lookat:=xlWhole)
If Not napi Is Nothing Then
If Application.Weekday(napok, vbMonday) = 6 Then
munkanap = napok
napjai=napjai+1
End If
Else
If Application.Weekday(napok, vbMonday) < 6 Then
munkanap = napok
napjai=napjai+1
End If
End If
LoopTermészetesen az oszlopot is elnéztem, valóban nem a H, hanem az I oszlop adatait kell átírni a G alá. Mégpedig azért, mert a függvény logikája a következő:
Az ünnepek között felsorolt hétköznap (H-P) azt jelenti, hogy az a nap nem munkanap.
Az ünnepek között felsorolt szombat viszont azt jelenti, hogy az a szombat munkanap.Elnézést kérek a hibák miatt.
Üdv.
[ Szerkesztve ]
-
TrollBalint
addikt
válasz Fferi50 #25784 üzenetére
Dehogy kell elnézést kérned, én vagyok a hálás, hogy segítesz
Átírtam mindkét helyen, de ettől lehalt az egész excel
esetleg kicsit letudnád írni, hogy ez a do while hogy működik? az unnnepek.Find, valamint a benne lévő paraméterek mit csinálnak? (az unnepek oké, azok a munkaszüneti napok) de lookIn, lookat, ezeket nem igazán értettem meg. (kis google segítségével sem )
Az If not... teljesen értelmezhetetlen számomra. A weekday, ha jól tudom a hét napját adja vissza egész számban, ha minden igaz, hétfőt tekinti egynek. De miért növelsz mindent a belső If-ben, és az Else ágban is?@azopi74 Fő gondom (most már ) egyes szintaktikával van, a =mnapok számomra ismeretlen formula. Oké, ott van a Name-k között (vagy minek is hívjam) csak én ezt a módszert nem ismertem. és az & jelet se értettem, amivel meghívod a &mnapkalk-ot De akkor ezt a táblát egyúttal már az excelbeli tudásom javítására is felhasználom.
Ezért főleg a sok kérdés (nekem nem elég tudni, érteni is akarom)
[ Szerkesztve ]
https://www.pathofexile.com/account/view-profile/Haarkon/characters
-
sedyke
tag
Sziasztok!
Olyan oszlopdiagramot szeretnek letrehozni, melynel egy napra 3 kulonbozo oszlopban mutatja az ertekeket, de mindegyik oszlop ket adatreszbol allna ossze, vagyis minden oszlop osztva lenne ketfele. Kulon kulon vannak ilyen elore elkeszitett diagramok, de a ketto otvezetet nem tudom, hogy meg lehet-e valositani egyaltalan.
Ti tudtok ilyen lehetosegrol?
Koszi -
Fferi50
őstag
válasz TrollBalint #25785 üzenetére
Szia!
"ettől lehalt az egész excel"
Igazad van, szégyellem magam miatta, mert ezzel belekergettem egy végtelen ciklusba a függvényt.
Ezt most kipróbáltam és működik. Magyarázatokat is fűztem hozzá:
Function munkanapos(ByVal mettol As Date, Optional hanynap As Integer) As Date
Dim unnepek As Range, munkanap As Date, napi As Range, napok As Date, napjai As Integer
Set unnepek = Sheet1.Range("G2:G19") 'itt vannak az ünnepnapok és a dolgozós szombatok
napjai = 0 'nulláról indul a munkanap számláló
munkanap = mettol
napok = mettol 'innen indulunk
Do While napjai <= hanynap 'addig kell a ciklust csinálni, amíg a munkanapok száma eléri a kívánt értéket
Set napi = unnepek.Find(what:=napok, LookIn:=xlValues, lookat:=xlWhole) ' benne van-e az ünnep listában a dátumunk
If Not napi Is Nothing Then ' ha benne van a listában a dátumunk
If Application.Weekday(napok, vbMonday) = 6 Then ' és az szombat, akkor ez munkanap
munkanap = napok ' tehát visszatérési érték lehet
napjai = napjai + 1 'növeljük a munkanap számlálót
End If
Else 'ha nincs benne a listában a dátum
If Application.Weekday(napok, vbMonday) < 6 Then ' és nem szombati nap
munkanap = napok 'akkor lehet visszatérési érték
napjai = napjai + 1 ' növeljük a munkanap számlálót
End If
End If
napok = napok + 1 ' növeljük a dátumunkat egy nappal
Loop 'és folytatjuk a ciklust
munkanapos = munkanap ' ha vége a ciklusnak, akkor a munkanap változó aktuális értékét kell visszaadni
End FunctionNem probléma a kérdés - akkor sem, ha több van. Viszont jónéhányra a VBA help-ben megtalálod a választ.
Pl. Range.Find paramétereinek a magyarázata (illetve egyáltalán a nevesített paraméterek használata).
Szerintem nem úszod meg, hogy alaposan átnézd legalább a VBA help átlalános részét.
Az unnepekben mint írtam, benne vannak a nem munkaszüneti nap szombatok is.
Ezért kell mindkét ágat használni.
If not = magyarul "ha nem" (not ugye a logikai tagadás). Tehát az adott helyen, ha nem semmi(üres) a napi változó értéke - azaz talált a keresés egy olyan napot a listában. Keresésnél ezt a formulát érdemes alkalmazni, mert így nem fogsz hibát kapni.
Ha egyből a keresés eredményével akarnál dolgozni - pl. az abban levő dátumot szeretnéd megtudni, akkor hibaüzenetet kapsz. Van még egy csomó ilyen finomság, amit kb.20 év alatt sikerült összeszednem és még mindig tanulok új dolgokat.
A Weekday a nap számát adja vissza valóban, de hogy melyik napot tekinti a hét első napjának, az a második paraméterétől (ami itt vbMonday) függ.
A növelés logikáját szerintem megérted a makróból.Üdv.
-
Wasquez
senior tag
Sziasztok!
Hogyan lehet egy cellalista lenyíló elemeinek a megjelenítendő sorainak számát beállítani?
PC
-
Smogus
őstag
válasz Fferi50 #25786 üzenetére
Szia!
Amit az Excelben találtam azt nem tudom hogyan tudnám használni erre.
Viszont az ötlet amit azopi74 mondott, hogy tegyek le szövegdobozt az szerintem jól fog működni.
Beállítottam, hogy ne kerüljön nyomtatásba, így nem is tud előfordulni, hogy véletlenül kimegy pdf-re vagy nyomtatásba.Még az lenne az igazi, ha be tudnám állítani, hogy ez a szövegdoboz görgetés alatt mis mindig látható maradjon, de ha ez nem sikerül attól még használható marad
Köszönöm a segítségeteket!
Ha az emberi agy elég egyszerű lenne ahhoz, hogy megértsük, akkor egyszerűségünkben erre már nem lehetnénk képesek. -- http://smogus.deviantart.com/ --
-
Fferi50
őstag
válasz Smogus #25790 üzenetére
Szia!
Nem tudom mit találtál az Excelben. 2010-ben a Fejlesztőeszközök Dokumentumpanel menüpontban elő tudod hozni a dokumentum ablakot, ahová megjegyzéseket is tudsz írni. Be lehet állítani, hogy mikor jelenjen meg. De ebben a menüpontban mindig elő tudod hozni az aktuális állapotát.
Üdv.
-
Delila_1
Topikgazda
válasz Smogus #25790 üzenetére
A makrót rendeld a lapodhoz.
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
ActiveSheet.Shapes(1).Left = Target.Left + 5
ActiveSheet.Shapes(1).Top = Target.Top + 5
End SubHa túl közel jelenik meg a szövegdoboz az aktuális celládhoz, az+ 5-öket írd át nagyobb értékre.
Ha nevet adtál a szövegdobozodnak, vagy nem csak 1 van belőle, a Shapes(1)-nél az 1 helyére idézőjelek között add meg a nevét.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
azopi74
addikt
válasz TrollBalint #25785 üzenetére
- Named Ranges::
Az =mnapok -ért bocs, azt felesleges volt betenni name-be, hiszen nem is használtam tovább a képletet, és még a relatív hivatkozások miatt sincs értelme, hoszen úgyis táblát használtam nem range-et
(mondom, hogy fáradt voltam, meg talán kicsit sok volt a sör is előtte haverokkal, valamit próbáltam, aztán véletlenül úgy marad
De nyugodtan ki lehet szedni, ha visszamásolod az eredeti képletet : =COUNTIFS(DayType[Type],"Workday",DayType[Day],">="&[@KezdoDatum],DayType[Day],"<"&[@ZaroDatum])
és nyomsz rá egy Entert, akkor is ugyanúgy működni fog, mert tábla, ezért semmi funkciója nincs jelen esetben a named range használatának
Azt hiszem, azért csinálhattam, mert a második példádat, (az x-edik munkanap visszakeresését) eredetileg tömb függvénnyel és ennek az mnapok dinamikius named range-el akartam visszakeresni, és azért vezettem be a nevet, hogy ne legyen nagyon szofisztikált a képlet, és olvasható maradjon.Egyébként fő funkciói a named range-eknek:
- állandók, változók használata
- ha valamiért nem használhatsz táblákat, akkor is olvashatóvá és dinamikussá lehet tenni képleteket (dynamic named ranges) Utána bárhol hivatkozhatsz rájuk. Úgy gondolj rájuk, mint egy univerzális jolly joker objektumra, ami lehet akár literál, állandó, változó, tömb, vagy újrafelhasználható, meghívható metódus a programnyelvekben ;>Persze annál azért némileg korlátozottabb lehetőségekkel. Bár azért named ranges + iterációk használatával is bámulatos dolgokat lehet művelni mindenféle makró nélkül, Pl
Ez is jó:
Persze ezek extrém példák, és ez már a másik véglet, de jól mutatják a lehetőségeket.
Néha azért sajnos muszáj VBA-hoz nyúlni. Tudom ezért megköveznek, mert látom elég sok a VBA fan, aki még az összeg függvényt is legszívesebben maga makrózza le, de én annyira nem csipázom a dolgot Főleg, hogy sok cég IT policy-ja nem is engedi a makrók használatát. CSak esetleg szigorú validációt követően. Valamennyire érthető módon, mert hát azért elég csúnya dolgokat is lehet művelni vele,
De az igazság az, hogy ma már szinte mindent meg lehet oldani egyéb, sztenderd excel eszközökkel, , csak olyanokat nem, amire amúgy a VBA sem túl optimális megoldás. Ez persze nem mindig volt így, sokáig elengedhetetlen volt a VBA használata komolyabb feladatokhoz, de sokat okosodik az excel verzóról verzióra, ma már az esetek 99%-ban azokat a dolgokat, amikre a vállalatoknál ezer éves makrókat használnak, sokkal egyszerűbben, biztonságosabban, gyorsabban és hatákonyabban meg lehet más módon is oldani. Nem állítom, hogy mindent, de a használatban lévő VBA kódok 99%-át ki lehetne simán kukázni Taávlati cél úgyis az, hogy eltávolítják a VBA-t az Office-ból, de azért addig még sok víz lefolyik a Dunán...
- & jellel mi a gond? Az olyasmi, mint a CONCATENATE. És hol hívtam meg vele, és mit?
Ja bocs, látom már, mire gondolsz
Az nem meghívás, csak hivatkoztam a mnapkalk tábla (ami egyébként önmaga, tehát, normál esetben nem is kell, főleg, mivel tábláról van szó) különböző mezőire.
Ha kimásolod a képletet, a mnapkalk mnapok mezőjébe és rányomsz egy entert, láthatod, hogy rögtön el is tűnik a saját tábla hivatkozást automatikusan és ebből:=COUNTIFS(DayType[Type],"Workday",DayType[Day],">="&mnapkalk[@KezdoDatum],DayType[Day],"<"&mnapkalk[@ZaroDatum])
ez lesz
=COUNTIFS(DayType[Type],"Workday",DayType[Day],">="&[@KezdoDatum],DayType[Day],"<"&[@ZaroDatum])
Az & jelnek meg ehhez semmi köze, az csak a feltétel megadáshoz kell.
">=" és utána & jelt követően mehet tovább
Te hogy szoktál ilyen feltételeket megadni pl SUMIFS-ben vagy COUNTIFS-ben, meg hasonló függvényekben ?
[ Szerkesztve ]
-
azopi74
addikt
válasz Attila7298 #25777 üzenetére
Szia,
mit is szeretnél pontosan, és mi a gondod?
Azt szeretnéd, hogy ha több feltétel is teljesül (vagyis az "adatszürés" sheet F17 cellájába írt értéket több helyen is megtalálja a 3-ik, 5-ik, és 7-ik oszlop közül, akkor ne ugorjon egy sorral lejjebb minden egyes feltétel kiértékelésnél?
Mert akkor ne léptesd az n-et, minden egyes If - End If statement-ben, csak a végén (ha kell).
Valahogy így:
Sub masolasi2()
Dim i, p, n, sor As Integer 'i-sor, n- sor a Munka2-n
sor = Worksheets("Idöszakos").Cells(1, 1) 'utolsó sor
n = 4
t = Worksheets("Adat szürés").Cells(17, 6) 'kereset számSheets("Idöszakos").Activate
For i = 4 To sor
p = InStr(1, Cells(i, 3).Value, t, vbTextCompare)
p1 = InStr(1, Cells(i, 5).Value, t, vbTextCompare)
p2 = InStr(1, Cells(i, 7).Value, t, vbTextCompare)
If p > 0 Then
Worksheets("Sz_adat2").Cells(n, 7).Value = Cells(i, 2).Value
Worksheets("Sz_adat2").Cells(n, 1).Value = Cells(i, 1).Value
Worksheets("Sz_adat2").Cells(n, 8).Value = Cells(i, 1).Value
End If
If p1 > 0 Then
Worksheets("Sz_adat2").Cells(n, 9).Value = Cells(i, 4).Value
Worksheets("Sz_adat2").Cells(n, 1).Value = Cells(i, 1).Value
Worksheets("Sz_adat2").Cells(n, 10).Value = Cells(i, 1).Value
End If
If p2 > 0 Then
Worksheets("Sz_adat2").Cells(n, 11).Value = Cells(i, 6).Value
Worksheets("Sz_adat2").Cells(n, 1).Value = Cells(i, 1).Value
Worksheets("Sz_adat2").Cells(n, 12).Value = Cells(i, 1).Value
End If
If (p > 0) + (p1 > 0) + (p2 > 0) Then
n = n + 1
End If
Next i
End Sub -
Vladek83
tag
Sziasztok!
Elakadtam. Nyomtatási képnél, hogy lehet megoldani a következőt?
Minden új lapnál az A30:M30-ig levő tartalommal kezdjen
-
Attas
aktív tag
Sziasztok!!!
Szeretnék segedelmet kérni. Olyan makróra lenne szükségem, ami egy munkafüzet elmentésekor átkonvertálja pdf-be az ép módosított munkalapot és lehetőleg automatikusan elküldi egy megadott e-mail címre. A cím ugyan az minden esetben. Létezik ilyen megoldás az excelben?
Előre is köszönöm a válaszokat... Akár rész megoldások is érdekelnek.
pl mentéskor konvertál és figyelmeztet, hogy küld el mailbe... vagy ilyesmi.."Az élet olyan mint az ásás. Néha pár gyökér feltart, de annak jól odacsapsz és mehetsz tovább!"
-
azopi74
addikt
ThisWorkbook-ba:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
Application.EnableCancelKey = xlDisabled
ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
"utvonal\nev.pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=False, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
Dim Outlook As Object, EMail As Object
Set Outlook = CreateObject("Outlook.Application")
Set EMail = Outlook.CreateItem(0)
With EMail
.to = "valaki@valahol.com; valaki@valahol.com"
.CC = ""
.BCC = ""
.Subject = "tárgy"
.Body = "szöveg"
.Attachments.Add "utvonal\nev.pdf"
.Send
End With
Set EMail = Nothing
Set Outlook = Nothing
End SubMegjegyzés:
Az "Application.EnableCancelKey = xlDisabled" Nem biztos, hogy szükséges, nekem "Code execition has been interrupted"-ot dobott nélküle, (de azért lefutott) így küszöböltem ki
Új hozzászólás Aktív témák
- Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Bitdefender Total Security 3év/3eszköz! - "Tökéletes védelem most kedvező áron..."
- Windows, Office licencek a legolcsóbban, egyenesen a Microsoft-tól - 2990 Ft-tól!
- Game Pass Ultimate előfizetések 1 - 25 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN!
- Warhammer Online - Age of Reckoning (DE) Collectors Box (Figurával!)