-
IT café
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
-
zhari
csendes tag
Ha a munka1 munkalap A oszlopán vannak az adott dátumok, a munka2 munkalap A oszlopán periódus kezdő, B oszlopán a periódus záró dátumai C oszlopán a periódusok nevei. Ha a periódusok fedhetik egymást és egy dátum több periódusban is szerepelhet, hogy gyűjtenétek össze, hogy egyes munka1 A oszlop dátumai mely periódusokba esnek bele. Hozzászólásokat előre köszönöm.
-
Wyll
őstag
A Munka1-be beszúrnék legfelülre egy új üres sort, és ide a B, C, D stb oszlopokba beírnám rendre az 1, 2, 3 stb számokat annak megfelelően, hogy hány periódus van. Így kialakulna egy olyan táblázat, aminek a baloldalán a keresett dátum található, a tetején meg a keresett periódus (Munka2-beli) sora. A többit a vizsgálófüggvény teszi hozzá, a következőképpen:
A táblázat B2 cellájába a következő függvényt írnám:
=HA(ÉS(INDIREKT("Munka2!A"&B$1)<=$A2;$A2<=INDIREKT("Munka2!B"&B$1));INDIREKT("Munka2!C"&B$1);"")
És ezt kitolnám a teljes táblázatra. Így szépen fel lesz írva egy dátum mellé, hogy mely periódusokba esik bele.
Tehát így:
Ez a megoldás viszont nem igazodik automatikusan a periódusok számához.
[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
Delila_1
Topikgazda
Makróval gyorsan előállítható.
Sub Periodusok()
Dim sor As Long, sor1 As Long
Munka1.Select
For sor = 1 To Application.WorksheetFunction.CountA(Munka1.Columns(1))
For sor1 = 1 To Application.WorksheetFunction.CountA(Munka2.Columns(1))
If Cells(sor, "A") >= Munka2.Cells(sor1, "A") And Cells(sor, "A") <= Munka2.Cells(sor1, "B") Then
Cells(sor, Cells(sor, Columns.Count).End(xlToLeft).Column + 1) = Munka2.Cells(sor1, "C")
End If
Next
Next
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
válasz slashing #24258 üzenetére
Eltérő verzióban dolgozunk.
Próbáld meg, hogy a rel_ev mezőbe képletet írsz, mint az eredeti kérdésben volt. Egy másik cellában lévő dátumnak az év értékét add meg benne.
[ 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.
-
katsi
tag
Sziasztok!
Van egy Excel táblám, segítséget szeretnék kérni rendezésben:
- a tábla első oszlopa egyedi azonosítókat tartalmaz
- a tábla többi oszlopa egyéb adatokat tartalmaz (név, telefonszám, stb)Most jön a trükk:
- az egész tábla elé beszúrtam egy olyan oszlopot, ami szintén tartalmazza az egyedi azonosítókat, DE egy saját sorrend szerint, ami nem növekvő, csökkenő, hanem egyedi.Lehetséges úgy rendezni a táblát, hogy az Excel összerendelje az első oszlophoz tartozó ugyanolyan, második oszlophoz tartozó értékeket?
Példa:
1. 2. 3.
ID2, ID3, Béla
ID5, ID2, Józsi
ID3, ID5, DávidEbből lenne:
ID2, ID2, Józsi
ID5, ID5, Dávid
ID3, ID3, BélaTehát az első oszlop szerinti egyedi sorrendben rendezné, az lenne a mérvadó.
Hálásan köszönöm előre is, ha van rá módszer! -
zhari
csendes tag
Fkeres függvénnyel meg lehet oldani a problémádat szerintem.) pl. ha A oszlopban az új sorrendben az egyedi azonosítók, B oszlopban a régi sorrendben az egyedi azonosítók C oszlopban a nevek vannak akkor D1-be =fkeres(A1;B: C;2;0) ( C előtt nincs szóköz)
[ Szerkesztve ]
-
LordVader80
senior tag
Sziasztok!
Hogyan tudom feltételesen formázni egy oszlop celláit, aminek értékei számok, növekvő sorrendben: a 0-3 közötti számokat szeretném egyfajta színre festeni, míg a 4-7-ig a következőre, és így tovább, négyesével. Természetesen elég két szín összesen, csak egymás után négyesével különüljenek el.
1-3 kék
4-7 zöld
8-11 kék
12-15 zöld
16-19 kékstb stb...
May The Force Be With You!
-
m.zmrzlina
senior tag
válasz LordVader80 #24264 üzenetére
Ha folyamatos a táblázatod (egyenként növekednek a számok) ahogy a kérdésben írod akkor nem kell feltételes formázással bajlódnod.
Formázás táblázatként>Új táblázatstílus előhozza a képen lévő ablakot és itt beállíthatod a kívánt stílust.
Az első és második sorsávnál 4-re állítod a sávméretet a formátumnál megadod a színt.Aztán kijelölöd a táblázatodat majd Formázás táblázatként és a legfelső sorban az Egyéni közt ott lesz az előbb létrehozott stílusod.
Ez a megoldás nem lesz tekintettel a cellaértékekre mint a feltételes formázás.
-
LordVader80
senior tag
válasz m.zmrzlina #24265 üzenetére
Rosszul fogalmaztam, pont a cellaértékre kell, hogy figyeljen, ami változhat. A számok pedig nem soronként növekednek, hanem pl:
1
1
1
2
3
3
4
4
és így tovább. A számok képletekkel jönnek. Az 1-3 számokhoz szeretnék egy színt rendelni, a 4-7-ig egy másikat, és így tovább egészen 197-200-ig. Csak lusta vagyok ennyi feltételes formázást bevinni, meg nem is tudom, 50-et lehet-e egy cellára.[ Szerkesztve ]
May The Force Be With You!
-
Delila_1
Topikgazda
válasz LordVader80 #24264 üzenetére
Rossz hírem van, egyenként kell bevinned az 50 formátumot. Könnyebbség, hogy beírod az elsőt, Ctrl+c-vel másolod a képletet, ezután fogadtatod el a formátumot.
Új szabály, a képletet bemásolod Ctrl+v-vel, átírod a 2 számot, és mehet tovább.[ 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.
-
Delila_1
Topikgazda
válasz LordVader80 #24269 üzenetére
Szívesen.
Gyorsan megy a másolásos módszerrel, egy-kettőre bevittem 10 feltételt.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
m.zmrzlina
senior tag
válasz LordVader80 #24267 üzenetére
Akkor szerintem nem úszod meg.
Feltételes formázás >Cellakijelölési szabályok>Két érték között
Itt megadod a határértékeket és a határokhoz tartozó stílusokat.
-
Wyll
őstag
válasz Delila_1 #24268 üzenetére
Én meg ezen gondolkozom itt nagy erőkkel, hogy vajon a feltételes formázás hogyan lesz relatív a létrehozás helyéhez?!
Vagy miért csak a cellaértéken tud alapulni, miért nem tud a cellaértékre alkalmazott függvény eredményén alapulni?A feltételt már ki is találtam: =MARADÉK(<önmaga>;8)<4
(cella értékének 8-cal vett maradéka kisebb négynél)LordVader: nem fogalmaztál rosszul, én már elsőre is értettem
[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
Delila_1
Topikgazda
2007-től elég lükén oldották meg. Kijelölöd a formázandó tartományt, ez lesz az érvényesség címe.
Megadod a formátumot. Ezután ha az érvényességen belüli cellán állva behívod a feltételes formázást, azt a képletet mutatja, ami az érvényesség bal felső cellájára vonatkozik.Régebbi verzióban még az adott (aktív) cellára vonatkoztatott képletet látod.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Wyll
őstag
válasz Delila_1 #24273 üzenetére
Mégis meg lehet csinálni egyetlen szabállyal!!!!!!!!
Egy cellára megcsinálod a szabályt, figyelve hogy az önhivatkozás relaítv legyen (tehát $-ek nélkül), leokézod, majd a formátummásolóval továbbviszed a többi cellára is.
Ahogy te is mondod, a formázáskezelő a bal felsőre vonatkozót fogja mutatni, de mégis működik:
Elnézést, a sorok számai lemaradtak, az 1-es a 17-esben van, az alsó 16-os pedig a 32-esben.
Meg még dupla is lett.[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
Wyll
őstag
válasz Delila_1 #24276 üzenetére
[link]: "Természetesen elég két szín összesen, csak egymás után négyesével különüljenek el."
Természetesen lehetséges hogy létre kell hozni még egy - komplementer - feltételt is az előbb említett módon, ha nem jó az alap fehér:
=MARADÉK(V17;8)>=4Bár elkülönülni enélkül is elkülönül.
megj: Amióta a neveknél felfedeztem, hogy milyen oltári szuper, hogy lehetnek relatívak, azóta már mindenre ezt gondolom, és lám, tényleg
[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
LordVader80
senior tag
öÖö ezt most hirtelen nem látom át, pláne miután bevittem az 50 feltételt
hogy működik ez?egyébként ha a háttér is érdekel: adott 4 havi munkaidőkeret, amit a belépés napjától kell megjeleníteni.
A sorok a jövő évi naptári napok egymás alatt, az értékek képlettel kerekítve az az érték, ahány hónapja itt dolgozik az illető, és ehhez kell, hogy 4 havonként lássuk (a belépés dátumához igazodva, ami változhat, ha valaki kilép és új kerül a táblába a helyére), mikor telik le az aktuális munkaidőkeret.[ Szerkesztve ]
May The Force Be With You!
-
Wyll
őstag
válasz Delila_1 #24282 üzenetére
Pedig az MSDN-en is ott van az egyértelmű példa, mégsem megy:
Én már ezt nem értem...
Lehet hogy az a baj, hogy relatív a hivatkozás?Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
LordVader80
senior tag
Közben felhasználtam az általad javasoltat, és szuperül működik.
Annyit módosítottam, hogy negyedéves ciklust kell nézni, ezért a nyolcból 6, a 4-ből pedig 3 lett. A másik színt, hogy azt is én határozzam meg, ugyanazzal a képlettel, de ellentétes relációval, plusz mellé egy egyenlőség jellel oldottam meg.
=MARADÉK(T23;6)>=3 ez lett az egyik szín
=MARADÉK(T23;6)<3 ez lett a másik színSzuperül működik, köszönöm még egyszer
May The Force Be With You!
-
Mutt
aktív tag
válasz LordVader80 #24269 üzenetére
Felteteles formazasban a fuggveny =párose(A1/4)
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Wyll
őstag
válasz LordVader80 #24284 üzenetére
Pont így gondoltam én is! Örülök, hogy sikerült!
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
Wyll
őstag
válasz Fferi50 #24288 üzenetére
Az, hogy aosz egy relatív (részben $ nélküli) cellahivatkozás. (A oszlop azonos sorban lévő cellája.)
És cellákban használva jól működik, ahogy az látható is,
viszont VBA-ból szemmel láthatóan más címre oldódik fel, mint a worksheet celláiban. $A7-et kellett volna kapni végeredményül $A$1 helyett.De mondd, hogy elnézek valamit
[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
félisten
A képeden annyi "hiba" van, hogy ha az A1 cellát elnevezted aosz tartománynak, akkor az az F7 cellában nem 33-nak kellene lennie, hanem valami-nek
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Wyll
őstag
válasz Fire/SOUL/CD #24290 üzenetére
Csakhogy nem neveztem el sem A1-et, sem $A$1-et semminek.
$A$3-at elneveztem aoszlop-nak, ez van a C3:D10-ben,
és $A3-at pedig elneveztem az E3-on állva(!) aosz-nak, ez van az E3:F10-ben.
Látszik, hogy mindkettő működik a cellákban.Viszont a vba kódot ActiveCell.Address = C7 mellett futtatva $A7-et kellett volna hogy kapjak.
[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
félisten
Biztosan nem így van (max így gondolod, hogy kellene lennie) mert a makród MsgBox Range("aosz").Address egyértelműen az A1 cella címét adja meg, mint aosz néven elnevezett tartomány címét. Szóval ebből kell kiindulni.
Ehhez ellenőrizd a tartományokat és elnevezésüket, Képletek/Névkezelő segítségével. 1 tartományt ha többször próbáltál más névvel ellátni(lehet, csak figyelmetlenségből stb), akkor 1 tartományhoz több cím is tartozik és mindig a legutolsó az érvényes(bizonyos műveleteknél), pl legyártottam most direkt egy hibás megközelítés: [link]. Értelem szerűen csak 1 elnevezése lehet 1 tartománynak egyébként keveredés lesz. (Lehet 1 tartománynak több neve is, csak akkor a programozónak szándékosan kell ezt kiviteleznie, és tudnia, hogy ő maga hozott létre több nevet 1 tartományhoz)[ Szerkesztve ]
Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Wyll
őstag
válasz Fire/SOUL/CD #24292 üzenetére
[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
félisten
Ez egy teljesen új kép... Annak jobban örültem volna, ha a korábbi állapotban(amiről a korábbi képet beraktad) készült névjegyzéket láttam volna, mert itt az újnál már aosz sincs stb...
Maradva akkor ennél az új állapotnál, ha elmented a táblázatot, majd (biztos, ami biztos) nyomsz egy F9-t, azt követően a makró nem írhatja ki az $A$1-t, hanem az $A$7-t, mint a proba tartomány címét.
(Amúgy itt már helyes a címzés, mert az F7 cellában valóban a próba tartomány (ami az A7) értéke jelenik meg, nem mint korábban)Mindenki tudja, hogy bizonyos dolgokat nem lehet megvalósítani, mígnem jön valaki, aki erről nem tud, és megvalósítja. (Albert Einstein)
-
Wyll
őstag
válasz Fire/SOUL/CD #24294 üzenetére
Az előző képet még a melóban csináltam. De nyugodtan elhiheted, hogy ott is csak két név volt
Viszont az azért ezen is látható, hogy az E3:F10 cellákban, de legalábbis a képen az F7 cellában proba (aosz-szal azonos) van, és helyesen az A7 értékét adja (illetve E3:F10-en belül A-nak azonos sorában lévő cella értékét adja) eredményül.
És azt gondolom, hogy a VBA Range("proba").Address -nek is ugyanezt kéne visszaadnia, ha ugyanazon a cellán állva futtatom. Az MSDN szerint ez teljesen legális használat. ("Similarly, you can use a named cell instead of A1..."). Bár relatív hivatkozásra ott sincs példa.
Btw. sajnos nem lehet egyszerre láttatni a névjegyzéket, a VBA szerkesztőt meg a messagebox-ot is.
[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
Fferi50
őstag
Szia!
A "relatív" névadás szerintem roppant mód veszélyes dolog - legalábbis a 2010-es excelben biztosan, 2003-as excelben pedig egész egyszerűen körkörös hivatkozást "képes" eredményezni.
Gondolj bele: a relatív hivatkozással "elhúzod" az alapcella címét is, amikor egy új cellába helyezed a képletet (ugyanúgy, mint más képletttel), csak itt "megy vele" a viszonyítási alap is. Erre aztán "el is veszti" a fejét a VBA.
Hogy ez aztán "bug", vagy csak "elfelejtették" megírni, hogy ne adjunk nevet relatív címzéssel azt nem tudom.
Szerintem nem véletlen, hogy a névkezelő állandóan abszolut módon adja meg a címeket.Üdv.
-
Pampipapi
tag
Sziasztok!
Azt szeretném megoldani, hogy ha beírok bármit egy cellába, akkor a mellette lévő cellában automatikusan megjelenjen a dátum, ami nem frissül később.
Az ÜRES() és a MOST() függvények felhasználásával próbálkoztam, de minden megnyitáskor az aktuális dátum jelenik meg... -
Wyll
őstag
válasz Fferi50 #24296 üzenetére
Mit értesz az alapcellán és a viszonyítási alapon? Mmint mi a különbség?
Szerintem pont ez a marha jó a relatív nevekben, hogy dinamikusan, bárhol használhatók!
Épp a múlt héten kellett írnom két elég nagy többszörösen összetett függvényt, és 1000x könnyebb volt benne tájékozódni nevekkel, mint cellahivatkozásokkal. Sőt, előre meg tudtam írni notepad-ban, nem kellett a cellákkal foglalkoznom. De egy csomó tutorial is van a neten relatív nevekkel. Nem hinném, hogy ellenjavallt lenne.Szerintem VBA-ban annyi lesz a gond, hogy a Range() csak így simán object qualifier nélkül az ActiveSheet-re vonatkozik, aminek a bal felső cellája (a viszonyítási pontja) pont az A1. Éppen ezért lehet megadni neki pl ("B3")-at, ami így tényleg a B3-as cellát fogja jelenteni.
De ha "balra mutató" (negatív offset) relatív nevet akarok használni, akkor meg kell adnom, hogy mihez képest.. Mindjárt megnézem. (vagy majd holanp )
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
Fferi50
őstag
válasz Pampipapi #24297 üzenetére
Szia!
Ehhez így sajnos nem fogsz megfelelő függvényt találni.
Illetve a MOST de inkább a MA az jó a beírás napján,de ahhoz, hogy későbbi napokon ne változzon meg, minden bezárás előtt át kell alakítani értékké:
Másolás - irányított beillesztés érték. Ezután már mindig az adott értéket fogja mutatni a cella. (Ezt természetesen lehet automatizálni makróval - és ekkor makróbarátként kell a füzetet elmenteni és a makró futtatását engedélyezni kell stb...)Üdv.
-
Fferi50
őstag
Szia!
Neked bizonyára sokkal nagyobb gyakorlatod van a relatív meghatározású nevek használatával, mint nekem, mivelhogy én nem használok ilyeneket. A kérdésed kapcsán próbáltam megnézni a viselkedésüket, illetve visszaemlékeztem pár hasonló próbálkozásomra (de bizonyára rosszul fogtam meg a témát).
Hogy a kérdésedre válaszoljak:
Alapcella - amin álltál, amikor a névkezelőben megadod a nevet. Ehhez a cellához képest a névhez tartozó tartomány (ami lehet egy-vagy több cella) sor és oszlop eltérése a viszonyítási alap a szóhasználatomban.
Tehát, ha a C1-ben állva adsz az A1 cellának nevet (név), majd F1-ben beírod a képletet =név, abban pillanatban a név már nem az A1 cellára fog vonatkozni, hanem az F1-től 2 cellával jobbra levő D1 cellára.
Ha pedig beleállsz az E1 cellába és megnézed a név melyik cellára mutat, meglátod, hogy az - mielőtt bármit is csinálnál vele C1-re hivatkozik.
DE: a VBA már meg is "bolondult", mert nála már az utolsó oszlopok valamelyike az, amihez a név tartozik.
És itt jön be, amit a 24292-ben írt Fire/SOUL/CD : a relatív névből látszólag mindig egy van, a valóságban pedig mindig a legutolsó aktív cellához képest számolja ki a név hivatkozását, tehát "több" név létezik belőle. Ezért nem egyértelmű - pont a dinamizmusa miatt. Szerintem a VBA ezért nem tud vele igazán mit kezdeni.Ez igaznak látszik a munkalapon generált relatív nevekre. Nem tudom - most nincs már igazán időm rá -, hogy a VBA-ban makróval megadott nevek hogyan viselkednek.
Emiatt az általam korábban már megtapasztalt ellentmondás miatt inkább a VBA objektum hozzárendelést és ahhoz az offset tulajdonságot használom. Pl.
dim alap as range
set alap=range("A1")
msgbox alap.offset(0,2).address ' = $C$1De persze - mint az már többszörösen bebizonyosodott, ízlések és pofonok különböznek. Így aztán nyilván különféle megoldásai lehetnek ugyanazon feladatoknak.
Üdv.
Új hozzászólás Aktív témák
- SSD kibeszélő
- Elemlámpa, zseblámpa
- Azonnali VGA-s kérdések órája
- OLED TV topic
- Súlyos adatvédelmi botrányba kerülhet a ChatGPT az EU-ban
- Gaming notebook topik
- Elektromos rásegítésű kerékpárok
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- EA Sports WRC '23
- Milyen notebookot vegyek?
- További aktív témák...