-
Mobilarena
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
bozsozso #40143 üzenetére
Az első csoporthoz az A-B oszlopokat jelöld ki, a másodikhoz csak a D-t.
Szerintem is elég béna megoldás, de csoportosításkor a tartománytól jobbra lévő oszlopot automatikusan összegző oszlopként értelmezi az Excel. Ezt módosíthatod az Adatok | Tagolás-nál, a Tagolás felirat jobb alsó sarkában lévő kis nyíl párbeszéd ablakában.
-
Delila_1
veterán
-
Delila_1
veterán
válasz
garga01 #40058 üzenetére
Sub Oszlopszam()
Dim uoszlop As Integer
uoszlop = Cells(1, Columns.Count).End(xlToLeft).Column
MsgBox uoszlop
End SubAz összevont cellák miatt 1-gyel kevesebb lesz a kiírás. Ezt megoldhatod, ha az értékadásnál növeled az uoszlop értékét.
uoszlop = Cells(1, Columns.Count).End(xlToLeft).Column+1
-
Delila_1
veterán
Excelbe kellene felvinni az adatokat a tanároknak, ahol minden sor 1 tanuló adatait tartalmazza.
A formátumot Word-ben hoznám létre, ahol a körlevél funkcióval lehetne összefésülni az adatokat.Az Excelben létre lehetne hozni egy beviteli felületet – userformot –, ami könnyűvé tenné a bevitelt, és rá lehetne venni a feltehetően ellenkező tanárokat, hogy ne kockás papírra rögzítsék az adatokat.
Ilyesmire gondolok, persze sokkal több kitöltendő vezérlővel.
Kiválasztja az osztályt, mire a Név mezőben megjelenik az ottani tanulók neve, stb. -
Delila_1
veterán
A pontszámokat tartalmazó oszlophoz rendelsz egy újat, pl. az M oszlopba.
M2 -> =B2+sor()*0,0001
Itt a B oszlop tartalmazza a pontszámokat. A sor()*0,0001 az eredeti pontszámhoz ad egy nagyon kicsi értéket (lehet még kisebb is), aminek az értéke soronként változik a sor() függvény miatt. Így a különböző sorokban lévő azonos értékeket az M oszlopban eltérővé alakítod, a sorrendet eszerint állapíthatod meg.
-
Delila_1
veterán
válasz
Dinter #40033 üzenetére
Makró?
Sub dupla()
Dim sor As Long
Columns("E:F").Copy
Range("E1").PasteSpecial xlPasteValues
sor = 2
Do While Cells(sor, 2) > ""
If Cells(sor, "E") = "True" Then Cells(sor, "B") = "True"
If Cells(sor, "F") = "False" Then Cells(sor, "B") = "False"
Range("C" & sor & ":F" & sor) = ""
sor = sor + 1
Loop
End Sub -
Delila_1
veterán
válasz
benkez #40008 üzenetére
Nem biztos, hogy jól értem. Egyik Excel táblából akarod másikba másolni a szövegeket, attól függetlenül, hogy a másolandó valahonnan veszi az adatokat?
Ha igen, az új lapon (füzetben) írd az A1-be: =eredeti!A1, és ezt másold jobbra és le. Ha szükséges, itt az eredeti füzet nevét is meg kell adnod a lapnéven kívül. Legegyszerűbb az = jel után átkattintani a másolandó helyre.
Mikor kész, jelöld ki az új területet, másold, és irányítottan, értékként ugyanoda illeszd be.
-
Delila_1
veterán
Ha csak az A oszlopot akarod formázni a B=1 és C=1 esetén, akkor az érvényesség az A oszlopra vonatkozzon ($A$2:$A$1000), a képlet pedig
=ÉS(B2=1;C2=1)
.Teljes sor (A:C oszlopok) formázásakor a tartomány $A$2:$C$1000, a képlet
=ÉS($B2=1;$C2=1)
. Látod, a címsor kimarad a formázásból, de akár benne is lehet, hiszen a címek között – feltehetően – nem szerepelnek számok. -
Delila_1
veterán
válasz
Barci79 #39869 üzenetére
Az AZ25 képlete egyszerűbben: =jobb(B25;7)
Azokat a mezőket, amiket a mintaként megadott kimutatások bal oldalán látsz, a sorokhoz-, az oszlopokhoz pedig a MET KW-t kell kell behúznod. Az értékekhez bármelyik, nem számot tartalmazó mezőt add meg.
Szerk.: míg írtam, megoldottad.
-
Delila_1
veterán
válasz
PerezT #39811 üzenetére
Lehet, hogy nem értjük egymást.
A most feltöltött fájlban egy kimutatásban hoztam össze az egyes bérlők termékeire kifizetett összegeket. Ha csak egy bizonyos dátum tartomány értékeit szeretnéd látni, a Dátum mezőben (B17) jelöld be a kívánt időpontokat.
-
Delila_1
veterán
válasz
friccccc #39768 üzenetére
Kijelölöd a tartományt, és indítod a makrót.
A
For Each CV In Selection
sorban a Selection helyett megadhatod a tartományt, pl. Range("A5:C30") módon, ekkor nem kell előre kijelölnöd a tartományt.Sub Egyszin()
Dim CV As Range
For Each CV In Selection
If CV.Interior.ColorIndex <> -4142 Then
CV.Interior.Color = vbYellow
End If
Next
End Sub -
-
Delila_1
veterán
válasz
Laciahegyrol #39669 üzenetére
Idézet Krizsák László könyvéből:
"Előfordul, hogy az eljárás ismételt meghívásakor szeretnénk az előző befejezéskori értékeket visszanyerni.
Ilyen esetekben használható a Static változó definiálás.A Static hatására az eljárásból kilépve a változó értéke nem semmisül meg, hanem csak elrejtésre kerül.
(A memóriában nem szabadul fel a tárolására használt terület, ezért sok ilyen változó használata nem célszerű.) Az eljárás következő meghíváskor a kilépéskori értéket kapjuk vissza.Bár ezek alapján látszólag a Static változókhoz a hívó programból is hozzá lehetne férni (benne vannak a memóriában), de ez nem valósul meg, mivel a változók általában csak az őket definiáló programokban érhetőek el."
-
Delila_1
veterán
-
Delila_1
veterán
válasz
Laciahegyrol #39669 üzenetére
A Static tip. változó csak addig tartja meg az értékét, míg be nem zárod a füzetedet.
-
Delila_1
veterán
válasz
Laciahegyrol #39667 üzenetére
A füzet bezárásakor a makró változóinak értéke lenullázódik.
Nem értem, mi köze a névadásnak az egyes értékek tárolásához.A lenti makróban is egy cella tartalmazza az értéket, amit beolvashatsz egy változóba, csak itt egy újonnan létrehozott tartomány egy bizonyos cellájáról van szó.
Sub mm()
Dim valtozo As Variant
'Nevet adunk a Data lapon lévő B2:K20 tartománynak
Sheets("Data").Names.Add Name:="Tartomany", RefersToR1C1:="=Data!R2C2:R20C11"
'betesszük a valtozo-ba a megadott tartomány 2. sorában, 3. oszlopában lévő értéket
valtozo = Sheets("Data").Range("Tartomany")(2, 3)
MsgBox valtozo
End Sub -
Delila_1
veterán
válasz
Laciahegyrol #39664 üzenetére
A makró végén írasd be egy cellába
Sheets("Munkalap").Range("AA1")=változó
új indításkor innen olvashatod ki.
változó=Sheets("Munkalap").Range("AA1")
-
Delila_1
veterán
válasz
wednesday #39661 üzenetére
Sub LapMasolas()
Dim lookup_name As String, lookup_date As Date
lookup_name = "ÚjLapNeve" 'Cellahivatkozás is adhatsz nevet-> lookup_name = Range("A3")
lookup_date = Date 'Mai dátum. Cellahivatkozással-> lookup_date =Range("C10")
Sheets(1).Copy Before:=Sheets(2)
'A lap másolása után az új lap lesz aktív
ActiveSheet.Name = lookup_name & "_" & Format(lookup_date, "YYYYMMDD")
'Ha a fenti, megjegyzések szerinti hivatkozás alapján akarsz nevet adni, az ActiveSheet.Name kezdetű
'sor helyett legyen ActiveSheet.Name = Range("A3") & "_" & Format(Range("C10"), "YYYYMMDD")
'Az új lap D8 és D15 cellájából törli az értékeket
Range("D8,D15") = ""
End Sub -
Delila_1
veterán
válasz
mcwizard #39648 üzenetére
Mutt megoldásához még 1:
Minden oszlop látszik. Nézet menü, Munkafüzetnézetek, Egyéni nézetek, Hozzáadás. Megadod a nevet, pl. Teljes, OK.
Elrejted az F-G-H oszlopokat, menü mint az előbb, az új név NukuFGH.
Ezután a menüben tetszésed szerint választhatsz a két új elrendezésed közül. -
Delila_1
veterán
válasz
gaben86 #39635 üzenetére
Először meg kell találni a sort, amelyik a kiválasztott azonosítóhoz tartozik. Ezt a HOL.VAN függvénnyel keresheted ki.
=HOL.VAN(Munka2!H1;$A:$A;0)
Ezt használhatod az INDEX függvényben.
=INDEX(Munka2!$A:$BO;HOL.VAN(Munka2!H1;$A:$A;0);1)
ahol az első paraméter, a Munka2!$A:$BO határozza meg a tartományt, amiben keresel,
a második paraméter a tartományban lévő keresett sor, amit fentebb már írtam,
az utolsó paraméter (1) adja meg, hogy a tartomány melyik oszlopából kéred az adatod. Az 1 az A oszlopból, a 2 a B-ből, stb...Ha a másik lap egyes oszlopaiba a Munka2 lap előző oszlopának az értékét akarod beilleszteni – B-be a Munka2 lap A oszlopát –, akkor az oszlopszám helyére kerülhet a képletben OSZLOP()-1 . Az OSZLOP() függvény az aktuális oszlop számát adja meg.
Tehát a kigyűjtendő lapon kell az egyes cellákba beírni az INDEX-HOL.VAN párost. Törlésre nincs feltétlenül szükség, hiszen az üres cellák értékei is felülíródnak a képletek által.
-
Delila_1
veterán
válasz
wednesday #39628 üzenetére
Private Sub CommandButton1_Click()
Dim sor As Variant
On Error Resume Next
sor = Sheets(1).Range("A:A").Find(CDate(TextBox1)).Row
If IsEmpty(sor) Then
MsgBox "Nem található " & TextBox1 & " dátum az A oszlopban.", vbCritical
On Error GoTo 0
Exit Sub
Else: MsgBox sor
End If
End Sub -
Delila_1
veterán
válasz
l.skywalker #39616 üzenetére
=SZUM(INDIREKT("A2:A"&DARAB2(A:A)))
=ÁTLAG(INDIREKT("A2:A"&DARAB2(A:A)))
Az A1 cellában van az oszlop címe.
-
Delila_1
veterán
válasz
Iethau #39608 üzenetére
A két lap neve nálam Régi és Friss. Az ügyfelek neve mindkét lapon az A oszlopban van. Írd át a makróban a saját lapjaid nevére.
A makrót modulba másold, ennek módját lásd a Téma összefoglalóban.Sub Frissites()
Dim sor As Long, talal, usor As Long
Sheets("Régi").Activate
usor = Range("A" & Rows.Count).End(xlUp).Row
For sor = usor To 2 Step -1
On Error Resume Next
talal = Application.Match(Cells(sor, "A"), Sheets("Friss").Columns("A"), 0)
If IsError(talal) Then Rows(sor).Delete Shift:=xlUp
On Error GoTo 0
Next
End Sub -
Delila_1
veterán
válasz
Blackhole13 #39590 üzenetére
Egy rövid makró.
Sub Negyszerez_()
Dim sor As Long, usor As Long, beszur As Integer
usor = Range("A" & Rows.Count).End(xlUp).Row
For sor = usor To 1 Step -1
For beszur = 1 To 3
' Cells(sor, "A").Insert Shift:=xlDown 'Csak az A oszlopba szúr be
Rows(sor).Insert Shift:=xlUp 'Teljes sort szúr be
Cells(sor, "A") = Cells(sor + 1, "A")
Next
Next
End SubKét sorban találsz megjegyzést, amik közül az első most megjegyzésbe van téve. Azt hagyd meg közülük, amelyik passzol a feladatodhoz.
Ha nem az A oszlopról van szó, mindenhol írd át a betűjelet, az "A"-t. -
Delila_1
veterán
válasz
lorcsi #39569 üzenetére
Sub Szetcincal()
Dim sor As Long, WS As Worksheet, utvonal As String
utvonal = ThisWorkbook.Path & "\"
Application.ScreenUpdating = False
Set WS = ActiveSheet
sor = 2
Do While Cells(sor, 1) <> ""
Sheets(Array("Munka2", "Munka3", "Munka4", "Munka5", "Munka6", "Munka7", "Munka8", _
"Munka9", "Munka10", "Munka11", "Munka12")).Copy '***
Sheets.Add before:=Sheets(1)
ActiveSheet.Name = "Munka1" '*****
WS.Rows(1).Copy ActiveWorkbook.Sheets(1).Cells(1)
WS.Rows(sor).Copy ActiveWorkbook.Sheets(1).Cells(2, 1)
ActiveWorkbook.SaveAs utvonal & sor - 1 & ". füzet.xlsx"
ActiveWorkbook.Close
sor = sor + 1
Loop
Application.ScreenUpdating = True
End SubA 3 csillaggal jelzett sorban írd át a "Munka2", "Munka3" ... "Munka12" neveket a saját lapjaid nevére..
Az 5 csillagos sorban a "Munka1" helyére írd be a szétszedendő lapod nevét. -
Delila_1
veterán
válasz
lorcsi #39552 üzenetére
A lenti makrót másold a szétszedendő füzetedben egy modulba (lásd a téma összefoglalót). Állj arra a lapra, amit külön füzetekbe akarsz másolni, majd indítsd a makrót.
Ha nem jó az új füzetek elnevezése (1.füzet.xlsx, 2.füzet.xlsx, stb.), az
ActiveWorkbook.SaveAs utvonal & sor - 1 & ". füzet.xlsx"
soron kell változtatni.Sub Szetcincal()
Dim sor As Long, WS As Worksheet, utvonal As String
utvonal = ThisWorkbook.Path & "\"
Set WS = ActiveSheet
sor = 2
Do While Cells(sor, 1) <> ""
Workbooks.Add
WS.Rows(1).Copy ActiveWorkbook.Sheets(1).Cells(1)
WS.Rows(sor).Copy ActiveWorkbook.Sheets(1).Cells(2, 1)
ActiveWorkbook.SaveAs utvonal & sor - 1 & ". füzet.xlsx"
ActiveWorkbook.Close
sor = sor + 1
Loop
End Sub -
Delila_1
veterán
válasz
l.skywalker #39543 üzenetére
Ezek a feltételek ÉS kapcsolatban vannak egymással. Egy másik oszlopba tedd a DO feltételt.
-
Delila_1
veterán
válasz
l.skywalker #39539 üzenetére
Szívesen.
-
Delila_1
veterán
válasz
l.skywalker #39537 üzenetére
Tömbfüggvény, Shift + Ctrl + Enter-rel kell bevinned.
=SZUM((B5:B14="YES")*(C5:C14="YES")*(D5:D14)*(E5:E14))
-
Delila_1
veterán
válasz
tgumis #39530 üzenetére
Semmi szükség külön lapra, ahol megdupláznád az adataidat.
Az utolsó lapon a címsorba autoszűrőt teszel, szűrsz törzsszámra, vagy névre, és beírod a kiadott ruhadarabot.
Több névre is szűrhetsz.Nézd meg az adatokat! Azonos törzsszámmal rendelkezik Tóth Éva Püspökladányból, és Takács Éva Békéscsabáról. Van, aki Bp. Nyugatiban, és Záhonyban is szerepel. Összesen 4 ilyen párod van. Használd a DARABTELI függvényt a kikeresésükhöz!
-
Delila_1
veterán
válasz
gaben86 #39497 üzenetére
Modulba másold a makrót, majd rendeld a gombodhoz.
Sub Masolas()
Dim utvonal As String, FN As String
utvonal = ThisWorkbook.Path & "\"
FN = Sheets("Munka1").Range("L1")
Range("A1:N55").Copy
Workbooks.Add
Sheets(1).Range("A1").PasteSpecial xlPasteValues
Sheets(1).Range("A1").PasteSpecial xlPasteFormats
ActiveWorkbook.SaveAs Filename:=utvonal & FN & ".xlsx"
ActiveWorkbook.Close
End Sub -
Delila_1
veterán
válasz
littleNorbi #39496 üzenetére
A laphoz rendelted a makrót?
-
Delila_1
veterán
válasz
littleNorbi #39494 üzenetére
Másold a lap moduljába a makrót.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim lapnev, ide As Long
If Target.Column = 4 And Target.Value <> "" And Target.Count = 1 Then
On Error Resume Next
Set lapnev = Sheets(Target.Value)
If Err.Number <> 0 Then
MsgBox "Nincs " & Target & " nevű lap", vbCritical
On Error GoTo 0
Exit Sub
End If
ide = Sheets(lapnev).Range("A" & Rows.Count).End(xlUp).Row + 1
Range("A" & Target.Row & ":D" & Target.Row).Copy Sheets(lapnev).Cells(ide, 1)
End If
End Sub -
Delila_1
veterán
válasz
littleNorbi #39490 üzenetére
Minek duplikálnád az adatokat? Egyszerűen teszel egy autoszűrőt a címsorba, majd arra a helységre szűrsz, amelyikre akarsz. Felesleges a sok plusz lap.
-
Delila_1
veterán
Nem kell a szögletes zárójelekben gondolkozni. Elég, ha kezded beírni értelemszerűen pl. a G2-es cella képletét. Eljutsz addig, hogy =SZUM(, majd kijelölöd az összegzendő tartományt, a D2:F2-t. Mivel a képlet beírása előtt táblázattá alakítottad a tartományodat, az Excel a képen látható formában jeleníti meg a beírtakat.
A táblázatban a képletek a teljes oszlopokra vonatkoznak, új sor beírásakor öröklődnek. Az esetleges formázások, érvényesítések is vonatkoznak az új sorokra.
-
Delila_1
veterán
válasz
skill84 #39443 üzenetére
A Rendelés lapon úgy igazítottam az oszlopokat, hogy a megnevezés (ahol érvényesítés van) ne előre kerüljön. Mivel táblázattá alakítottam a tartományt, az első oszlopba történt beírás után az aktuális sor örökli a fölötte lévő képleteket, és az érvényesítést.
Feltételes formázás figyelmeztet, ha többet rendelnél 1-1 termékből, mint a készlet.
A rendelés összeállítása után a gombhoz rendelt makró levonja a tételeket a Raktár lap soraiból. Az F oszlop képlete a levonás utáni készlet nagyságát mutatja. -
Delila_1
veterán
A cellák számát nem, csak a hozzáférést befolyásolja a ScrollArea tulajdonság módosítása.
Egy érdekesség:
Ha a lapon kijelölsz egy tartományt (legyen ez pl. A1:B10), majd elkezded a bevitelt, az első adatot a kijelölt tartomány első (A1) cellájába viszi be. Az Enter leütése után az A2-re ugrik, majd az A10 után a B1 következik, B2...B10. A B10 után újra az A1 lesz kijelölve. Szóval előre kijelöléssel is megadhatod a bejárható tartományt, de biztosabb a ScrollArea megadása. -
Delila_1
veterán
válasz
North15 #39423 üzenetére
A kimutatásban a sorcímkékhez beviszed a dátumot, az értékekhez ÉS az oszlopokhoz a helyszínt.
A félkész kimutatásban ráállsz az egyik dátumra, Beállítások menü, Csoportosítás, Csoportosítási mező. Itt Ctrl segítségével megjelölöd az évek és a hónapok szerinti csoportosítást.Ennyi.
-
Delila_1
veterán
válasz
marec1122 #39394 üzenetére
Mutt válaszán kívül még két megoldás:
=SZORZATÖSSZEG((A1:A21<>"")/DARABTELI(A1:A21;A1:A21))
vagy egy tömbfüggvény, amit Shift + Ctrl + Enterrel kell bevinned
=SZUM(1/DARABTELI(A1:A21;A1:A21))
Az A1:A21 helyére a saját tartományod címét írd be.
Szerk: félreértettem. Arra az esetre írtam a függvényeket, ha meg kell számolni, hány féle érték vab a tartományban.
-
Delila_1
veterán
válasz
wednesday #39390 üzenetére
Tervező módban az egérrel könnyedén állíthatod a vezérlő méreteit, de a tulajdonságoknál pontosan is megadhatod a szélességét a Width mezőben.
Nem tudok róla, hogy kulcsszavakra lehetne keresni benne.
Az egyszerre látható sorok számát a ListRows opciónál állíthatod be. Ez alapértelmezés szerint 8, de ha nagyobb értéket adsz neki, több sort mutat, könnyebb a választás a hosszú szövegek közül.
-
Delila_1
veterán
válasz
wednesday #39388 üzenetére
Érvényesítés helyett használj ActiveX vezérlőt.
Fejlesztőelemek > Vezérlők > Beszúrás > ActiveX vezérlők > Beviteli lista
Tervező módban legyél, a tulajdonságoknál a ListFillRange helyen adhatod meg a bevitel helyét, pl. A1:A50.
Kikapcsolva a tervező módot már működik is a kezdőbetűre ugrás. -
Delila_1
veterán
válasz
Anonymusxx #39383 üzenetére
vegyük, hogy az eredeti szöveged az A1 cellában van. Az eredmény cella képlete:
=A1 & "/abc"
A képletet másolhatod a többi kipótolandó cella mellé.
Új hozzászólás Aktív témák
Hirdetés
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Sea of Thieves Premium Edition és Egyéb Játékkulcsok.
- LG 25GR75FG - E-Sport Monitor - FHD 360Hz 1ms - NVIDIA Reflex + G-sync - AMD FreeSync - HDR 400
- Eredeti Lenovo USB-C 65W töltő
- Samsung Galaxy A12 64GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA!Épített KomPhone i3 10105F 16/32/64GB RAM RTX 3050 6GB GAMER PC termékbeszámítással
- Telefon felvásárlás!! Samsung Galaxy A50/Samsung Galaxy A51/Samsung Galaxy A52/Samsung Galaxy A53
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged