Excel kérdés
Jelentkezz be a hozzászóláshoz.
Office 2016-t használok, és régebbi táblázatoknál IV az utolsó oszlop, amit használni, formázni tudok. A megnyitott új táblázatoknál nincs ilyen probléma. Van-e erre valami megoldás?
A válaszokat köszönöm
dönci5
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Például ha a lapra lépéskor a B oszlop értékéből ki akarod vonni az A oszlop értékét a második sortól kezdve, akkor a makró
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row
Range("C2:C" & usor) = "=B2-A2"
End Sub
Mint látod, a lapra lépéskor meghatározzuk az aktuális lap A oszlopának utolsó kitöltött celláját (usor), és a képletet a második sortól az utolsóig íratjuk be.
A füzetben lévő nagyon sok képlet lassíthatja a feldolgozást, ezért a képlet beírása után a helyükre beilleszthetjük az értéküket.
Range("C2:C" & usor).Copy
Range("C2"😉.PasteSpecial xlPasteValues
Application.CutCopyMode = False 'másolási mód megszüntetése
Range("A1"😉.Select 'az A1 cellára lépünk. Nem fontos, de megszűnik a C2:C(usor) kijelölése.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
1 oszlop=cells(1,"F"😉.end(xltoleft).column
2 oszlop=cells(4,"A"😉.end(xltoright).column
3 oszlop=cells(1,columns.count).end(xltoleft).column
4 oszlop=cells(4,"D"😉.end(xltoright).column
5 sor=cells(4,"D"😉.end(xldown).row
6 sor=cells(9,"D"😉.end(xldown).row
7 sor=cells(1,"H"😉.end(xldown).row
8 sor=cells(rows.count,"H"😉.end(xlup).row
Állíts össze a kép szerinti kis táblákat – akár többet –, valamelyikben állva nyomj Ctrl+nyilat (fel, le, jobbra, balra). A hatásukból azonnal megérted a választ.
Az If-es kérdésedhez: a 2. a jó. Akkor hajtódik végre az If és End If közötti utasítás, ha az E14 cellába vittél be adatot a billentyűzetről. 1 cella helyett tartományt is megadhatsz.
if Not Intersect(Target, Range("E14:H20"😉) Is Nothing then
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Azt szeretném kérdezni, hogy ez az utasítás mit csinál?
if Intersect(Target, Range("G2:G103"😉) then és ez? if Not Intersect(Target, Range("E14"😉) Is Nothing then
És még egy utolsó kérdés ha nem gond van ez : range(cellaId).end(irány) honnan lehet tudni, mikor melyik irányt (xlDown, xlUp,xlLeft, xlRight) kell használni?
Előre is köszönöm. Imre <#integet2>#integet2>
Legyetek szívesek segítsetek, kiapadt a tudományom. Az alábbi a téma. Adott egy táblázat dolgozók adataival. A oszlop munkába állás időpontja, B oszlop Felmondás időpontja. A kérdés, hogy hányan dolgoztak 2013.01.01 és 2013.12.31-ke között. Illetve 2013.01.01-én és 2013.12.31én. Irányított szűrővel próbálkoztam, de nem tudom egyszerre úgy, hogy mindegyik feltételnek megfeleljen. Hogyan tudnám ezt legegyszerűbben megoldani? Köszönöm előre is.
Az Élet nem más mint egy hosszú Halál! \"Belül én már rég meg haltam csak a maszkom él.\" - Junkies Nyúljon meg a nyaka bogyokának, s legyen kék a nyelve!
A területét állíthatod a Height és a Width tulajdonságoknál, de ez csak a Caption-be beírható cím hosszúságát változtatja.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Újra itt! :-)
a kérdésem az volna, hogy a CheckBox jelölőnégyzetének méretét meg lehet változtatni? mondjuk duplájára?
Köszi előre is! :-)
Az Élet nem más mint egy hosszú Halál! \"Belül én már rég meg haltam csak a maszkom él.\" - Junkies Nyúljon meg a nyaka bogyokának, s legyen kék a nyelve!
vegez = 17:00 (date tip.)
ledolgozott idő = Format(vegez - kezd, "hh:mm"😉
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Az napi időpontnál nem is működnek?
Date (dátum és idő), mérete 8 byte, lebegőpontos, aminek az egész része a dátum, a tört része az idő.
Byte (bináris), mérete 1 byte, 0-255 közötti egész szám.
Dim kezd As Date, vegez As Date
kezd = Cells(2, 1)
vegez = Cells(2, 2)
Cells(2, 5) = Format(vegez - kezd, "hh:mm"😉
Ez akkor is működik, ha a kezd egyik napi-, a vegez másik napi időpont.
kezd=2015.11.18 22:00:00
vegez=2015.11.19 6:00:00
Utoljára szerkesztette: Delila1, 2015.11.19. 09:35:30
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Dim kezdes as Double
Dim vege as Double
Dim perce as Byte, mivel a perc egész szám és kisebb 256-nál. Minute(vege)=1 -59 közötti érték.
De ha
Dim kezdes, vege as date
Dim perce as Byte is jó?
Az EnableEvents (esemény engedélyezése) letiltását jellemzően az eseményvezérelt makrókban alkalmazzuk. Pl. a Change eseményben megadod, hogy egy cellába kerüljön egy új adat. Ezt a beírást észreveszi a makró, és újból lefut. Érdemes a makró elején letiltani, majd a végén True-ra állítani.
Könnyen ellenőrizheted a dupla futást, ha a makró elejére beteszel egy stopot, és lépésenként futtatod.
A ScreenUpdating a képernyőfrissítés. Mikor egy hosszú listán végzel műveletet, a tiltása nélkül a képernyő minden művelet után frissül, ami megnöveli a futási időt. Ezt is vissza kell állítani a makró végén.
Nem reagáltál a 2146-os válaszomra.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Érdemes kivenni a Select-et a címsorból. Ha a makrót minden lapon akarod alkalmazni, akkor a ThisWorkbook laphoz rendeld.
A makró elején a helyedben meghatároznám, melyik oszlopba íráskor végezze el a feladatot. Ha jól látom, a D oszlopba írod be az utolsó adatot. A Dim utasítások után betennék egy feltételt:
If Target.column=4 Then
'utasítások
End If
Cella módosításakor indul a makró. Azonnal megnézi a bevitel helyét, és ha ez nem a 4. oszlop, az End If utasításra ugrik, nem számolgat.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Lépj át a füzetedbe, és nézd meg, hogy abban a sorban a C oszlop értéke dátum (idő) típusú-e. Valószínű, hogy nem, vagy esetleg üres a kérdéses cella.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
kezdese = Cells(Target.Row, 3)
veges = Cells(Target.Row, 4)
perce = Minute(vege)
A "kezdese" és a "veges" változok dátum tipusúak. De a"perce " változót nem tudom, hogy mire dimenzionáljam.
Utoljára szerkesztette: Delila1, 2015.11.06. 07:51:15
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
usor = Range("E" & Rows.Count).End(xlUp).Row
A Rows.Count adja a lapok max. darabszámát, ami a régebbi verziókban 65.536 volt, az újabbakban 1.048.576.
Állj az E oszlop legalsó sorára, majd nyomj Ctrl+fel nyilat. Az E oszlop alsó, valamilyen adatot tartalmazó cellája lesz aktív. Ezt a műveletet tartalmazza a Range("E" & Rows.Count).End(xlUp) utasítás. A végén a .Row az aktívvá lett cella sorának a számát adja vissza, ezt tesszük az usor változóba.
Az első üres sor az oszlopban
üres=Range("E" & Rows.Count).End(xlUp).Row+1
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Melyik változónál akad ki típus eltérés hibával?
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
A két lap egymás mellett látszik a képen, a státuszsor a Munka1 lap B2 cellájának a képletét mutatja.
A feltételes formázáshoz jelöld ki a Munka1 lap A2:A... valahány tartományát, majd a formázáshoz add meg a =$B2>0 képletet.
Szerk.
Sajnos a kép nem olvasható. A Munka1!B2 képlete: =DARABTELI(Munka2!A:A;A2), ezt másold le a többi adat mellé.
Utoljára szerkesztette: Delila1, 2015.11.03. 10:43:47
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
(¯`•.¸¸.•´¯`•.¸¸.•~>
Dim fejlec As String, oszlop As Integer
fejlec = "Dátum,Napok,Kezdés,Vége,Ledolgozott idő"
For oszlop = 0 To 4
Cells(1, oszlop + 1) = Split(fejlec, ","😉(oszlop)
Next
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Ezt írod:
Range("A1"😉.Select
Selection.Formula = "Dátum"
Helyette éppen elég (és a Selection elhagyása gyorsít is a programon) Range("A1"😉="Dátum"
A második kérdésedre:
Dim usor As Long
usor = Range("E" & Rows.Count).End(xlUp).Row
Range("E" & usor + 1) = "=SUM(E1:E" & usor & "😉"
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Hogy tudom azt megcsinálni - makróban - hogy az adott oszlop - "E" oszlop - utolsó sora után összegezze az "E" oszlop értékeit. A sorok változhatnak lehet 30 vagy 31 sora attól függ hogy az adott hónap hány napos.
Készítettem egy makró - előtte - innen-onnan sőt még erről az oldalról is kértem segítséget a makró megírására. Na most az a problémám, hogy amikor lefut a Sub Workbook_NewSheet( Byval Sh as Object) és utána a Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Az ebben a rutinban megírt esemény egyik változója Type Mismatch üzenettel kiáll:
Be másolom a cls fájlt mivel nem tom, hogy hogy kell beilleszteni.
Itt a fájl:
Dim menyinap
Public kezdese
Public veges
Public perce
Public terulet As Range
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim menyinap, honapneve
Dim kerdes As Date
If Sh.Name Like "Mun*" Then
kerdes = InputBox("Melyik hónap ? Ird be a dátumot", "Hónap", Date)
honapneve = honnev(kerdes)
Sh.Name = honapneve
End If
menyinap = hanynap(kerdes)
Range("A1"😉.Select
Selection.Formula = "Dátum"
Range("B1"😉.Select
Selection.Formula = "Napok"
Range("C1"😉.Select
Selection.Formula = "Kezdés"
Range("D1"😉.Select
Selection.Formula = "Vége"
Range("E1"😉.Select
Selection.Formula = "Ledolgozott Idő"
Range("A1:E1"😉.Select
With Selection
.HorizontalAlignment = xlCenter
.VerticalAlignment = xlCenter
.WrapText = True
.Font.Size = 16
.Font.Bold = True
.Columns.AutoFit
End With
Range("A2:E" & menyinap + 1).Activate
Columns("A:A"😉.ColumnWidth = 15
Columns("B:B"😉.ColumnWidth = 14
Columns("C:C"😉.ColumnWidth = 12
Columns("D😄"😉.ColumnWidth = 11
Columns("E:E"😉.ColumnWidth = 15
Range("A1:E1"😉.Interior.ColorIndex = 15
Range("A2:A" & menyinap + 1).Interior.ColorIndex = 43
Range("B2:B" & menyinap + 1).Interior.ColorIndex = 6
Range("C2:C" & menyinap + 1).Interior.ColorIndex = 40
Range("D2😄" & menyinap + 1).Interior.ColorIndex = 32
Range("E2:E" & menyinap + 1).Interior.ColorIndex = 7
Range("A2:A" & menyinap + 1).Font.ColorIndex = 49
Range("B2:B" & menyinap + 1).Font.ColorIndex = 53
Range("C2:C" & menyinap + 1).Font.ColorIndex = 14
Range("D2😄" & menyinap + 1).Font.ColorIndex = 3
Range("E2:E" & menyinap + 1).Font.ColorIndex = 49 '18
With Selection.Font
.Size = 15
.Name = "calibri"
.Bold = True
End With
'Range("C2:E" & menyinap + 1).NumberFormat = h & ":" & mm
Range("A2"😉.Select
With Selection
.FormulaR1C1 = kerdes
.AutoFill Destination:=Range("A2:A" & menyinap+1), Type:=xlFillDefault
.Columns.AutoFit
End With
Range("B2"😉.Select
ActiveCell.FormulaR1C1 = "=TEXT(RC<-1>-1>,""nnnn""😉"
Range("B2"😉.Select
Selection.AutoFill Destination:=Range("B2:B" & menyinap + 1)
Range("B2:B" & menyinap + 1).HorizontalAlignment = xlCenter
End Sub
Public Function honnev(honapp As Date)
Dim neve
neve = MonthName(Month(honapp))
honnev = neve
End Function
Public Function hanynap(anapok)
Dim napszam
napszam = WorksheetFunction.EoMonth(anapok, 0)
hanynap = Day(napszam)
End Function
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim kezdese, veges As Date
Dim perce As Currency
Dim i
Range("c1"😉.Activate
i = ActiveCell.CurrentRegion.Rows.Count - 1
kezdese = Cells(Target.Row, 3)
veges = Cells(Target.Row, 4)
perce = Minute(vege) Type mishmatch hiba
'Debug.Print "kezdés:" & kezdes, "vége:" & vege
'Debug.Print "vege - kezdes:" & WorksheetFunction.RoundUp((vege - kezdes) * 24, 0)
If Target.Column = 4 Then
Select Case perc
Case 0, 30
Cells(Target.Row, 5) = ((vege - kezdes) * 24)
Case 1 To 29
Cells(Target.Row, 5) = WorksheetFunction.RoundUp((vege - kezdes) * 24 / 0.5, 0) * 0.5
Case 31 To 59
Cells(Target.Row, 5) = WorksheetFunction.RoundUp((vege - kezdes) * 24 / 0.5, 0) * 0.5
End Select
End If
End Sub
Ebben kérném a segítséget. Előre is köszönöm.
Azt hittem, felteszed a kérdést, majd soha többé nem nézel el a fórumra. <#ejnye1>#ejnye1>
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Const utvonal = "D:\Akármi\Valami\"
ActiveWorkbook.SaveAs Filename:=utvonal & Sheets("Munka1"😉.Range("G3"😉 & ".xlsm", FileFormat:= _
xlOpenXMLWorkbookMacroEnabled, CreateBackup:=False
End Sub
Az utvonal változóhoz a saját útvonaladat add meg, a Sheets("Munka1"😉 helyén is a saját lapod neve legyen.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Az lenne a kérdésem hogy, hogyan tudom azt megcsinálni hogy a G3 cellába írt szöveg legyen automatikusan a mentési név.
Előre is köszönőm a segítséget!
Könnyen elforgathatsz egy táblázatot. Kijelölöd, másolod, egy üres helyre irányítottan, transzponálással beilleszted.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Chaos Anno Domini
Valószínű, hogy a példa szerintit csak makróval lehet megoldani.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
A jobb oldali összesítőtáblát szeretném függvénnyel megoldani a bal oldali alapján.
Chaos Anno Domini
Az összesítő G2 cellájának a képlete látszik a szerkesztőlécen. Ezt másold jobbra és le az I13 celláig. Ügyelj a $ jelekre!
Utoljára szerkesztette: Delila1, 2015.10.01. 15:29:44
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Tehát az összesítőtáblát szeretném függvénnyel frissíteni.
Utoljára szerkesztette: zvaragabor, 2015.10.01. 15:06:52
Chaos Anno Domini
A C1 képlete =100-MIN(A1:B1)
Ha mindig a nagyobból kell kivonnod a kisebbet, akkor a C1-be ezt írd: =MAX(A1:B1)-MIN(A1:B1)
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Program az, ami az adatokat hibaüzenetté konvertálja. Lassú munkához idő kell.
Chaos Anno Domini
Van egy táblám, több oszloppal, de ami nekem kell, az egyik oszlop a hónapot tartalmazza (JAN, FEB, MAR...), hogy melyik hónapban szerepelt az adott tétel, néhány oszloppal arrébb pedig különböző kategóriájú (FR0, FR1, FR2, FR3, O) oszlopok vannak, és be van jelölve egy 1-essel, hogy melyik kategóriában szerepelt az az esemény. Egy hónapban szerepelhet több esemény is, de nem föltétlen ugyan azzal a kategóriával. Ez a fő táblám, ahova viszem be az adatokat.
Akkor alatta van egy összesítő táblázat, első oszlop a hónapok nevei egymás alatt soronként, következő oszlopok megint a kategóriák (FR0, FR1...). Szeretném összegezni, hogy adott hónapban mennyi esemény volt az adott kategóriában. Tudtok segíteni?
Chaos Anno Domini