-
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
aprokaroka87
#31985
üzenetére
=INDEX(A2:B10;HOL.VAN(MIN(B2:B10);B2:B10;0);1) -
Delila_1
veterán
Készítesz egy kimutatást, ahol a sorcímkékhez a B oszlop a rendelés ID címsort-, az értékekhez a termelés ID-t adod meg. Ez van nálam a K:L tartományban.
A kimutatásból veszi az adatokat a G és H oszlop, amiknek a képlete látszik a megjegyzésekben. A SOR() függvény az aktuális sor számát adja, ezért vontam le 2-t belőle. Pl. a H3-ban a SOR()-2=1, tehát a NAGY függvény az első legnagyobb értéket adja vissza az L4:L16 tartományból.
-
Delila_1
veterán
válasz
róland
#31906
üzenetére
Tettem fel egy fájlt, amiben le vannak tiltva a következő hónap napjaihoz rendelt érvényesítési értékek.
A hétvégéken kívül más háttérszínnel jelöltem az ünnepnapokat, és az áthelyezett szombatokat is.
Az A3 képlete adja a hónap munkaóra számát. Kivétel az a két hónap (március és október), ahol 8 órával több lesz a mutatott értéknél. Ezt majd valaki ügyesen megoldja.
-
Delila_1
veterán
-
-
Delila_1
veterán
Gomb a gyorselérési eszköztárra
Vigyázz, más lesz a nyomtatási területed, mint a makróban.
-
Delila_1
veterán
Rögzítesz egy makrót, amiben az Exel megfelelő ikonjával indítasz egy nyomtatást.
Ehhez annyit teszel hozzá az End Sub fölé, hogy Range("X1")= Range("X1")+1
A makró a nyomtatás után az X1 cella értékét növeli minden nyomtatás után 1-gyel, mindig azt mutatja, hányszor volt kinyomtatva a lap tartalma. -
Delila_1
veterán
válasz
Declare
#31858
üzenetére
Sub Beszur()
Selection.EntireRow.Insert
Rows(Selection.Row - 1).EntireRow.Copy Range("A" & Selection.Row)
Cells(Selection.Row, "K") = "=M" & Selection.Row - 1 & "*0.1"
End SubBemásolod modulba a makrót.
A Gyorselérési eszköztár jobb szélén katt a lefelé nyílra, További parancsok.
A "Választható parancsok helye" legyen Makrók. Az alatta lévő listából a Beszur nevűt átmásolod a jobb oldali listába. Ott a Módosítás gombbal rendelhetsz hozzá csilli-villi képet, megváltoztathatod a hozzá rendelt, megjelenő szöveget. -
Delila_1
veterán
válasz
Declare
#31856
üzenetére
A lap moduljába másold a makrót (lásd a Téma összefoglalót).
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Cancel = True
Selection.EntireRow.Insert
Rows(Target.Row - 2).EntireRow.Copy Range("A" & Target.Row - 1)
Cells(Target.Row - 1, "K") = "=M" & Target.Row - 2 & "*0.1"
End SubJobb klikkre indul.
Ugyanez duplaklikkhez:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)b
Cancel = True
Selection.EntireRow.Insert
Rows(Target.Row - 2).EntireRow.Copy Range("A" & Target.Row - 1)
Cells(Target.Row - 1, "K") = "=M" & Target.Row - 2 & "*0.1"
End Su -
Delila_1
veterán
válasz
DeFranco
#31836
üzenetére
Az A1:T20 (20×20-as) mátrixodhoz tedd modulba a lenti makrót, majd indítsd.
Sub Matrixos()
Dim cella As Range, oszlop As Integer, sor As Long
Dim terulet As Range
Set terulet = Range("A1:T20")
oszlop = 21: sor = 1
For Each cella In terulet
If cella.Row > sor Then
oszlop = 21: sor = sor + 1
End If
If cella <> "" Then
Cells(cella.Row, oszlop) = cella.Address
Cells(cella.Row, oszlop + 1) = cella.Value
oszlop = oszlop + 2
End If
Next
End Sub -
Delila_1
veterán
válasz
PeLa87
#31822
üzenetére
Feltettem a ide a füzetedet.
Az A oszlop a név, a B ennek az angol karakteres megfelelője + egy hozzá fűzött alsó kötjel + 5 db véletlen karakter. A harmadik oszlopban a B oszlop bárkódja. Ehhez csak annyi kell, hogy a B oszlopra hivatkozva hozd be a nevet, és egy bárkód típusú karakterkészletet rendelj hozzá. Az én füzetemben a "3 of 9 Barcode" nevű van.
A második oszlop adatait egy saját, Karaktercsere nevű függvény állítja elő. Ebben az oszlopban véletlen-szerűen előállított karakterek vannak. Hogy megmaradjon az egyes nevekhez rendelt pár karakter, a cellát másold, és saját magára adj értékbeillesztést.
-
Delila_1
veterán
válasz
alevan
#31785
üzenetére
Van itt 3 makró.
Sub Gyujtes()
Dim lap As Integer, usor As Long
Sheets(1).Range("N:Q") = ""
'Címsor az első lapon az N1:Q1-be
Sheets(1).Range("N1:Q1") = Sheets(1).Range("A1:D1").Value
For lap = 1 To Worksheets.Count 'Lapok tartalma az első lapra
usor = Sheets(1).Range("N" & Rows.Count).End(xlUp).Row + 1
Sheets(lap).Range("A1").CurrentRegion.Offset(1).Copy Sheets(1).Range("N" & usor)
Next
Rendez
End SubSub Rendez()
Dim usor As Long
Sheets(1).Select
usor = Range("N" & Rows.Count).End(xlUp).Row
Range("N1").CurrentRegion.Select
ActiveWorkbook.Sheets(1).Sort.SortFields.Clear
ActiveWorkbook.Sheets(1).Sort.SortFields.Add Key:=Range("N2:N" & usor), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(1).Sort
.SetRange Range("N1:Q" & usor)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Fajlokba usor
End SubSub Fajlokba(usor)
Dim utvonal As String, elso As Long, ucso As Long, nev As String
utvonal = "D:\Mentés\" '*** Ezt írd át! **************
elso = 2: ucso = 2: nev = Sheets(1).Range("N2")
Do
nev = Sheets(1).Cells(elso, "N")
If nev = "" Then Exit Do
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = nev
Range("A1:D1") = Sheets(1).Range("A1:D1").Value 'Címsor az új füzetbe
ucso = Application.Match(nev, Sheets(1).Columns(14), 1)
Sheets(1).Range("N" & elso & ":Q" & ucso).Copy Sheets(nev).Range("A2")
ActiveSheet.Move
ActiveWorkbook.SaveAs Filename:=utvonal & nev & ".xlsx", FileFormat:= _
xlOpenXMLWorkbook, CreateBackup:=False
ActiveWindow.Close
elso = ucso + 1
Loop
Sheets(1).Select
MsgBox "Kész", vbInformation
End SubA harmadikban írt át a csillagokkal jelzett sorban az útvonalat.
Az első makrót (Gyujtes) kell indítanod, az majd hívja a másik kettőt.
Az első lap N:Q oszlopába összegyűjti a többi lap adatait, rendezi a nevek szerint, majd új lapra másolja egyenként a nevekhez tartozó sorokat. Ezt az új lapot áthelyezi egy új fájlba, és menti a megadott névvel, majd be is zárja. -
Delila_1
veterán
válasz
lenkei83
#31766
üzenetére
A felső makróban az összes lapot felszabadítod, majd 2 lapnál beállítod az autoszűrőt, és ismét minden lapot levédesz. Elég lenne egyenként a 2 laphoz beállítani a makróból módosítást, és végrehajtani a szűrő beállítását.
A 2. makró első sora is legyen
ActiveSheet.Protect UserInterfaceOnly:=True. -
-
Delila_1
veterán
válasz
ocsi19
#31756
üzenetére
Egyszerűbb összeállítani, mint leírni a módját.
A Munka1 lapon a legördülőbe elkezded beírni a keresett nevet, az E5 cellában megjelenik a hozzá tartozó adat, ami a Munka2 lapon van.
A csatolt cella a C5 a legördülőhöz, erre hivatkozik az E5 függvénye.
-
Delila_1
veterán
-
-
Delila_1
veterán
válasz
JagdPanther
#31684
üzenetére
Bocsi az elírásért!
-
Delila_1
veterán
válasz
JagdPanther
#31680
üzenetére
Töröld ki az első makrót.
-
Delila_1
veterán
válasz
JagdPanther
#31678
üzenetére
Private Sortores()
Cells(Selection.Row, 4) = Cells(Selection.Row, 4) & Chr(10)
Cells(Selection.Row, 5) = Cells(Selection.Row, 5) & Chr(10)
Cells(Selection.Row, 10) = Cells(Selection.Row, 10) & Chr(10)
End SubBeviszed ezt egy modulba (lásd Téma összefoglaló).
A füzetben Alt+F8-ra megjelennek a makróid. Kiválasztod a Sortores nevűt, Egyebek gomb. Ott megadhatod a bill. kombinációt. -
Delila_1
veterán
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Cells(Target.Row, 4) = Cells(Target.Row, 4) & Chr(10)
Cells(Target.Row, 5) = Cells(Target.Row, 5) & Chr(10)
Cells(Target.Row, 10) = Cells(Target.Row, 10) & Chr(10)
End SubHa a "rállás" helyett bevitelre szeretnéd a sortörést a meghatározott cellákba, a címből töröld a Selection részt.
-
Delila_1
veterán
válasz
m.zmrzlina
#31651
üzenetére
Próbáld így: NumberFormat = "@"
-
Delila_1
veterán
válasz
rozsa89
#31613
üzenetére
Szívesen.

Sokat kell nézegetni a súgóban a függvényeket, és próbálkozni is érdemes velük. Az Excel fórumokon is tanulhatsz, meg a YouTube-on.
="S1-"&KÖZÉP(A2;3;6)*1&"/"&DARABTELI(A$2:A2;"*" & KÖZÉP(A2;3;6) &"*")
Ebben a képletben az & jellel fűzünk össze különféle adatokat.
"S1-" ez egy meghatározott szöveg
KÖZÉP(A2;3;6)*1 Ez az A2 szövegének a közepe, a 3. karaktertől kezdve 6 karakter hosszan. A *1 azért kell, mert a szövegnek a közepe is szöveg, a szorzással számmá alakítjuk. Nem feltétlen szükséges.
"/" szintén meghatározott szöveg
DARABTELI(A$2:A2;"*" & KÖZÉP(A2;3;6) &"*") ennek a KÖZÉP részét már tudod, az elé- és mögé tett "*" azt határozza meg, hogy a DARABTELI függvénnyel olyan adatokat akarunk megszámlálni a tartományban (A$2:A2), amelyekben szerepel a középrész, függetlenül attól, hogy a cellák teljes tartalma-e az érték, vagy csak része.
A DARABTELI függvényben szereplő $ jel megértéséhez olvass utána a relatív-, fix-, és vegyes hivatkozásoknak.
-
Delila_1
veterán
válasz
bteebi
#31572
üzenetére
A dolg változóba beteszel egy véletlen számot – dolg = Round(Rnd() * (felso - also) + also, 0).
Megnézed, hogy a napok() tömb dolgadik eleme egyenlő-e "X"-el, vagyis használtad-e már ezt a dolg értéket? Ha igen, akkor visszazavarod a futást a véletlen szám generáláshoz. Ha üres ez az elem, akkor egyrészt a beírod a dolgadik nevet a megfelelő helyre – Cells(sor, oszlop) = Cells(dolg, 11) –, másrészt a tömbben foglalttá teszed egy "X"-szel – napok(dolg) = "X" .A következő ciklussal ellenőrzöd, hogy a tömbben kihasználtál-e minden értéket. A már foglalt tömbelemek értéke "X". Ezt számolod a ciklusban, a db változó segítségével. Ha a db értéke megegyezik a dolgozók számával (db=17), akkor kiüríted a tömb elemeit a következő kis ciklussal, és folytatódik a cellák feltöltése a nevekkel.
Felvetődhet a kérdés, miért éppen napok a tömb neve? A válasz: csak.
-
Delila_1
veterán
-
Delila_1
veterán
válasz
bteebi
#31560
üzenetére
Kicsit másképp rendeztem az adatokat. Az A oszlopban vannak a hetek 21–52-ig. A heti 2 dátum a B és C oszlopban látható. A neveket a K oszlopba tettem.
A makró a heti 2 nevet a D és E oszlopba írja be. Két ellenőrző oszlopot tettem be az F, ill. az L oszlopba, a képen látszik ezeknek a képlete.A makró
Sub Beosztas()
Const also = 1: Const felso = 17
Dim napok(1 To 17), db As Long, tele As Long
Dim sor As Integer, oszlop As Integer, dolg As Integer
For sor = 2 To 33
For oszlop = 4 To 5 'D:E
Veletlen:
Randomize
dolg = Round(Rnd() * (felso - also) + also, 0)
If napok(dolg) = "X" Then GoTo Veletlen
napok(dolg) = "X"
Cells(sor, oszlop) = Cells(dolg, 11) 'K oszlop, nevek
DoEvents
db = 0
For tele = 1 To 17
If napok(tele) = "X" Then
db = db + 1
End If
Next
If db = 17 Then
For tele = 1 To 17
napok(tele) = ""
Next
db = 0
End If
Next
Next
End Sub -
Delila_1
veterán
válasz
Declare
#31524
üzenetére
Néhány megjegyzés:
A makró címének ne adj VBA kulcsszót (copy).
Deklaráltál egy MyCol változót, amit később nem használsz fel (apró dolog, nagyobb baj lenne fordítva).
A for-next ciklusnál alapérték az 1-es lépésköz, ezért nem kell kiírni.
Ha az A oszlop utolsó értéke >=13, akkor a másolt E13:AB14 tartomány felülírja a vizsgált H oszlop értékét.
Nincs szükség a függvényre, hiszen 1 cella értékét vizsgálod, nem egy tartományét.Sub Masolas()
Dim i As Integer
For i = 1 To Range("A1353").End(xlUp).Row
If Range("H" & i) = "1" Then Range("E13:AB14").Copy Range("E" & i)
Next i
End Sub -
-
Delila_1
veterán
Másképp:
Sub Egyes()
Dim oszlop, usor As Long
oszlop = Application.Match("Cím1", Rows(1), 0)
usor = Range("E" & Rows.Count).End(xlUp).Row
Range(Cells(2, oszlop), Cells(usor, oszlop)).Select
Selection.SpecialCells(xlCellTypeBlanks) = 1
End SubA Cím1 szöveget keressük az első sorban.
-
Delila_1
veterán
Nem kell függvény.
Kijelölöd a tartományt, amiben az üres cellák vannak. Ctrl+g-re bejön az Ugrás menü. Ott Irányított gomb, majd Üres cellák. Kijelöli az üres cellákat, amik közül az első lesz aktív. Nem szünteted meg a kijelölést, hanem beírsz egy 1-est, és Ctrl+Enterrel beviszed, egyszerre az összes kijelölt helyre.
-
Delila_1
veterán
válasz
Hun91FaTe
#31498
üzenetére
Az ActiveX vezérlők közül a Beviteli lista nevűt tedd ki a lapodra.
A Tulajdonságok menüpontot kiválasztva megadhatod a ListFillRange paraméternél a választható adatokat. pl. Munka1!A1:A20. A LinkedCell-be beírhatod azt a cellacímet, ahol esetleg a kiválasztott értéket meg akarod jeleníteni.
Érdemes megnézni a többi tulajdonságot is.
A Tulajdonságok menüpont akkor elérhető, mikor a Tervező mód be van kapcsolva.
-
Delila_1
veterán
válasz
#02644736
#31485
üzenetére
A füzet Bevitel lapján felveszel egy új oszlopot, ami a B oszlopban lévő dátum hetét adja.
Az összesítések lapra készítesz egy kimutatást, majd létrehozod a csoportosítást. Havonta, és ezen belül hetente összesít.
Ha a Bevitel lapon lévő adatokat táblázattá alakítod, a kimutatás követi az újonnan bevitt sorokat, csak rosszul mutatnak az A oszlop összevont cellái.
Ha lehet, kerülöm az összevonásokat, sok bajt okozhatnak. A dátum oszlopban a teljes dátum megjelenítése (a jelenlegi "nn" formátum helyett) kiküszöbölné az összevonásokat, és 1 oszloppal kevesebb lehetne.
Ebben a füzetben átalakítottam a Bevitel lapot.
Új hozzászólás Aktív témák
- PC Játékok
- Játékkulcsok ! : PC Steam, EA App, Ubisoft, Windows és egyéb játékok
- Xbox / Microsoft Store feltöltőkártya kód (digitális, HU) több címlet, több db, azonnal, olcsón
- Game Pass Ultimate előfizetések 1 - 36 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN! AKCIÓ!
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - 15% AKCIÓ
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- Xbox Elite Series 2 Core kontroller
- GYÖNYÖRŰ iPhone 14 Plus 256GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS4526
- MacBook Pro 14" 2023 M3 Pro 11/14 mag, 36 GB RAM, 512GB SSD - 27% ÁFA 0383AB
- Apple iPhone 12 128GB,Átlagos,Adatkabel,12 hónap garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


![;]](http://cdn.rios.hu/dl/s/v1.gif)


