-
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
Topikgazda
válasz Zimmy88 #29749 üzenetére
Nem érdemes a teljes sorokat megadni, mert egy halom üres cellán is végig kellene mennie a ciklusnak. Ehelyett területet adj meg.
Sub mm()
Dim lap As Integer, r As Range, nev As String, utvonal As String
Dim terulet As Range
utvonal = "C:\Temp\"
For lap = 1 To Worksheets.Count
Sheets(lap).Select
Set terulet = Range("A4:J4,A9:J11,A16:J16")
For Each r In terulet
Range(r.Address) = r.Value
Next
nev = ActiveSheet.Name
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=utvonal & nev & ".xlsx"
ActiveWindow.Close
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.
-
Zimmy88
tag
válasz Delila_1 #29751 üzenetére
Szia!
Köszi a tippet! Kipróbáltam, és lefuttattam a következő makrót. Viszont két dolog kellene még bele:
az egyik, hogy először kijelölje azokat a munkalapokat, amin végre kell hajtani a műveletet (B1 cella ha adott szöveget (pl "ezkell") tartalmaz, csak akkor kell rögzíteni az értékeket és különmenteni a fájlt),
a másik, pedig hogy értékrögzítés után, kimentés előtt ki kellene törölni pár felesleges oszlopot az E és a W közül (oszlop sorszámát tudom megadni).
Más: elég lassan futott a makró, 18-20 másodpercig tartott, mire "kidobott" egy kész munkalapot külön fájlba. Mivel lehetne gyorsítani esetleg? 30-40 munkalapnál ez elég hosszú idő...Sub mm()
Dim lap As Integer, r As Range, nev As String, utvonal As String
Dim terulet As Range
utvonal = "D:\kiment\"
For lap = 1 To Worksheets.Count
Sheets(lap).Select
Set terulet = Range("E8:W9,E12:W14,E16:W17,E20:W22,E25:W30,E33:W35,E37:W39,E41:W43,E45:W46,E49:W50,E52:W59,E62:W67,E69:W72,E75:W76,E81:W82,E85:W90,E93:W95,E98:W100,E102:W103,E105:W105,E107:W109,E112:W117,E120:W120,E123:W124,E129:W130,E132:W132")
For Each r In terulet
Range(r.Address) = r.Value
Next
nev = ActiveSheet.Name
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=utvonal & nev & ".xlsx"
ActiveWindow.Close
Next
End Sub[ Szerkesztve ]
FZR2000 ®
-
-
Delila_1
Topikgazda
válasz Zimmy88 #29753 üzenetére
Most gyorsabb lesz. Folytatnod kell az elso = 8: ucso = 9: GoSub Atir típusú sorokat.
Az oszlopok törlése részbe a saját törlendő oszlopaidat írd be.Sub mm()
Dim lap As Integer, nev As String, utvonal As String
Dim elso As Long, ucso As Long
utvonal = "D:\kiment\"
For lap = 1 To Worksheets.Count
If Sheets(lap).Range("B1") = "ez kell" Then
Sheets(lap).Select
elso = 8: ucso = 9: GoSub Atir
elso = 12: ucso = 14: GoSub Atir
elso = 16: ucso = 17: GoSub Atir
elso = 20: ucso = 22: GoSub Atir
'*** stb ***
'oszlopok törlése
Range("B:D,F:F").Delete Shift:=xlToLeft
nev = ActiveSheet.Name
ActiveSheet.Copy
ActiveWorkbook.SaveAs Filename:=utvonal & nev & ".xlsx"
ActiveWindow.Close
End If
Next
Exit Sub
Atir:
Range("E" & elso & ":W" & ucso).Copy
Range("E" & elso).PasteSpecial xlPasteValues
Return
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.
-
sztanozs
veterán
válasz Sátán44 #29757 üzenetére
T
ök jó hogy megkaptad a makróst isja az nem neked mentData validation nekem most egyszerűbb lett - némi megkötéssel:
- Minden óra elé kell a nap
- Kell egy mező amiben az 'x' van és mellette egy ami üres (sárgával alul, a sor eltüntethető)C2-t ki kell jelölni és a következő Named Range-et kézzel létre hozni:
SelectX =IF(COUNTIFS(Sheet1!C$2:C$28,"x",Sheet1!$A$2:$A$28,Sheet1!$A31)<2,Sheet1!$C$31,Sheet1!$D$31)Utána kijelölni az adatmezőket -> Data Validation -> List
=SelectXIgnore blank pipa kivevendő:
[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
-
tzetko
csendes tag
Szia delila
Segítséget szeretnék tőled kérni.
A fügvényvarázslóban hogyan kell leíró szöveget készíteni -
Chase
csendes tag
Újabb fajta Excel-ben (2013) meg lehet azt oldani valahogyan, hogy több file-t egy Excel-ben nyisson meg, mint ahogy a régebbi verziókban (pl: 2007)?
Egylőre ott tartok, hogy ha Open-nel megnyitok egy második file-t, akkor nyit neki teljesen új Excel-t, ahány file kinyitva, mindhez külön menü-sor, külön menü-szalag, stb...
A régi verziókban meg a már futó Excel-en belül nyitott minden file-nak egy új ablakot, és maradt egy menü-sor, egy menü-szalag, stb...[ Szerkesztve ]
Biztos, hogy nem volt normális a Stalker-bárban a jávai táncosnő!
-
Szicskeee
tag
Sziasztok !
Van 1 gombom ami 1 case-bol all. ennek a vegere szeretnek egy olyat hogy felugordjon 1 ablak es megkerdezze,hogy ki szeretnem nyomtatni a KIJELOLT cellakat vagy nem. Ha pedig igent nyomok akkor nyomtassa ki.
Segitsegetek elore is koszonom.
-
Chase
csendes tag
válasz m.zmrzlina #29763 üzenetére
Köszi a gyors választ!
Sajnos ebben a verzióban – Microsoft® Excel® 2013 (15.0.4763.1000) – nincs ilyen opció, sem a Speciális, sem egyéb beállításoknál.
A kérdés továbbra is fennáll.Biztos, hogy nem volt normális a Stalker-bárban a jávai táncosnő!
-
sztanozs
veterán
válasz Sátán44 #29766 üzenetére
Szia!
Sajnos magyar office-om nincs, de a menüsoron (ribbon) kell Formula > Named range-et megnyitni, és ott hozzáadni (úgy hogy közben a kurzor a C2-n áll):
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
bteebi
veterán
válasz Delila_1 #29754 üzenetére
Nem kell azonosnak lennie. Nyilván időt veszít azzal, hogy minden sorban a UsedRange széléig megy, de még mindig sokkal jobb, mintha a teljes sort (256 vagy 16384 cella) végignézné. De akár azt is megtehetné, hogy minden sornak megnézi a jobb szélét, és csak addig menne a makró:
oszlopig = Cells(sor, Columns.Count).End(xlToLeft).Column
Persze ha teljesen fix a táblázat, akkor jó (gyorsabb), ha csak a fix tartományok vannak megadva.
Cancel all my meetings. Someone is wrong on the Internet.
-
bteebi
veterán
válasz sztanozs #29768 üzenetére
Vagy csak simán Ctrl+F3-at nyom. Vagy kijelöli a tartományt, és a név mezőbe (bal oldalon, ahol a te screenshotodon az "A1" kiírás látszik) beírja a kívánt nevet, és entert nyom. Ha ugyanitt később rákattint a nyílra, akkor megnézheti az összes elnevezett tartományt.
Cancel all my meetings. Someone is wrong on the Internet.
-
sztanozs
veterán
válasz bteebi #29770 üzenetére
Nem a range-et kell elnevezni, hanem egy custom range-et kell létrehozni, aminek ez a tartalma:
=IF(COUNTIFS(Sheet1!C$2:C$28,"x",Sheet1!$A$2:$A$28,Sheet1!$A31)<2,Sheet1!$C$31,Sheet1!$D$31)[ Szerkesztve ]
JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Szicskeee
tag
Private Sub CommandButton14_Click()
Dim iRet As Integer
Dim strPrompt As String
Dim strTitle As String
strPrompt = "Ki szeretnéd nyomtatni xyz prémium adatlapját??"
strTitle = "Prémium"
iRet = MsgBox(strPrompt, vbYesNo, strTitle)
If iRet = vbNo Then
MsgBox "Vége!"
Else
Worksheets("Prem1").Activate
Range("A1:O39").Select
Selection.PrintOut Copies:=1, Collate:=True
End If
End SubValai meg tudja mondani miert kapok hibat Range("A1: O39").Select -nel?
Annyi a lenyeg, hogy 1 masik sheet-rol akarom kinyomtatni A1: O39 ig a cellakat.
Probalkoztam mar azzal is, hogy a masik sheeten (Prem1) csinaltam egy nyomtati gombot. es itt az else be ezzel a parancsal : Call Prem1.CommandButton1_Click meghivtam de az is hibat adott.[ Szerkesztve ]
-
bsh
őstag
válasz Szicskeee #29773 üzenetére
gondolom azért, mert a range nem egyértelmű, az lehet bármely lapon vagy akár másik munkafüzetben is.
meg kell neki mondani, hogy worksheets("Prem1").Range("A1:O39").Select, vagy ha már úgyis aktívvá tetted azt a lapot, akkor Activesheet.Range("A1:O39").Select[ Szerkesztve ]
-
Delila_1
Topikgazda
válasz Szicskeee #29773 üzenetére
Private Sub CommandButton14_Click()
Dim iRet As Integer
Dim strPrompt As String
Dim strTitle As String
strPrompt = "Ki szeretnéd nyomtatni xyz prémium adatlapját??"
strTitle = "Prémium"
iRet = MsgBox(strPrompt, vbYesNo, strTitle)
If iRet = vbNo Then
MsgBox "Vége!"
Else
Worksheets("Prem1").Range("$A$1:$O$39").PrintOut Copies:=1, Collate:=True
End If
End SubSzerk: elkéstem.
[ 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 Sátán44 #29772 üzenetére
Ha nem akar összejönni, a C2:S10 tartományra adj feltételes formázást. A képlet
=DARABTELI(C$2:C$10;"x")>2
A következő tartomány a C11:S19. Annak a képlete
=DARABTELI(C$11:C$19;"x")>2
Nincs 2013-as verzióm.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Sátán44
addikt
válasz Delila_1 #29777 üzenetére
Nekem nem igaz, vagy hamis állítás kell. Ha elérte a hétfői...pénteki nap a 2 db X-et, akkor többet ne engedjen betenni.
Kérlek néz már rá a (#29772)-ben lévő linkre. Vajon miért nem fogadja el a képletet?
[ Szerkesztve ]
Kis bohóccal is lehet nagy cirkuszt csinálni... :-)
-
Delila_1
Topikgazda
válasz Szicskeee #29778 üzenetére
A másik lapon (Munka2) lévő gomb click eseményébe írd be azt, amit az elsőn lévő gomb eseményébe írnál.
Private Sub CommandButton2_Click()
Sheets("Munka1").Range("A1") = "asdf"
End SubAz első lap gombjának az eseménye is tartalmazhatja ugyanezt, csak ott a lapra történő hivatkozást felesleges megadni.
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
Rossz hírem van, a 2013-as Office-ból kivették ezt az opciót.
-
bsh
őstag
válasz Sátán44 #29781 üzenetére
valami ilyesmi?
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Column > 2) And (Target.Column < 25) And (Target.Row > 2) And (Target.Row < 28) Then
If (XCount(Me.Range(Cells(Target.Row, 3), Cells(Target.Row, 25))) > 2) Or (XCount(Me.Range(Cells(2, Target.Column), Cells(28, Target.Column))) > 2) Then
Target.Value = ""
MsgBox ("Már van két X az adott sorban vagy oszlopban!")
End If
End If
End Sub
Private Function XCount(XRange As Range) As Long
XCount = 0
For Each Cell In XRange
If Cell.Value <> "" Then XCount = XCount + 1
Next
End Function -
Delila_1
Topikgazda
Az első feltétel egyszerűbben
If Not Intersect(Target, Range("C3:X24")) Is Nothing Then
vagy még egyszerűbben
If Not Intersect(Target, [C3:X24]) Is Nothing Then
Nálam valami balhé miatt nem fogadja el a call-ost.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Chase
csendes tag
válasz m.zmrzlina #29782 üzenetére
THX
Biztos, hogy nem volt normális a Stalker-bárban a jávai táncosnő!
-
baderoli
tag
Sziasztok! Sajnos nem találtam megoldást a fileméret duplázódására a neten. Esetleg valakinek ötlete?
-
zulu_mester
tag
Sziasztok!
Abban szeretném a segítségeteket kérni, hogy egy adott adathalmazból (1957-2012 közti heti lottószámok) hogyan lehet tól-ig intervallumokat meghatározni? Milyen függvény/képlet van rá excellben?
Előre is köszönöm!"Te is fiam Bluethooth!"
-
Louro
őstag
válasz zulu_mester #29796 üzenetére
Az igazat megvallva én nem értem. Ha az kell, hogy miképp lehet azt megmondani, hogy melyik szám mennyiszer került kihúzásra, akkor COUNTIF/DARABTELI függvénnyel könnyen előállítható.
Csinálsz egy 1-90-ig egy listát az M oszlopba. N oszlopba pedig, az 1-es mellé: =DARABTELI(itt jelöld ki az 5 oszlopot, amiben a húzott számok vannak;kattints az 1-es értéket tartalmazó cellára) Majd másold lefelé a függvényt és meglesz.
[ Szerkesztve ]
Mess with the best / Die like the rest
-
sztanozs
veterán
válasz baderoli #29795 üzenetére
Ezek mind okozhatnak jelentős fájlméret növekedést:
- formázás (főleg az új excelben, nagyon sok sor és oszlop van)
- sok pivot tábla (minden pivot tábla számára az excelben van egy kis "mini adatbázis")
- named range (gyakorlatilag a range értékeinak másolata még egyszer a táblűban)
- rejtett mezők/munkalapok (bármi lehet bennük/rajtuk)
- beillesztett képek vagy objektumok (ezek lehetnek akármekkorák)JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
-
Louro
őstag
válasz sztanozs #29798 üzenetére
Sokan sorokat és oszlopokat formáznak. Duuuurva.
Feltételes formázás esetén is általában sort vagy oszlopot jelölnek meg.Ezek olyan durván hazavágják, hogy rossz nézni. 20-30 megás fájlt megnyitva majd értékként átmásolva az adatokat és lementve sokszor nem felére, fél megákra le tudom csökkenteni a fájlméreteket. Színezésnek van előnye, de sajnos hátránya is és elég sokan úgy használnak Excel-t, hogy igazából szájhagyomány útján tanulták. Egy-egy gyorstalpalós tanfolyam sokat segítene az irodistákon. Néha hányni is tudnék a színkavalkádokon.
Mess with the best / Die like the rest
-
sztanozs
veterán
A hivatalos Excel (XML) szabványban benne van a rendes sor/oszlop alapú formázás, de plusz számítási igény miatt sajna ezt nem használja az excel (illeve, ha van valami módosítás, akkor a cella alapú formázás a fallback)... Azért hasznos is tud lenni a feltételes formázás.
Most is épp egy többszörös szűrés alapú kiválasztásos workseet-et kellett összedobnom, ahol named range alapú (erősen számolós) feltételes formázás van. Enélkül egyszerűen nem lehet rendesen kitölteni a munkalapot.JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...
Új hozzászólás Aktív témák
- Azonnali informatikai kérdések órája
- Ubiquiti hálózati eszközök
- Egészen nagy teljesítményspektrumon fedné le a mobil piacot az AMD
- Motorola Edge 40 neo - színre és formára
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Autós kamerák
- Android alkalmazások - szoftver kibeszélő topik
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Ukrajnai háború
- Videó stream letöltése
- További aktív témák...
- Eredeti Windows, telepítéssel! Digital Doctor Számítógép Szerviz
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! LEGOLCSÓBB! Automatikus 0-24
- World of Warcraft Shadowlands Collectors edition EU EN
- Vírusirtó, Antivirus VPN kulcsok
- Windows 10/11 Home/Pro , Office OEM/Retail kulcsok