-
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
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#6060
üzenetére
Nem egyformán értelmezzük a feladatot.
az "AAA" munkalap "C" oszlop bármelyik cellájába kattintva, abban megjelenik a legördülő lista, és ott kiválasztva egy értéket, maradjon az a cellában.
Ez nekem azt jelenti, hogy a C oszlopban egy halom cellába vitt be Bicé legördülőket. Ha ezt úgy csinálta, hogy bevitte az első cellába, megadta a bemeneti tartományt és a cellacsatolást, majd az lemásolta a többi cellába, akkor a cellacsatolás azonos az összesnél, és az utoljára kiválasztott adat mindegyik legördülő értékét felülírja.
Meg lehet adni minden sorban más-más csatolással, de (szerintem) sokkal egyszerűbb az érvényesítés, azt egy kijelölt területre egyszerre be lehet vinni.
-
Delila_1
veterán
Valószínű, hogy a választható listát az Űrlap eszköztárról vett kombi panellel, vagy a Vezérlők eszköztáráról a beviteli lista segítségével akartad megoldani.
Ne ezeket alkalmazd, hanem adj nevet az elemeket tartalmazó területnek (Beszúrás/Név/Név megadása), és a másik lapon a választható listát az Adatok/Érvényesítésnél add meg. A Megengedve mezőben Lista legyen, a Forrás pedig
=Adott_név
Ezt akárhány cellába (egyszerre is) beviheted, mindegyikben az ott kiválasztott érték marad meg.
Ha azonos lapon vannak a választható elemek és az érvényesítés, még elnevezni sem kell a tartományt, csak beírni pl. =$A$5:$A$15
Ha a tartomány A:A, akkor a teljes oszlopban szereplő elnevezések szerepelnek majd az érvényesítésben, követi az értékek számának bővülését, de a csökkenést nem, azok helyére üres sort ad. A csökkenés követéséhez érdemes az OFSZET függvény bevetése. -
Delila_1
veterán
A C1:C15 terület képleteinek értékét illeszti be a cellákhoz rendelt megjegyzésekbe.
Sub IrBeillMegjegyzbe()
Dim CV, Comment As Object
Dim Cellák As Range
Set Cellák = Range("C1:C15")
For Each CV In Cellák
If CV.Value > "" Then
CV.AddComment
CV.Comment.Text Text:=CV.Value & ""
'CV.Value = "" 'Cella képletének törlése
End If
Next
End Sub -
Delila_1
veterán
Sub dátum()
Workbooks("Munkafüzet1").Sheets("Munka1").Range("A1") = Date
End SubA Munkafüzet1 helyett beírod az állandó füzeted nevét, ami a makrót tartalmazza, és átírod a Munka1 lap nevét, no meg az A1 cellát is a megfelelőre.
Ha az idő is kell a dátumhoz, a Date helyére Now() kerüljön.Ui.: Mivel a keletkezési ideje kell, a Now() az igazi. Azt kell megoldani, hogy a másik füzet megnyitásakor hajtódjon végre.
-
Delila_1
veterán
válasz
ulrik19
#5990
üzenetére
Hogy mind az első, mind az összes többi mentés korrekt legyen:
Sub MentésElőzőnévÉsDátumNévvel()
Dim FN, utvonal
utvonal = "C:\"
If Len(ActiveWorkbook.Name) > 15 Then
FN = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 15)
Else
FN = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
End If
FN = FN & "_" & Date
ActiveWorkbook.SaveAs Filename:=utvonal & FN & "xls"
End SubEz a 2007-nél régebbi verziókra vonatkozik, 2007-nél a levonás 16, és 5, a 4 jegyű kiterjesztés miatt.
-
Delila_1
veterán
válasz
ulrik19
#5987
üzenetére
Erre az esetre
Sub MentésElőzőnévÉsMaidátumNévvel()
Dim FN, utvonal
utvonal = "C:\"
FN = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
FN = FN & "_" & Date
ActiveWorkbook.SaveAs Filename:=utvonal & FN & "xls"
End SubBár ezzel az a baj, hogy az első ilyen mentés után a fájlnév tartalmazza a mentés dátumát, a következő mentésnél 2, majd 3, végül n db dátum lesz a névben. Hacsak az
FN = Left(...) sorban le nem vonjuk minden alkalommal az előző dátumot is. -
Delila_1
veterán
... és hogy a füzet előző neve se maradjon ki:
Sub MentésElőzőnévÉsDátumNévvel()
Dim FN, utvonal
utvonal = "C:\"
FN = Left(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 4)
FN = FN & "_" & Left(ActiveWorkbook.BuiltinDocumentProperties("Creation date").Value, 11)
ActiveWorkbook.SaveAs Filename:=utvonal & FN & "xls"
End Sub -
Delila_1
veterán
Még egy apróság:
Ha tabulátorokkal tagolod a makrót, sokkal áttekinthetőbb lesz, az esetleges hibákat is könnyebb megtalálni benne. Érdemes megjegyzéseket beírni az egyes sorokhoz a későbbi módosítás megkönnyítéséhez. Valahogy így:Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
If CheckBox1.Value = True Then
Application.Run ("masolas_adat")
Application.Run ("reogitesreceiving")
Application.Run ("reogitesvisual")
Application.Run ("reogitesquicktest")
Application.Run ("reogitesfct")
Else
'Application.Run ("masolas_adat") Nem kell, ha a CheckBox1 jelöletlen
Application.Run ("reogitesreceiving")
Application.Run ("reogitesvisual")
Application.Run ("reogitesquicktest")
Application.Run ("reogitesfct")
End If
Application.ScreenUpdating = True
End Sub -
Delila_1
veterán
Az Application.ScreenUpdating=False sort még az If elé tenném (mert az nem függ a CheckBox állásától), az End Sub előtt pedig feltétlenül állítsd vissza True-ra. Másképp a makró futása után letiltva marad a képernyő frissítése, hacsak az utoljára futtatott makró nem a frissítés visszaállításával végződik. Mindenesetre elegánsabb, ha ott állítod vissza, ahol letiltottad.
Az innen futtatott makrókban nem kell külön tiltani, ill. engedélyezni. -
Delila_1
veterán
A CheckBox-ok segítségével kiválasztod, hogy mit akarsz tenni. Tegyél be egy gombot, és az hajtsa végre a feladatot a CheckBox-ok állásának megfelelően.
A primitív példa a CommandButton1 lenyomására az A1-be beírja a CheckBox1 állapotát.
A makrót a vezérlőket tartalmazó laphoz kell rendelni.Private Sub CommandButton1_Click()
If CheckBox1.Value = True Then
Cells(1) = "BE"
Else
Cells(1) = "KI"
End If
End Sub -
Delila_1
veterán
válasz
kételkedem
#5937
üzenetére
Azért írtam.

-
Delila_1
veterán
válasz
kételkedem
#5935
üzenetére
Úgy gondolom, hogy mindegyik füzetben minden lapra tennék egy oszlopot (ha nincs), ami tartalmazza a hónap nevét. Azt biztosan tudod, hogy a lapokat együttesen kijelölve egyszerre mindre beviheted az azonos adatokat. Jelen esetben egyszerre szúrhatsz be egy oszlopot, és a hónap oszlop fejlécét. Az egyes lapokon szintén kijelölöd az oszlopot (ameddig kell), az aktuális cellába beírod a hónap nevét, majd Ctrl+Enterrel a teljes oszlop minden cellájába egyszerre viszed be.
Az összevont kimutatás egy-egy füzetben ilyen alapon 12 sort fog tartalmazni, ehhez az kell, hogy a dátum oszlop legyen az első a lapokon.
A kimutatásba Ne vedd bele az összegző sort!
Az egyes lapokon a táblázatod bármelyik celláján állva a Ctrl+t kijelöli a teljes táblát, ez is gyorsíthatja a munkát, mikor az egyes lapokat hozzáadod a kimutatáshoz. Vigyázz, a kimutatásba Ne vedd bele az összegző sort! -
Delila_1
veterán
válasz
kételkedem
#5933
üzenetére
Egy-egy füzeben az összes hónapról tudsz egy közös kimutatást készíteni [2003-as verzióban Adatok/Kimutatás vagy kimutatásdiagram/Több tartomány (összesítés)].
Ezeket összegyűjtöd 1 füzetben. Az is jó, ha az összesítő füzetbe értékként másolod be, és újabb közös kimutatást csinálsz belőlük.Milyen egyszerű leírni!

-
Delila_1
veterán
válasz
szavapart
#5928
üzenetére
Az A1 tartalmazza a dátumot és az időt.
A függvény, ami ezekből kiemeli az időt: =IDŐ(ÓRA(A1);PERC(A1);0)Mondjuk, hogy az A2-ben is van egy dátum és idő. A fenti függvény a B1-ben és a B2-ben kiemeli ezekből az időket.
Egy cellában tudsz számolni velük, például: =PERC(B2-B1)
Vagy: =IDŐ(ÓRA(B2-B1);PERC(B2-B1);0) -
Delila_1
veterán
válasz
Z-Tom-ee
#5926
üzenetére
Ezt csak makróval lehet megoldani szerintem. Míg nem jön jobb megoldás, itt a makró hozzá:
Sub auto_open()
Dim dátum As Date
dátum = Date
Sheets("Munka1").Select
Cells.Find(What:=dátum, After:=ActiveCell, LookIn:=xlFormulas, _
LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
MatchCase:=False, SearchFormat:=False).Activate
End SubFontos, hogy auto_open legyen a címe, mert az ilyen nevű makró a füzet behívásakor automatikusan indul.
A Sheets("Munka1").Select sorban a saját lapod nevét írd be. -
Delila_1
veterán
válasz
Aprósólyom
#5914
üzenetére
Szívesen, de ha lehet, máskor gyorsabban reagálj!

A formázást nem akarod automatizálni a sok-sok lapon?
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5909
üzenetére
A 2003-ban nem találod?
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5907
üzenetére
A Testreszabás menü legyen megnyitva. A kérdéses ikonon jobb klikk, Gombkép szerkesztése.
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5903
üzenetére
Köszönöm, hogy fáradtál vele. Kénytelen leszek a makrók tartalmához nem illő képeket illeszteni az ikonokhoz. (Hordozni nem akarom, csakis a saját gépemen használom a makrókat, a personal.xls-ben vannak)
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5901
üzenetére
Ezzel az a baj, hogy csak a Microsoft ízlésének megfelelő képeket választhatom. Pedig a makróim egyértelműen olyan célokat szolgálnak, amit MS-ék nem nyújtanak nekem.
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5899
üzenetére
Köszönöm a linket, csináltam már ilyent.
Viszonylag sok apró makrót használok, legalábbis ahhoz sok, hogy egyforma legyen az ikonok kinézete. -
Delila_1
veterán
válasz
Fire/SOUL/CD
#5896
üzenetére
Nagyon nem szeretem a 2007-es verziót, de azt meg kell adni, hogy az adatoknál, amik a torta diagram fölött vannak, nagyon mutatós a cella színezése a tartalom szerinti mértékben.
Más fórumon is kérdeztem már, de nem sikerült rájönni, hogyan lehetne a saját ikonjaimhoz saját rajzot rendelni. Az már összejött, hogy az Excel ízlése szerinti képet csatoljak hozzájuk, de ez nem nagyon felel meg a céljaimnak, nem jellemzőek a makrók tartalmára. Te ezzel a verzióval dolgozol. Nem tudod a megoldást? Vagy megszüntették ezt a kényelmi funkciót? -
Delila_1
veterán
válasz
Fire/SOUL/CD
#5892
üzenetére
Elég sűrűn előfordul, hogy van egy füzet, ami évente, havonta, vagy hetente más-más füzetből gyűjti össze az adatokat. Nem értek egyet Veled, hogy nincs szükség az átkapcsolásra, hiszen ez a legegyszerűbb, leggyorsabb átírásra. Aki nem dolgozik ilyen füzetekkel, annak valóban szükségtelen ez a lehetőség.

Klasszak a diagramjaid.
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5892
üzenetére
Az eredeti kérdés megoldásához mindenesetre mindkét válasz jó, a csere, és a csatolás átváltása is.
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5890
üzenetére
Tudomásom szerint ha másik füzet cellájára hivatkozom, az csatolás.
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5885
üzenetére




Mindenkinek! -
Delila_1
veterán
válasz
Aprósólyom
#5880
üzenetére
Nem kaptad meg a két küldeményemet, vagy lefagytál?
Ezt nem ide akartam írni, hanem a privátba.

-
Delila_1
veterán
válasz
Aprósólyom
#5878
üzenetére
Meg lehet csinálni, küldd el a füzetet.
-
Delila_1
veterán
válasz
gericooper
#5874
üzenetére
A képletet tartalmazó cella formátumával lehet baj. Állítsd általánosra.
-
Delila_1
veterán
válasz
VANESSZA1
#5862
üzenetére
Vegyük, hogy a számokat az A oszlopban akarod generálni. Az A1 képlete:
=RANDBETWEEN($C$1;$D$1)
Ha a függvényeid között nem találod a fentit, az Eszközök/Bővítménykezelőben az Analysis ToolPak elé tegyél pipát.
Másold le a függvényt, ezután az A oszlop függvényei helyére irányítottan illesztd be az értéküket.
A B1 képlete: =DARABTELI(A$1:A1;A1), ezt is másold le, ameddig kell.
Ahol a B oszlopban 1-nél nagyobb számot találsz, ott az A oszlop értéke 1-nél többször szerepel a listában.
Tehetsz rá feltételes formázást, hogy kiabáljon.
Lehetne rá makrót írni, de sok adatnál ez elég lassú lenne, függvényekkel is jól megoldható. -
Delila_1
veterán
válasz
Fire/SOUL/CD
#5846
üzenetére
Akkor éppen hiányoztam az iskolából...
Az öregedésről egyes számban beszélj!
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5828
üzenetére
Nosza!
-
Delila_1
veterán
Na még egy utolsó. A költségek nevei az A1:A10 tartományban vannak, az eddigi összegek pedig B1:B10-ben.
Állítsd pirosra azokat az összegeket (B oszlop), ahova az új összeget szét akarod osztani.
A szétosztandó összeget írd be a D1-be.Sub Eloszt_1()
For sor = 1 To 10
If Cells(sor, 2).Font.ColorIndex = 3 Then Db = Db + 1
Next
For sor = 1 To 10
If Cells(sor, 2).Font.ColorIndex = 3 Then
Cells(sor, 2) = Cells(sor, 2) + Round(Cells(1, 4) / Db)
End If
Next
End SubA makró végig szalad a B1:B10 tartományban, és összeszámolja a piros karakteres cellákat, ezek darabszáma lesz az osztó. Újra végig lépked ugyanott, és a piros cellák tartalmához hozzáadja a D1-ben talált összeg annyiad részét, ahány piros cellát talált.
Azt hiszem, ez volt az eredeti kérdésed. -
Delila_1
veterán
Akkor a personal.xls-be vidd be:
Function Eloszt(Összeg As Double, Részre As Integer)
Eloszt = Összeg / Részre
End FunctionKijelölöd a cellákat, beírod: =Eloszt(26253;3), és Ctrl+Enterrel egyszerre beviszed a kijelölt cellákba. Az osztó és osztandó persze minden esetben más lehet.
-
Delila_1
veterán
Beteszem a kétféle megoldást. Mindegyiknél a beviteli cella az A1, a 3 másik pedig A3, A4, és A5.
Az első makró vagy a makrók közül indítható, vagy egy gombhoz rendeled. Bevitele: Alt+F11, Insert/Module, a kapott üres oldalra másold be.Sub ktsg_elosztás()
Dim sor
For sor = 3 To 5
Cells(sor, 2) = Cells(sor, 2) + Int(Cells(1) / 3)
Next
End SubA másik a bevitelt követően automatikusan hajtódik végre. Ennek a bevitele: Lapfülön jobb klikk, Kód megjelenítése, a kapott üres oldalra másold be.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim sor
If Target.Address = "$A$1" Then
For sor = 3 To 5
Cells(sor, 2) = Cells(sor, 2) + Int(Target.Value / 3)
Next
End If
End Sub -
Delila_1
veterán
-
Delila_1
veterán
Sub SubTotal()
ucso = Worksheets.Count
For lap = 2 To ucso
Sum = Sum + Sheets(lap).Cells(154, 12)
Sum1 = Sum1 + Sheets(lap).Cells(155, 12)
Sum2 = Sum2 + Sheets(lap).Cells(156, 12)
Next
Sheets("Összesítő").Cells(154, 12) = Sum
Sheets("Összesítő").Cells(155, 12) = Sum1
Sheets("Összesítő").Cells(156, 12) = Sum2
End SubEzt vidd be az előző helyére.
-
Delila_1
veterán
Sub SubTotal()
ucso = Worksheets.Count
For lap = 2 To ucso
Sum = Sum + Sheets(lap).Cells(154, 12)
Next
Sheets("Összesítő").Cells(154, 12) = Sum
End SubEzt a makrót vidd be. Alt+F11-re bejön a VB szerkesztő. Bal oldalon megtalálod a füzeted nevét, az előtte lévő + jelre kattintasz. Insert menü, Module. Jobb oldalon kapsz egy üres fehér oldalt, oda másold.
Ha az összesítő lapod neve nem Összesítő, a makróban írd át.
Ha az összesítőn az eredményt nem az L154 cellában szeretnéd látni, a Cells(154,12)-ben írd át az értékeket. a 154 a sor száma, a 12 az oszlopé (A oszlop=1, B oszlop=2, ... Loszlop=12). -
Delila_1
veterán
válasz
deicide
#5780
üzenetére
Kétféle módon.
1. Érvényesítéssel: Adatok/Érvényesítés/Beállítások fül. A Megengedve legördülőből kiválasztod a Listát, a Forrás mezőjébe lépve a lapodon kijelölöd a területet, ahonnan az adatokat meg akarod jeleníteni.
Ezt akkor alkalmazhatod, ha az így érvényesített cella és a forráslista azonos lapon van. Ha másik lapon akarod létrehozni, akkor előbb a forráslistát el kell nevezned (kijelölve a területet Beszúrás/Név/Név megadása. A megjelenő ablakban lent, a hivatkozásnál megjelenik a kijelölt területed, a Munkafüzetben lévő nevek rovatában adsz egy nevet a tartománynak.) Az érvényesítésnél a forráshoz az adott nevet írod be egy egyenlőségjel után.
2. Űrlapelemmel: behívod az Űrlapok eszköztárát, ezen rákattintasz a Kombi panel ikonjára, a kapott szálkereszttel megrajzolod a legördülőt. Jobb klikk az elemen, Vezérlő formázása. A Vezérlő fülön a Bemeneti tartomány mezőjébe állva a lapodon kijelölöd a megjelenítendő tartományt. A Cellacsatoláshoz beírod a cellát, ahol a kiválasztott elem sorszámát szeretnéd látni (az elemek közötti sorszámot adja, vagyis ha a két elem Anna és Béla, Annát választva 1, Bélánál 2 lesz a csatolt cella eredménye). A csatolt cella tartalmát felhasználhatod pl. egy FKERES függvényben. Ezt a cellát célszerű a legördülő "mögé" tenni, hogy a megjelenő eredmény ne zavarja a felhasználót.Van harmadik megoldás is, mikor a Vezérlők eszköztárából veszel egy Beviteli listát, de ehhez már egy kis programot kell írni.
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5767
üzenetére

-
Delila_1
veterán
válasz
Fire/SOUL/CD
#5763
üzenetére
Delila nem teszi be a makrót.
Már csak azért sem, mert ismeretlen előttem a csv, az elválsztók, az adatok.
gsc73-nak kell rögzítenie, ahogy ő teszi kompatibilissé a csv-t az Excellel.
Ehhez előbb be kell gyakorolni, 1-2 sikeres konvertálás után pedig jöhet a rögzítés.A 2. pontban többnyire gsc73-mal értek egyet, ki ne rúgjuk már a más területen nagy tapasztalatot szerzett munkatársakat, ha nem áll rá a fejük az Excel kezelésére. Mit szólnál, ha mától öltönyt kellene szabnod? Elismerem, lüke példa.
-
Delila_1
veterán
válasz
toth_janika
#5760
üzenetére
Adatok/Kimutatás vagy kimutatásdiagram/Több tartomány (összesítés).
Valószínű, hogy nem a Több tartomány-t választottad a varázsló első lapján. Tégy úgy, és sikerrel jársz.
-
Delila_1
veterán
válasz
toth_janika
#5756
üzenetére
A nevek mellett szerepeljen valamilyen azonosító, ami a lapon szereplő emberek által hozzáférhető programot képviseli. Ez a két oszlop elég is a kimutatáshoz.
Készíts kimutatást több tartományból [Adatok/Kimutatás vagy kimutatásdiagram/Több tartomány (összesítés)].Az elrendezés ilyen legyen:
A Végösszeg oszlop mutatja majd, kinek hány hozzáférés adatott meg.
-
Delila_1
veterán
A laponkénti képlet:
=SZUMHA(J:J;"PF";H:H)
Ezt egyszerre is beviheted a 10 lapodra. Kijelölöd a lapokat (elsőn állsz, Shiftet nyomva az utolsó lapfülre kattintasz), és a megfelelő helyre beírod a függvényt. Így gyorsabb, mint egyenként, és biztosan azonos cellában lesz minden lapon. Ezután az összesítő lapra beírod a SZUM függvényt, ahogy az előző hozzászólásomban írtam.
Új hozzászólás Aktív témák
- Szívós, szép és kitartó az új OnePlus óra
- A fociról könnyedén, egy baráti társaságban
- Hardcore café
- Samsung Galaxy Watch6 Classic - tekerd!
- BestBuy topik
- Android alkalmazások - szoftver kibeszélő topik
- Automata kávégépek
- Milyen autót vegyek?
- Samsung Galaxy Felhasználók OFF topicja
- Mibe tegyem a megtakarításaimat?
- További aktív témák...
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Xbox / Microsoft Store feltöltőkártya kód (digitális, HU) több címlet, több db, azonnal, olcsón
- Vírusirtó, Antivirus, VPN kulcsok GARANCIÁVAL!
- MS SQL Server 2016, 2017, 2019
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- HP EliteBook 840 G7 i5-10210U 16GB 512GB FHD 400nit 1 év garancia
- 197 - Lenovo Legion Pro 5 (16IAX10) - Intel Core U7 255HX, RTX 5070 (ELKELT)
- 243 - Lenovo Legion Pro 7 (16IAX10H) - Intel Core U9 275HX, RTX 5080
- Steam, EA, Ubisoft és GoG játékkulcsok, illetve Game Pass kedvező áron, egyenesen a kiadóktól!
- ÁRGARANCIA! Épített KomPhone Ultra 9 285K 32/64GB RAM RX 9070 XT 16GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


Bár itt nem is nagyon volt mit tagolni.








Fferi50