-
Fototrend
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
m.zmrzlina #17484 üzenetére
Hello,
Azt szeretném a makróval, hogy jelezze, hogy a fenti példánál pl febr 23.-a hiányzik...
Makrós megoldás már jött rá, de hadd mutassak be egy nem makrósat. Persze vannak hátrányai, de okulásra tökéletes lehet.
A képen látható, hogy a dátumok a B1-től kezdve vannak felsorolva, AB1-ig mennek és csak 1 dátum hiányzik most, mégpedig február 7-e (sárgával jelöltem). Két megoldás is van, az első a SZORZATÖSSZEG jól műkődik, ha csak 1 db nap hiányzik. A CSE már több nap esetén is jó, ilyenkor az első hiányzót adja vissza.
Nézzük őket:
=ELTOLÁS(AB1;0;-SZORZATÖSSZEG((NAP(B1:AB1)-(OSZLOP(B1:AB1)-1))))+1
- Itt a lényeg SZORZATÖSSZEG-ben van, amely úgy múkődik hogy megnézi a cellában (pl Q1) lévő dátum napját (pl. 2013.02.17 -> 17) és hogy ez a cella hanyadik oszlopban van (OSZLOP(Q1) -> 17) és a kettőt kivonja egymásból.
- Ha a napok egymást követik, akkor a nap száma és az oszlop száma egyezik, különbségük 0 lesz; de ha hiányzik egy nap akkor már 1-et fogunk kapni különbségnek. (Mivel az adatok nem az első oszlopból indulnak (ott most a komment van), ezért 1-et kivonok az oszlopszámából, így kapok B oszlopra 1-et, C-re 2-t stb.)
- Tehát a SZORZATÖSSZEG((NAP(B1:AB1)-(OSZLOP(B1:AB1)-1))) pl. ilyen eredményt fog adni {0;0;0;0;0;0;1;1;1;1;1....}. Ami azt jelenti hogy az első 6 nap okés, de a 7-nél csúszás van. A SZORZATÖSSZEG ezeket az 1-eket össze fogja adni, és megkapod, hogy hány napnál nem egyezett a napszám és az oszlopszám.
- Ennek ismeretében már könnyedén ki lehet választani az ELTOLÁS (OFSZET) függvénnyel, hogy melyik nap csúszott el, egyszerűen csak a napok listájának végéről (az AB1 esetemben) a SZORZATÖSSZEG szerint megadottszor kell visszamenni. Ehhez -1-el megszoroztam a SZORZATÖSSZEG eredményét,
- Így megkapjuk, hogy az utolsó jó nap február 6-a volt vagyis +1 nappal később van a bibi.A másik képlet csúnyább, de kezeli azt az esetet ha több nap is hiányzik a listából:
{=ABS(MIN(HA((NAP(B1:AB1)-(OSZLOP(B1:AB1)-1))*(OSZLOP(B1:AB1)-1)<>0;(NAP(B1:AB1)-(OSZLOP(B1:AB1)-1))*(OSZLOP(B1:AB1)-1))))}
- Itt a lényeg ugyanaz mint előbb volt, vagyis keressük azokat az eseteket ahol NAP(cella) és OSZLOP(cella) nem egyenlő.
- Valójában azonban itt a különbséget megszorzom az aktuális nap helyével, tehát nem 0 és 1-ek lesznek, hanem 0 és a megfelelő napok száma, pl. {0;0;0;0;0;0;7;8;9;10; stb}.
- A végén ebből a listából már csak a 0-nál nagyobb legkisebb számot kell kiválasztani, erre van a HA és a <>0 közötti rész.
- A képlet eredmény az a nap száma, amelyik hiányzik.
- Mivel se a NAP, se az OSZLOP, sem az ABS függvények nem kezelnek tartományokat, ezért CSE-ként kell felvinni.üdv.
-
Delila_1
veterán
válasz
m.zmrzlina #17484 üzenetére
Ehhez nem kell a dátumokat átalakítani.
Sub Van_e()
Dim oszlop%
For oszlop% = 6 To 10
If Cells(1, oszlop) <> Cells(oszlop + 1) - 1 Then _
MsgBox "Hiányzik a(z) " & Cells(1, oszlop) + 1 & " dátum."
Next
End Sub
Új hozzászólás Aktív témák
- sziku69: Fűzzük össze a szavakat :)
- One otthoni szolgáltatások (TV, internet, telefon)
- sh4d0w: Ez van, srácok...
- Huawei Watch D2 - nyomás utána!
- Lexus, Toyota topik
- Óvodások homokozója
- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Macska topik
- iPhone topik
- Milyen billentyűzetet vegyek?
- További aktív témák...
- GYÖNYÖRŰ iPhone 13 Pro 256GB Sierra Blue - 1 ÉV GARANCIA, Kártyafüggetlen, 100% Akkumulátor,MS3379
- Bomba ár! Dell Latitude 5410 - i5-10GEN I 8GB I 256SSD I HDMI I 14" FHD I Cam I W11 I Garancia!
- Eredeti Lenovo 230W töltők - 4X20Z83995
- ÁRGARANCIA!Épített KomPhone i5 14600KF 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: NetGo.hu Kft.
Város: Gödöllő
Cég: Promenade Publishing House Kft.
Város: Budapest