- Kábeleket és csövezést rejtő "kirakatház" a GameMax logójával
- Felvarrták az Arctic rackmount rendszerekhez szánt CPU-hűtőjének ráncait
- Háromféle kivitelben, és nem kis kapacitásokkal jönnek a Micron 6550 ION SSD-i
- Már a Samsung sem szolgálja ki modern AI lapkákkal Kínát
- Havazáshoz igazított kiadás kap a Steam Deck OLED
- Nikon Z MILC fényképezőgépcsalád
- Milyen billentyűzetet vegyek?
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Kormányok / autós szimulátorok topikja
- AMD Ryzen 9 / 7 / 5 9***(X) "Zen 5" (AM5)
- Mini-ITX
- Milyen SSD-t vegyek?
- Házimozi belépő szinten
- Monitor hiba topik
- Milyen TV-t vegyek?
-
PROHARDVER!
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
-
Ghoosty
őstag
válasz Fferi50 #36548 üzenetére
Az ötlet jó, csak a konkrét feladat nagyon megbonyolítja, mert változó karakterhosszok vannak és nem csak 3 celláról van szó. Majd megbeszélem vele, mit tud bevállalni, maradhat-e a képlet, vagy értékként átírható. Egyáltalán fontos-e ez annyira, hogy órákat töltsek a makróval.
Köszönöm.
-
Kobe
veterán
válasz Fferi50 #36546 üzenetére
Az exit for - t kiveszem
Van egy kulon sor, a letoltes parancs utolso sora, ami el is nevezi rogton a friss munkalapot valami_a_46 ra
Csak a kovetkezo torles pont a frissen letoltott tabot torli minden mast nem, nekem pedig forditva kene - csak a friss, uj worksheet maradjon meg, minden mas kuka
-
szatocs1981
aktív tag
Sziasztok, excel táblában szeretnék egy sort megtalálni. Hogyan tudnám azt realizálni egy makróval, hogy teljes soronként keressen? Azaz azt szeretném elérni, hogy ha egy sorban az általam megadott stringek szerepelnek, akkor azt a makró megtalálja. Egy adott kombináció egy sorban csak egyszer fordulhat elő.
példa: azt a sort szereném megkeresni, amiben a V2, 4, P01 szerepel.
V1 1 P01
V1 4 P03
V2 1 P03
V2 4 P01Nem várok kész makrót, elkészitem magam. Ötleteket szeretnék, esteleg egy parancsot amit nem ismerek.
előre is köszönöm
Edit: eddig egyetlen öteletem, hogy oszloponként végigmegyek és találat esetén veszem a következő oszlopot, majd a következőt.....hátha van valami egyszerűbb megoldás...
[ Szerkesztve ]
-
Pakliman
tag
válasz szatocs1981 #36553 üzenetére
Egy lehetőség még, hogy segédoszlopban képlettel összefűzöd a cellákat (Pl.: =A2 & ":" & B2 & ":" & C2).
Ez után az FKERES-el tudsz keresgélni (Pl.: =FKERES("V2:4:P01";D:D;1;HAMIS)).
Makróval is működik.
Vagy:
Makróval "egyszerre" tudsz keresni az összes oszlopban a range.Find() és range.FindNext() metódusokkal.
Az első oszlopban keresed pl. a "V2"-t, találat esetén megnézed, hogy a 2. oszlopban 4 van-e, ha igen, akkor a 3. oszlopban "P01" van-e. Ha bármelyik kérdésre hamis a válasz, akkor FindNext...
Érdemes tanulmányozni ezeket (nem csak a Find miatt):
[www.ozgrid.com]
[Ron de Bruin oldala][ Szerkesztve ]
-
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz szatocs1981 #36553 üzenetére
Szia!
Hány oszlopban vannak az adataid? Csak ez a három oszlop van?
Mert ettől is függ a megoldási lehetőség.
Üdv.
-
-
Fferi50
Topikgazda
válasz szatocs1981 #36557 üzenetére
Szia!
Esetleg megnézheted az Adatok - Speciális menüpontot. Így több szempont alapján is szűrhetsz, lehet helyben is és másoltatni is az eredményt. Ha már van egy ilyen Excel eszköz, szerintem használni kellene.
Üdv.
-
Angerfis
csendes tag
válasz Fferi50 #36543 üzenetére
Szia
Köszönöm a válaszod.Ha jól értem akkor ebben az esetben az alapértelmezett nyomtatót használná?
De a baj a következő hogy több nyomtató is van és minden képen ez a nyomtató kellene mert csak ez tud két oldalasan nyomtatni.Esetleg lenne valami ötleted hogy lehetne megírni a makrót?
Előre is köszönöm a válaszod."Vagyok aki vagyok, mert kell egy ilyen is"
-
Fferi50
Topikgazda
válasz szatocs1981 #36559 üzenetére
Szia!
A többszáz keresés paramétereit hol tárolod, hogyan jutsz hozzá?
Felveszed makrórögzítővel a Speciális keresést, aztán hozzáigazítod a követelményeidhez. Csak a keresési paramétert és a célterületet kell változtatni.
Szerintem ez elég jól automatizálható.Üdv.
-
Fferi50
Topikgazda
válasz Angerfis #36561 üzenetére
Szia!
Szerintem annyi elég, ha beépíted konstansként a programodba a nyomtatót.
Pl:Const Anyomt="\\............\.............RICOH-Aficio-MPC4502-PCL-6 a(z) Ne09: kimeneten"
Const Bnyomt="\\............\.............RICOH-Aficio-MPC4502-PCL-6 a(z) Ne10: kimeneten"Ezt akár publikus konstansként is deklarálhatod, így másik modulból, másik makróból is elérhető, csak arra kell figyelned, hogy a hivatkozás: Modulnév.változónév.
A makróban pedig megnézed, hogy az aktív printer melyik. Lekérdezed az Application.ActivePrinter tulajdonságot, ha valamelyik a kettő közül, akkor nyomtatsz rá. Ha nem, akkor beállítod.
Üdv.
[ Szerkesztve ]
-
Pakliman
tag
válasz Angerfis #36561 üzenetére
Én annak idején úgy oldottam meg a problémát, hogy a "...a(z) Ne09: kimeneten" szöveg alapján egy ciklussal szépen végigmentem a számokon. Megnéztem, hogy létezik-e az a nyomtató, ha nem, akkor Next.
Valami ilyesmi volt (vagyis pont ez ):Public Const Pr_Beo As String = "\\primon\SZK901"
Public Const Pr_S_Munkaügy As String = "\\primon\SUV204"
Public Const Pr_S_Diszp As String = "\\F90001295\HPLJ4200"
Public Const Pr_F_Diszp As String = "\\primon\FKA204"
Public Const Pr_H_Diszp As String = "\\primon\HCN205"
Public Function Nyomtató_Váltás(Optional mire As String = Pr_Beo) As Boolean
Dim sorszám As Long
Dim Hiba As Boolean
Err.Clear
Hiba = True
On Error Resume Next
For sorszám = 0 To 99
Application.ActivePrinter = mire & " a(z) Ne" & Format(sorszám, "00") & ": kimeneten"
If Err.Number = 0 Then
Hiba = False
Exit For
End If
Next sorszám
Nyomtató_Váltás = Hiba
Err.Clear
End Function[ Szerkesztve ]
-
fricc_
tag
válasz Fferi50 #36542 üzenetére
Köszönöm, viszont kellene még egy kis segítség.
Amit írtál működik, viszont én úgy képzeltem el, hogy a példánál maradva végig kell vizsgálni a teljes 5-ös sort nincs-e elrejtve egy oszlop..
Ha elrejtem a D-s oszlopot akkor ez a makro i=10 n=2 vel fut le.
Azt gondoltam i=4-nél teljesül a feltétel, és n felveszi i értékét de mégsem.
Mit írtam rosszul?Dim i, n As Integer
i = 1
n = 0
For i = 1 To 10
If Range("i5").EntireColumn.Hidden Then
n = i
Exit For
End If
NextIf Range("D5").EntireColumn.Hidden Then
n = 2
End If
End Sub -
Fferi50
Topikgazda
válasz fricc_ #36565 üzenetére
Szia!
"i= 1
n = 0
For i = 1 To 10
If Range("i5").EntireColumn.Hidden Then
n = i"A kiemelt sorral az a baj, hogy a Range("i5") az i oszlop 5. celláját nézi meg !!!.
Ha ciklussal mész akkor a Cells tulajdonságot kell használni:If Cells(5,i).EntireColumn.Hidden Then
Vagy:
Dim cl As Range
For Each cl in Rows(5).Cells :if cl.EntireColumn.Hidden Then
n=cl.Column :Exit For
Next
A kódod következő része pedig a D oszlopot rejtettnek találva az n értékét 2 -re állítja, legyen az bármennyi is az előző rész alapján.Üdv.
Ps. Légy szives, használd a Programkód gombot, ha makrót másolsz be.
[ Szerkesztve ]
-
Delila_1
veterán
válasz Ghoosty #36545 üzenetére
NE képlettel, hanem makróval fűzd össze a cellákat, akkor már lehet formázni cellán belül is a karaktereket. A fájlnak is jót tesz, ha a sok képlet helyett értékek szerepelnek.
Sub Felkover()
Range("C1") = Range("A1") & " " & Range("B1")
Range("C1").Characters(Len(Range("A1")) + 2, Len(Range("B1"))).Font.Bold = True
End SubA 2. sor végzi a formázást. Az első paraméter – Len(Range("A1")) + 2 – adja meg, hányadik karaktertől legyen a C1 tartalma fékövér, a második – Len(Range("B1")) – pedig azt, hogy milyen hosszan.
Ciklusban is elvégezheted az összefűzést, és a formázást.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
foregister
tag
válasz Fferi50 #36550 üzenetére
Mindennapos szociológiai logikát ne keress mögötte, tekints a jellemre úgy, hogy megjeleníteni kívánt információ egy felületen, de ettől függetlenül, szeretnénk ebben a táblázatban azt is nyilvántartani, hogy hány féle vagy hány darab jellemet tudunk egy-egy adott tulajdonsággal rendelkező személynek megjeleníteni.
Induljunk ki a forrás első jellem sorából ("Jellem 1"):
- ez a jellem igaz lesz akkor is, ha 30-40 éves párkapcsolatban élő gyerekes férfiről (2. tábla 15. sora) beszélünk, akkor is ha 41-55 éves családos gyermektelen nőről (2. tábla 20. sora), de
- akkor már nem igaz a feltétel, ha 30-40 egyedülálló gyerekes férfiről van szó (2. tábla 11. sora) (hiszen az egyedülálló nincs jelölve).Ezt szeretném a második táblán kiszámolni, hogy hány darab, az 1. tábla első oszlopbán lévő jellem (vagy adat) tartozik hozzá.
Így sikerült picit tisztáznom?
Az igen az nem nem
-
Fferi50
Topikgazda
válasz foregister #36570 üzenetére
Szia!
Darabteli, Index, Hol.van függvények használatával megoldható. A Hol.van függvénnyel kikeresed az oszlopokat amelyekben számolni kell a jellem kombinációk alapján.
Most nem vagyok gép közelben a pár napig. Ha nem sikerül megoldani, hét közepén visszatérhetünk rá.
Üdv. -
hallgat
csendes tag
Sziasztok!
Makró segítségre lenne szükségem.
Van egy munkalap, amin random cellák piros háttérszínnel vannak ellátva.
(a szín a stílusok menüszalagban a "rossz" alapérték piros)Azt szeretném elérni, hogy a makró a munkalapon található összes piros háttérszínnel ellátott cellát törölje.
Tegye mindezt úgy, hogy a tötölt cellánál a mellette lévő cellákat balra tolja.
Excel 2010-ről beszélünk.
Előre is köszönöm a segítséget!!!Office 2010 Attól, hogy a verebek alakzatba állnak, az még nem SAS!
-
Kobe
veterán
válasz Fferi50 #36555 üzenetére
megoldottam közben, most már fut rendesen
Viszont olyan problémába ütköztem, hogy az egész makrót egy xlam add-inba mentettem VBA projektként. A makró csinál egy custom ribbot tabot ahova bevágja a parancsgombokat, és autoamtikusan ez indulna el, ha az addint elindítom
Azt hogy betöltse a custom ribbont, a ThisWorkbook on belül hviatkoztam meg
Private Sub Workbook_Open()
Call LoadCustRibbon
End SubPrivate Sub Workbook_BeforeClose(Cancel As Boolean)
Call ClearCustRibbon
End Subviszont az xlam-ban induláskor ugye nincs workbook, emiatt nem tölti be.Hogyan, vagy hol kellene másképp emghivatkozni, hogy mégis a ribbonra kerüljenek ?
-
csferke
senior tag
Sziasztok!
Nem tudok rájönni, hogy hogyan könnyíthetném meg a képlet beírását.
Elkezdem beírni a képletet, lefelé nyil és kiválasztom a parancsszót amit szeretnék.
Most mit kell megnyomnom, hogy eljussak ide (ne kelljen végig bepötyögni a parancsszót) és folytatni lehessen a paraméterek megadását??köszi
[ Szerkesztve ]
-
Delila_1
veterán
válasz hallgat #36572 üzenetére
Jelöld ki a tartományt, majd futtasd az alábbi, modulba másolt makrót:
Sub NoPiros()
For Each CV In Selection
If CV.Interior.ColorIndex = 3 Then
Range(CV.Address).Delete shift:=xlToLeft
End If
Next
End SubAhol egymás mellett több piros hátterű cella is van, a második megmarad, újbóli futtatás rendbe teszi.
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
veterán
válasz hallgat #36579 üzenetére
Az Immediate ablakba (Ctrl+g-re bújik elő a VB szerkesztőben) írd be:
?activecell.interior.colorindex
Nekem van egy kis makróm a personalban (lásd a téma összefoglalót), amihez a gyorselérési eszköztárra kitettem egy ikont. Ez egy üzenetben megadja a háttér és a font színkódját, RGB-ben is.
Sub Szin_lekerdezes()
Dim Rh As Integer, Gh As Integer, Bh As Integer
Dim Rk As Integer, Gk As Integer, Bk As Integer
Dim hatter, karakter
hatter = Selection.Interior.Color
karakter = Selection.Font.Color
Rh = hatter Mod 256
Gh = (Int(hatter / 256)) Mod 256
Bh = Int(hatter / 256 ^ 2)
Rk = karakter Mod 256
Gk = (Int(karakter / 256)) Mod 256
Bk = Int(karakter / 256 ^ 2)
MsgBox "Háttér RGB: " & Rh & ", " & Gh & ", " & Bh & vbLf & _
"Karakter RGB: " & Rk & ", " & Gk & ", " & Bk & vbLf & vbLf & _
"Háttér színkód: " & Selection.Interior.ColorIndex & vbLf & _
"Karakter színkód: " & Selection.Font.ColorIndex
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.
-
lenkei83
tag
Sziasztok!
Set Ioszlop = ws.Range("I2:I" & ws.Range("A1").SpecialCells(xlCellTypeLastCell).Row)
Ioszlop = "=sumifs('" & Range("F2") & "'!$C:$C," & "'" & Range("F2") & "'!$B:$B,$D2," & "'" & Range("F2") & "'!$P:$P,$B2)"Képlet szeretnék berakni a fent látható "Ioszlop" range-be. A szumhatöbbnél a Range("F2") ugye a szummázandó munkalap neve ami soronként meg van határozva az F oszlopban, na ezzel akadtam meg. Itt úgy kellene hivatkoznom, hogy az F2 változzon az adott sornak megfelelően, vagyis a harmadik sornál már F3-ból vegye az értéket, a negyediknél F4-ből stb... huuh kicsit bonyolult így leírni, de remélem érthető.
Mi erre a megoldás?
Üdv.:
P. -
Pakliman
tag
-
Pakliman
tag
válasz lenkei83 #36585 üzenetére
Jelenlegi ismereteim szerint (remélem, lesz aki mutat valami jobbat) az INDIREKT nélkül csak úgy lehet megoldani, hogy a munkalap neve(ket)t fixen építed be a függvénybe. Így viszont "nincs értelme" az F oszlopnak, mivel nem is fogja onnan venni az értéket
Az INDIREKT valóban lassítja a dolgot, mivel volatile függvény, vagyis minden esetben újraszámol.[ Szerkesztve ]
-
Heavyrain
őstag
Sziasztok, gyors segítségre lenne szükségem.
Milyen függvénnyel lehet 5-re kerekíteni, de mindig felfelé?
KEREKÍTÉS(szám/5;0)*5-el tudok 5-re kerekíteni, de a lényeg az, hogy 176-ot 180-re kerekítsen és ne 175-re valamint 51-et 55-re kerekítsen és ne 50-re.
Köszönöm![ Szerkesztve ]
-
fricc_
tag
válasz Fferi50 #36567 üzenetére
Köszönöm, az első megoldást értem és működik is.
A fix n=2 csak a debug miatt volt bent :-)
Viszont mivel nyitott vagyok minden újra, főleg amit nem ismerek, kipróbáltam a másik két megoldást is, de a programba beillesztve nem tudtam működésre bírni.
Talán az alábbi két megoldást ki kéne még egészíteni valamivel?
A te 2. javaslatod:
Dim cl As Range
For Each cl in Rows(5).Cells :if cl.EntireColumn.Hidden Then
n=cl.Column :Exit Forill. Pakliman megoldása:
For Each cl in Rows(5).Columns: If cl.Hidden Then
[ Szerkesztve ]
-
Pakliman
tag
válasz lenkei83 #36587 üzenetére
Akkor viszont:
Dim ws As Worksheet
Dim rCella As Range
Set ws = ActiveSheet
With ws
For Each rCella In .Range("I2:I" & .Range("A1").SpecialCells(xlCellTypeLastCell).Row)
rCella = "=sumifs('" & .Cells(rCella.Row, "F") & "'!$C:$C," & "'" & .Cells(rCella.Row, "F") & "'!$B:$B,$D2," & "'" & .Cells(rCella.Row, "F") & "'!$P:$P,$B2)"
Next rCella
End WithAzt ugye tudod, hogy a SpecialCells tud ám rafinált hibákat okozni?
Csak látszat, hogy az utolsó "használt" cella lesz az alapja a visszaadott koordinátának.
Ha az utolsó mentés (és/vagy újranyitás) előtt mondjuk a "XFD1048576" cellába (O2010-nél az utolsó cella) valaki írt valamit aztán TÖRÖLTE, akkor a SpecialCells(xlCellTypeLastCell) az a cella lesz!!Én ezeket használom az utolsó sor/oszlop meghatározására (a "hol" lehet egy munkalap, vagy akár egy terület is):
Public Function UtolsóSora(hol, Optional lColumn As Long = 1) As Long
Dim rng
Set rng = hol.Cells(hol.Cells.Rows.Count, lColumn)
If Not IsEmpty(rng) Then
UtolsóSora = rng.Row
Else
UtolsóSora = rng.End(xlUp).Row
End If
Set rng = Nothing
End Function
Public Function UtolsóOszlopa(hol, Optional lRow As Long = 1) As Long
Dim rng
Set rng = hol.Cells(lRow, hol.Cells.Columns.Count)
If Not IsEmpty(rng) Then
UtolsóOszlopa = rng.Row
Else
UtolsóOszlopa = rng.End(xlToLeft).Column
End If
Set rng = Nothing
End Function -
Pakliman
tag
válasz fricc_ #36592 üzenetére
D oszlop elrejtve, a
Debug.Print n
4-et ad visszaDim ws As Worksheet
Dim n As Integer
Dim cl As Range
For Each ws In ThisWorkbook.Worksheets
n = 0
For Each cl In .Rows(5).Columns
If cl.Hidden Then
n = cl.Column
Exit For
End If
Next cl
Debug.Print ws.Name & "->n=" & n
Next wsErre gondoltál?
[ Szerkesztve ]
-
Songo
senior tag
Sziasztok
Egy gyors kérdésem lenne
Hogy lehet egy számot és szöveget is tartalmazó cellából kinyerni csak a számot?
köszönöm szépen
-
Delila_1
veterán
2016-os verziónál van egy ilyen lehetőség:
Beírod a kérdéses oszlop melletti első cellába a szöveget a SZÁM NÉLKÜL, majd ezen a cellán állva
Kezdőlap | Szerkesztés csoport | Kitöltés | VillámkitöltésNézd meg ezt a nagyszerű videót, amit Kovalcsik Géza állított össze a villámkitöltéssel kapcsolatban.
[ 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.
-
wednesday
őstag
Sziasztok!
Arra van valami lehetőség, ha képleteket(egy táblázatot) szeretnék új Excel lapra másolni, akkor ne hivatkozással együtt másolja be őket?
Importálok adatokat Excelbe. Elhelyezi őket a füleken, amikből majd keresni kell. Ezek az importált munkafüzetek mindig megegyeznek, így mindig ugyanazokat a képleteket lehet rájuk használni. Ezért lenne elég csupán egy képlet másolás és beillesztés (lap beszúrás az elejére és oda betenni a képleteket) De akármilyen trükköt vettettem be, mindig az előző Excel munkafüzetre hivatkozik és azokkal dolgozik.
Remélem érthetően mondtam.
Új hozzászólás Aktív témák
Hirdetés
- Autós topik
- World of Tanks - MMO
- Samsung Galaxy S23 Ultra - non plus ultra
- Nikon Z MILC fényképezőgépcsalád
- Milyen billentyűzetet vegyek?
- Ukrajnai háború
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Ingatlanos topic!
- Kormányok / autós szimulátorok topikja
- PlayStation 5
- További aktív témák...
- Védje meg számítógépét a vírusoktól!
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, kedvező ár!
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
Állásajánlatok
Cég: HC Pointer Kft.
Város: Pécs
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest