- Honor Magic7 Pro - kifinomult, költséges képalkotás
- Honor 200 Pro - mobilportré
- Fotók, videók mobillal
- iPhone topik
- 45 wattos vezeték nélküli töltés jön az új iPhone-ba
- VoLTE/VoWiFi
- Bemutatkozott a Poco X7 és X7 Pro
- Milyen okostelefont vegyek?
- Xiaomi 14T Pro - teljes a család?
- Honor Magic6 Pro - kör közepén számok
-
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
-
Fferi50
Topikgazda
válasz
Lokids #52364 üzenetére
Szia!
Mit tartalmaz az Output_F_Name változód?
Ha a VBA nézet Immediate nézetben megnézed, hány munkafüzetet látsz aktívnak (? Workbooks.Count)
Az Out of Range üzenet azt jelenti, hogy nincs olyan nevű munkafüzeted az alkalmazásban.
Hány Excel alkalmazást látsz megnyitva?
Üdv. -
-
Fferi50
Topikgazda
válasz
Lokids #52361 üzenetére
Szia!
Mi lenne, ha előbb másolnád a munkalapot - ami létrehoz egy új munkafüzetet? A másolás után ez az új munkafüzet lesz aktív, átnevezheted tetszésed szerint.
A 365 sok tekintetben nem kompatibilis visszafelé sajnos - bár ebben az esetben nem gondolom, hogy ez lenne a hiba forrása.
Az Out of Range arra utal, hogy nincs olyan nevű munkafüzet vagy munkalap az applikáción belül.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids #52359 üzenetére
Szia!
Az Output_F_Name munkafüzet ugyanabban az Excel applikációban van? A két munkafüzetnek azonos "ablakban" kell lennie. A Windows állapotsoron hány Excel applikációt látsz megnyitva?
Van Munka1 nevű munkalap abban a munkafüzetben?
Az After nélküli azért működik, mert ott új munkafüzetbe másolja a kérdéses munkalapot.
Üdv. -
Lokids
addikt
válasz
Lokids #46327 üzenetére
Oké, most néztem, hogy amúgy kis sárga ikonnal jelzi, hogy a szám szövegként van formázva, vagy aposztróffal kezdődik. Na most ha itt rákattintok, hogy átalakítás számmá, akkor működik.
De kérdem én, ha egyszer cellaformázással az egész tartományt átrakom szám formátumba, akkor miért marad szöveg? -
Fferi50
Topikgazda
válasz
Lokids #45774 üzenetére
Szia!
Próbáld ki ezt a makrót (a munkalap neveket írd át a sajátodnak megfelelően lsz.):Sub atmasol()
Dim alap As Range, masolt As Range
Set alap = Sheets("Munka1").UsedRange
Set masolt = Sheets("Munka2").UsedRange
Application.ScreenUpdating = False
With masolt
Set masolt = .Offset(2, 2).Resize(.Rows.Count - 2, .Columns.Count - 2)
End With
With masolt
.Formula = "=IFERROR(VLOOKUP(" & .Cells(1, 1).Offset(0, -2).Address(rowabsolute:=False, columnabsolute:=True) & "," & alap.Parent.Name & "!" & alap.Address(rowabsolute:=True, columnabsolute:=True) & ",MATCH(" & masolt.Cells(1, 1).Offset(-1, 0).Address(rowabsolute:=True, columnabsolute:=False) & "," & alap.Parent.Name & "!" & alap.Rows(2).Address(rowabsolute:=True) & ",0),0),"""")"
.Value = .Value
.Replace what:=0, replacement:="", lookat:=xlWhole
.NumberFormat = "0%"
End With
masolt.Parent.Activate
Application.ScreenUpdating = True
End Sub
Üdv. -
Fferi50
Topikgazda
válasz
Lokids #45772 üzenetére
Szia!
Az értékké alakítás természetesen a képletek kiértékelése után történhet. Tehát a képlet helyére másolja ugyanazt az értéket, amit a képlet eredményezett.
A képlet biztosan nem így működik, az megtalálja a megfelelő értékeket. Tehát, ha az első táblán az A5 cellában van a név, a másodikban pedig az A10-ben, akkor az A5-höz tartozó érték biztosan a 10. sorba fog kerülni. Persze ennek feltétele, hogy pontosan azonos legyen a két táblán a név a névlistában (A oszlop) és az azonosító az azonosító listában (1.sor).
Ha mindkét táblában az A oszlopban vannak a nevek, akkor az Fkeres /Hol.van kombináció is jó, hiszen az Fkeres az első oszlopban keres, a Hol.Van pedig az első sorból megtalálja a helyes oszlopot.
Vagyis először a képlettel megkeressük a megfelelő értékeket, majd az így kapott adatot átalakítjuk értékké.
Egyébként azt nem is értem, hogy az A5 (ami név ha jól gondolom), hogyan is kerülhetne a B10-be, mikor az már egy % érték lenne pl.
Üdv.
Ps. Ha mutatsz pl. egy 3x5 méretű táblát tartalmazó mintát, akkor valóságosan is meg tudom adni a képletet hozzá. -
Fferi50
Topikgazda
válasz
Lokids #45768 üzenetére
Szia!
Szerintem az INDEX/HOL.VAN függvény párossal szépen meg lehet oldani, ha a fejlécek valóban azonosak a két táblában.
Az INDEX függvény első paramétere az első tábla teljes tartalma.
A második paraméter - ami a sor fogja adni:
HOL.VAN (második tábla A oszlop cellája; Első tábla A oszlop;0)
A harmadik paraméter - ami az oszlopot adja:
HOL.VAN (második tábla adott oszlop 1. cellája; Első tábla első sora;0)
Pl. 1. tábla adatai: A1-X30
A 2. tábla B2 cellájának képlete:=INDEX(Elsőtábla!$A$1:$X$30;HOL.VAN( $A2;Elsőtábla!$A$1:$A$30;0);HOL.VAN(B$2;Elsőtábla!$A$1:$X$1;0))
Ez a képlet húzható oldalra és lefelé is. Fontos a megfelelő címzés ($ jelek helye).
Azoknál a neveknél, amelyek az 1. táblában nincsenek benne, Hiányzik hiba kerül a cellába, ezt HAHIBA függvénnyel lehet "elmismásolni".
Üdv.
Ps. tudom, VBA -ban szeretnéd, akkor ezt a képletet írasd be a cellákba, összefüggő tartományba egy menetben is lehet. -
Fferi50
Topikgazda
válasz
Lokids #45711 üzenetére
Szia!
Jól sejted, amikor egy sort törölsz, akkor a többi mintegy "felugrik" a helyére.
Ezért sorok törlésénél nem a For Each ----- Next ciklust, hanem a For ----- Next ciklust szokás használni. Ez kétféle módon eredményez helyes működést:
a.) hátulról kezded a sorok vizsgálatát és törlését, így nem változnak a törölt sor előtti sorok számai (For i=sorokszáma to 1 step -1)
b.) ha előlről indítod a ciklust, akkor egy sor törlése után a ciklusszámlálót eggyel vissza állítod a next utasítás előtt. Persze ekkor a ciklus "túlfut" az eredeti tartományon, erre nem árt figyelni.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids #45552 üzenetére
Szia!
Ha képletet (formula) szeretnél a cellába írni, akkor azt abban a formában kell, ahogyan a cellában láttad, vagyis nem VBA formában, hanem "direkt" címezve a szabályok szerint:Workbooks(MainWBName).Worksheets(s_wsNAme2).Cells(s_Outrow, 3).Formula="=Countifs([MainWBName.xlsx]s_wsName!C : C,[MainWBName.xlsx]s_wsName!A: A)"
Továbbá nem pontosvessző kell, hanem vessző a paraméterek közé.
Üdv. -
Pakliman
tag
válasz
Lokids #45540 üzenetére
Szia!
Private Sub Kód_írása_programból()
Dim c As Long
'Új munkafüzet létrehozása
Workbooks.Add
c = Application.VBE.ActiveVBProject.VBComponents("ThisWorkbook").CodeModule.CountOfLines
'Az új munkafüzetbe beírunk egy kódot!!!
With Application.VBE.ActiveVBProject.VBComponents("ThisWorkbook").CodeModule
.InsertLines c + 1, "'Ezeket a sorokat programból hoztuk létre!!"
.InsertLines c + 2, "Private Sub Workbook_BeforeClose(Cancel As Boolean)"
.InsertLines c + 4, "End Sub"
End With
End SubItt egy részletes és "teljesen érthető" leírás.
Én is ebből (is) tanulgattam. -
Fferi50
Topikgazda
válasz
Lokids #45543 üzenetére
Szia!
Az miért nem opció, hogy abban a munkafüzetben, amiből létrehozod az újat, van egy olyan munkalap, amiben már benne van ez az eseménykezelő makró a munkalap kódlapján. Ezt a munkalapot másolod át új munkafüzetbe és küldöd el - persze makróbarátként?
Egyébként az is megoldható, hogy nálad ne fusson le ez a "fehérítés", csak ott amikor használják.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids #45535 üzenetére
Szia!
Ha cella egy feltétel teljesülése miatt sárga, akkor a benne levő érték módosítása esetén továbbra is a feltételnek megfelelően fog színeződni. Ha megfelel a feltételnek, marad sárga, ha nem felel meg, akkor visszaáll az alapszín.
Ha egy cellánál az érték változtatást szeretnéd színnel is jelölni, ahhoz viszont makró kell.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids #45540 üzenetére
Szia!
"Viszont ennek a ws change makrónak a létrehozott WB-n kell futnia."
Úgy érted, hogy amikor bezárják és újra megnyitják, akkor a "saját" makrója fusson?"makróval hogyan tudok makrót illeszteni egy létrehozott WB-be"
Elvileg lehet a VB projektben makróval makrókat módosítani, újakat beleírni, törölni stb. DE nem javasolt - bármelyik vírusírtó veszélyesnek ítélheti és kigyomlálhatja - és nem is egyszerű.
Megoldható például úgy, hogy mented az alap munkafüzetet más néven, kitörlöd belőle azokat a munkalapokat, amelyek nem kellenek bele, hozzáadod az újakat, formázod stb.
A mentéssel mentődnek a makrók is - természetesen makróbarát vagy bináris munkafüzetként kell menteni. Mindezt megteheted az alap munkafüzet makróiból.
Ráadásul mivel más néven mented, az eredeti mindig megmarad és újra felhasználható.
Aztán lehet sablont is létrehozni, amiben benne vannak a makrók és az új munkafüzetet a sablonból megnyitni.
Üdv.
Mentsd -
-
Fferi50
Topikgazda
válasz
Lokids #45514 üzenetére
Szia!
Talán ez lehet a probléma:
IttVan = Application.Match(Workbooks(MainWBName).Worksheets(s_wsName).Cells(sor, 1), Workbooks(FteWBName).Worksheet(1).Range("A:A"), 0)
Helyette:
IttVan = Application.Match(Workbooks(MainWBName).Worksheets(s_wsName).Cells(sor, 1), Workbooks(FteWBName).Worksheets(1).Range("A:A"), 0)
Üdv. -
Delila_1
veterán
válasz
Lokids #45498 üzenetére
Az előbb a képlet helyét rosszul írtam, az 1. ws lap D5 cellájába kell írni.
Makróval:
Sub Masolas()
Dim sor As Integer, IttVan As Variant
Sheets("1. ws").Select
For sor = 5 To 1500
On Error Resume Next
IttVan = Application.Match(Cells(sor, 1), Sheets("2. ws").Columns(1), 0)
If VarType(IttVan) = vbError Then
On Error GoTo 0
Else
Sheets("2. ws").Range("B" & IttVan & ":E" & IttVan).Copy Cells(sor, 4)
End If
Next
End Sub -
Mutt
senior tag
válasz
Lokids #45235 üzenetére
Szia,
Office 365-ben használd az EGYEDI (UNIQUE) képletet.
Ha régebbi Excel-ed van, akkor pedig egy csúnya tömb-képlet van. https://exceljet.net/formula/extract-unique-items-from-a-listüdv
-
Fferi50
Topikgazda
válasz
Lokids #45235 üzenetére
Szia!
Képlet szerintem nincs erre. Viszont az adatok - ismétlődések eltávolítása megoldja a feladatot. Először átmásolod egy új oszlopba az egészet és azon hajtod végre.
Másik lehetőség a Speciális (lánykori nevén Advanced) szűrő, ahol lehetőség van az egyedi adatok kiszűrésére és más helyre áthelyezésére is.
Üdv. -
Delila_1
veterán
válasz
Lokids #45212 üzenetére
Így egyszerűbb.
Sub mmm()
Dim s_rnG As Range, p_Osszeg, s_Cell As Range, ev As Integer, honap As Integer
Set s_rnG = Range("ADU2:ADX5")
p_Osszeg = 500
For Each s_Cell In s_rnG
If Year(s_Cell.Value) = Left(Cells(1, s_Cell.Column), 4) * 1 And Month(s_Cell.Value) = Right(Cells(1, s_Cell.Column), 2) * 1 Then
s_Cell.NumberFormat = "General"
s_Cell.Value = p_Osszeg
End If
Next
End Sub -
Delila_1
veterán
válasz
Lokids #45210 üzenetére
Egy leegyszerűsített példa
Sub mmm()
Dim s_rnG As Range, p_Osszeg, s_Cell As Range, ev As Integer, honap As Integer
Set s_rnG = Range("ADU2:ADX5")
p_Osszeg = 500
For Each s_Cell In s_rnG
Select Case Cells(1, s_Cell.Column)
Case 801: ev = 2020: honap = 1
Case 802: ev = 2020: honap = 2
Case 803: ev = 2020: honap = 3
Case 804: ev = 2020: honap = 4
End Select
If Year(s_Cell.Value) = ev And Month(s_Cell.Value) = honap Then
s_Cell.NumberFormat = "General"
s_Cell.Value = p_Osszeg
End If
Next
End Sub -
Fferi50
Topikgazda
válasz
Lokids #43553 üzenetére
Szia!
Miért nem csinálsz kimutatás diagramot belőle.
Szerintem fordítva értelmezed a tengelyeket. A vízszintes tengely az x a függőleges az y.
Teszel rá egy gombot, amivel váltani lehet a sorozatok között. A makróban használd a seriescollection(x).formula tulajdonságát.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids #43551 üzenetére
Szia!
Nem egészen értem mit szeretnél. Hiszen a H1:H7 cellákban értékek vannak, miért szeretnéd azt az x tengelyre tenni? Az x tengely a kategóriák adatait tartalmazza. Ha pedig az összegeket szeretnéd csak látni, akkor az első adatsort törölni kell a diagramról:
... Chart.SeriesColletion(1).Delete
Egyébként az x tengely címét csak az adatsor formulájának megadásával tudod megváltoztatni.
Azt hogy hogyan néz ki a formula úgy tudod megnézni, hogy kijelölöd az adatsort és megnézed a szerkesztőlécen mit ír ki.
A Formula 4 részből áll:
1. Az adatsor neve
2. Az x tengely forrása
3. Az adatok forrás
4. Az adatsor indexe (hanyadik legyen)
Természetesen makróból ez másképp (angolul) néz ki:=SERIES(Munka1!$X$64,(Munka1!$T$1,Munka1!$AB$1:$GX$1),Munka1!$AA$64:$GX$64,3)
A diagram az első adatsor x tengely adatait jeleníti meg, kivéve ha van másodlagos tengely is.
A tengelynél magát az adatok forrását nem tudod megadni csak a formázási adatokat.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids #43549 üzenetére
Szia!
Ha így adod hozzá a diagramot:ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Beszerzesek!$F$1:$H$7")
akkor az kiválasztott marad és így teheted a kívánt helyre pl.Selection.Top=Range("A1").Top
Selection.Left=range("F1").Left
Az x tengelyt pedig így érheted el:Activesheet.ChartObjects(1).Chart.Axes(1).Select
Az elhelyezéshez is használhatod a ChartObject objektumot az előző sor alapján.
Üdv. -
Fferi50
Topikgazda
válasz
Lokids #40726 üzenetére
Szia!
Két apróság, az egyik biztosan fontos, mégpedig ez:
A honapok név tartománya A1 kezdetű legyen, ne pedig B1
A másik, az Adatok névnél az eltolás 13 értéke helyett 22 legyen (mivel az adatok vége elvileg a V oszlopban lesz (a hónapokat a V oszlopig terjesztetted ki). Ha most nem is okoz problémát, később biztosan.Üdv.
-
Fferi50
Topikgazda
válasz
Lokids #40722 üzenetére
Szia!
Első kérdés: Hány x van szerinted a 2019. április hónap oszlopában?
Mert itt a képen egy sem látszik
Kipróbáltad másik hónappal?Jó lenne látni a névkezelőben, hogyan vannak a nevek meghatározva. Arról tudsz képet mutatni? (Légy szíves képként feltölteni és nem másolni, mert akkor külön meg lehet nézni.)
Üdv.
-
Fferi50
Topikgazda
válasz
Lokids #40712 üzenetére
Szia!
Igen, a Névkezelőben vidd fel a neveket.
"A1 cella értéke nálam fix cím: "Elvégzendő feladat". Gondolom akkor A2-től fog indulni minden."
Nem, a neveket úgy vidd be, ahogyan írtam, csak a munkalap nevét változtasd meg. Csak az eredmény képletében legyen a -SOR() helyett -SOR()+1.
(Az Excelben nem névtér van, hanem Hivatkozás, amire a név mutat. Szerencsére hivatkozásként képleteket is meg lehet adni.)
Ha nem magyar Exceled van hanem angol, akkor az angol függvényneveket kell használnod.Üdv.
-
Fferi50
Topikgazda
válasz
Lokids #40700 üzenetére
Szia!
Kicsit többet kell vele dolgozni, de meg lehet oldani.
Mivel az x jelek ismétlődnek, ezért az ismétlős keresésre kialakított képletemet alakítottam egy kicsit.
A képlet feltételezései:
Egy munkalap első oszlopában vannak a tevékenységek, az első sorban pedig a hónapok.
A legördülő listaválasztó pedig ugyanezen munkalap O1 cellája tartalmazza.
Ahhoz, hogy "munkalapfüggetlen" legyen a képletünk, létre kell hozni az alábbi neveket:
Természetesen a Munka1 helyett az adataidat tartalmazó munkalap nevét kell írnod. Ha azon a lapon állva szúrod be a neveket, akkor magától hozzáteszi a munkalap nevét, a hatókör munkafüzet legyen/maradjon.Tevekenyseg: =ELTOLÁS(Munka1!$A$1;0;0;DARAB2(Munka1!$A$1:$A$200);1) (a 200 helyett a nálad levő adatok utolsó sorát meghaladó számot írj.
Adatok: =ELTOLÁS(Munka1!$A$1;0;0;DARAB2(Tevekenyseg);13)
honapok =Munka1!$A$1:$M$1 ' az adatok első sora, amely a hónapokat tartalmazza
honap =Munka1!$O$1 ' ez lesz a lenyíló cellája
keresem =INDEX(Adatok;0;HOL.VAN(honap;honapok;0)) ' itt keressük meg az aktuális hónapot
Ezek után a tömbképlet a következő:=HAHIBA(INDEX(Tevekenyseg;HOL.VAN(KICSI(HA("x"=keresem;SOR(Tevekenyseg);"");DARABTELI(keresem;"x")-(DARABTELI(keresem;"x")-SOR()));SOR(Tevekenyseg);0);1);"NINCS TÖBB")
A tömbképletet Ctrl+Shift+Enter billentyűkombinációval zárjuk, az Excel kapcsos zárójelbe teszi.
Ezt a képletet a munkalap első sorába kell írnod és húzhatod lefelé, ameddig "NINCS TÖBB" értéket nem kapsz. Ha nem az első sorban kezded a képletet, akkor a -SOR() helyére -SOR()+X képletet írd, amelyben az X a kezdő sor száma -1!Remélem, jól gondoltam, mire van szükséged.
Üdv.
-
Mutt
senior tag
válasz
Lokids #38667 üzenetére
Szia,
Jött már megoldás a DÁTUM függvény használatára, vagyis ha pl. A1-ben van az eredeti dátum, akkor az alábbi képletek mind az előző év dec. 31-ét adják vissza:
=DÁTUM(ÉV(A1)-1;12;31)
=DÁTUM(ÉV(A1);1;1)-1
=DÁTUMÉRTÉK(SZÖVEG(A1;"éééé")-1&".12.31")Két dátum között eltelt hónapok számítására pedig van egy elfeledett függvény (DATEDIF, magyarul DÁTUMTÓLIG). Ez a képlet ma már nem elérhető a függvénytárból, de továbbra is rendületlenül műkődik kézzel beírva.
Használata:
=DÁTUMTÓLIG(kezdő dátum; vég dátum; egység)Súgó itten, ami szerintem hibás, mert az egységeket nem magyar, hanem angol rövidítéssel kell megadni (mint VBA-ban), vagyis H helyett m-el fog menni.
üdv
Új hozzászólás Aktív témák
Hirdetés
- Motorolaj, hajtóműolaj, hűtőfolyadék, adalékok és szűrők topikja
- Honor Magic7 Pro - kifinomult, költséges képalkotás
- hdanesz: Hyundai Ioniq 28 kWh 2018 2. felvonás
- Gamepad
- Apple MacBook
- Milyen program, ami...?
- Honor 200 Pro - mobilportré
- Milyen belső merevlemezt vegyek?
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Intel Core i3 / i5 / i7 / i9 10xxx "Comet Lake" és i3 / i5 / i7 / i9 11xxx "Rocket Lake" (LGA1200)
- További aktív témák...
- Eladó Steam kulcsok kedvező áron!
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Sea of Thieves Premium Edition és Egyéb Játékkulcsok.
- Windows 10/11 Home/Pro , Office 2024 kulcsok
- Lenovo ThinkPad X13 G2 multitouch
- BESZÁMÍTÁS! MSI Z790 i5 14600KF 64GB DDR5 512GB SSD RTX 3070 8GB Rampage SHIVA Enermax 750W
- Beszámítás! Sony PlayStation 5 825GB SSD digital konzol garanciával, hibátlan működéssel
- DELL PowerEdge R740 rack szerver - 2xGold 6130 (16c/32t, 2.1/3.7GHz), 64GB RAM, 10Gbit HBA330, áfás
- Bomba ár! Fujitsu LifeBook E754 - i5-4GEN I 8GB I 256SSD I 15,6" HD I HDMI I W10 I Garancia!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged