-
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
Ez sokkal összetettebb annál, hogy egy fórumon el lehessen mesélni.
Nekiláttam csinálni egy 3 adatot tartalmazó förmedvényt mintának. Mikor majdnem a végére jutottam, elszállt a gépem, és vele a lelkierőm.
UserFormot kell készíteni hozzá, annak nézz utána.
Hány adatod van egy-egy rekordban?Szerk.: ne ijedj meg, nem nehéz, csak babrás munka.
-
Delila_1
veterán
válasz
mimi_bacsi
#3950
üzenetére
Szívesen.
-
Delila_1
veterán
válasz
mimi_bacsi
#3947
üzenetére
Megkaptam. Most egy ideig nem tudok foglalkozni vele, de ha sikerül megoldani, azonnal visszaküldöm.
-
Delila_1
veterán
válasz
mimi_bacsi
#3944
üzenetére
Nosza!
-
Delila_1
veterán
válasz
mimi_bacsi
#3940
üzenetére
Ehhez sokkal többet kellene tudni a két fájlról.
Van-e mindegyikben címsor, és ha igen, azonos sorban helyezkedik-e el.
Azonosak-e az oszlopfejléc megnevezései.
A két fájl mezőinek sorrendje megegyezik-e.
Az is számíthat, hogy milyen tipusú adatokat tartalmaznak a mezők. -
Delila_1
veterán
válasz
mr.nagy
#3931
üzenetére
Van itt két makró, sajnos nem én írtam őket. Az első jó a feladatodra.
Function CountColor(Mintacella As Range, Tartomany As Range)
'Összeszámolja, hogy a mintaként jelölt háttérszínű cellából hány darab
'van a kijelölt tartományban.
Dim rngCell As Range
nColor = Mintacella.Interior.Color
nResult = 0
For Each rngCell In Tartomany
If rngCell.Interior.Color = nColor Then
nResult = nResult + 1
End If
Next rngCell
CountColor = nResult
End Function
Function SumColor(Mintacella As Range, Tartomany As Range)
'A mintaként bejelölt hátterű cellákban szereplő számokat összegzi
Dim rngCell As Range
nColor = Mintacella.Interior.Color
nResult = 0
For Each rngCell In Tartomany
If rngCell.Interior.Color = nColor Then
nResult = nResult + WorksheetFunction.Sum(rngCell)
End If
Next rngCell
SumColor = nResult
End FunctionMásold be a makrókat egy üres füzet makró szerkesztőjébe, majd mentsd el SzinesCella.xla (Microsoft Excel bővítmény) formában. Jelöld be az Eszközök/Bővítmények között megjelenő SzinesCella nevűt, ezután alkalmazhatod függvényként. A függvények között a Felhasználói kategóriában, és persze a Mind-ben találod meg a CountColor és a SumColor nevezetűt. A makrókba beírtam, melyik mit csinál (és a nevük is utal rá).
-
Delila_1
veterán
-
Delila_1
veterán
válasz
mimi_bacsi
#3917
üzenetére
Szívesen.
-
Delila_1
veterán
válasz
mimi_bacsi
#3915
üzenetére
A1-> 21/20
B1-> =SZÖVEG.KERES("/";A1)
C1-> =BAL(A1;B1-1)+JOBB(A1;HOSSZ(A1)-B1) -
Delila_1
veterán
válasz
elmoraan (r)
#3903
üzenetére
Tényleg. Hivatkoztam egy jpg-re, bejött. Áthelyeztem a képet, a csere funkcióval átírtam az útvonalat, és azt már nem tudta értelmezni.

-
Delila_1
veterán
Most nézem, hogy nemcsak a range("A65536...)-ot kérdezted.
A makró leírása:
A Masolt_lap-ra állok
Meghatározom az utolsó sort: usorm
E2-be Fkeres függvény, ami B2 rövid nevét az Uj_Sheet A: B tartomány B oszlopában keresi ki
Képlet másolása az utolsó sorig (kitöltéssel, AutoFill)A Do While - Loop ciklus már biztosan nem mond újat a számodra.
Mód.: Hát ez hogy ment el kétszer?!

-
Delila_1
veterán
Most nézem, hogy nemcsak a range("A65536...)-ot kérdezted.
A makró leírása:
A Masolt_lap-ra állok
Meghatározom az utolsó sort: usorm
E2-be Fkeres függvény, ami B2 rövid nevét az Uj_Sheet A: B tartomány B oszlopában keresi ki
Képlet másolása az utolsó sorig (kitöltéssel, AutoFill)A Do While - Loop ciklus már biztosan nem mond újat a számodra.
-
Delila_1
veterán
válasz
elmoraan (r)
#3900
üzenetére
A tartomány kijelölése után Szerkesztés -> Csere -> Mit keres, Mire cseréli mezők kiállítása -> Mindet
-
Delila_1
veterán
Szia Lúzer!
Az A65536-on állva nyomj egy Ctrl+fel nyilat. A kurzor az A oszlop utolsó, adatot tartalmazó cellájára áll. Ez ennek a műveletnek a VBA-s megfelelője. Így keresem ki az alsó sort.
Lehetne range("A1").end(xldown).row is, de akkor, ha az adatok (még mindig A oszlopban)között üres cella van, nem az utolsó kitöltött sorra állna, hanem az első csapat adat utolsó cellájára.
Másik hátránya, hogy ha csak A1-ben van adat (vagy ott sem), akkor leugrik a 65536-ra, és külön be kell írni a makróba egy feltételt, hogy ha fenti uatsítással meghatározott sor a 65536, akkor az utolsó sor értéke legyen 2, vagy 1 – van, vagy nincs címsor..A Ctrl+nyilakat a munkalapon az adatok közötti navigálásra is jól fel lehet használni.
-
Delila_1
veterán
válasz
attiati
#3895
üzenetére
Angol nyelvűnél is működik, de csak akkor, ha a gyümölcsök és a lapok neve megegyezik.
Másképp honnan tudná a program, hogy melyik lap adataihoz írja a következőt?Vegyél fel egy új lapot, ahol az A oszlopban a hosszú név, B-ben a hozzárendelt rövid lapnév szerepeljen. Kibővítettem a makrót. A Masolt_lap E oszlopába beírja az
=fkeres(a2;Uj_Sheet!a:b;2;hamis) függvényt, és ezután a lapnevet nem a B, hanem az E oszlopból olvassa ki.Sub Masol()
Sheets("Masolt_lap").Select
usorm = Range("A65536").End(xlUp).Row
Range("E2").Select
ActiveCell.Formula = "=VLOOKUP(B2,Uj_Sheet!A:B,2,FALSE)"
Selection.AutoFill Destination:=Range("E2:E" & usorm)
sor = 2
Do While Cells(sor, 1) <> ""
kelt = Cells(sor, 1)
lapnev = Cells(sor, 5)
ar = Cells(sor, 3)
Sheets(lapnev).Select
usor = Range("A65536").End(xlUp).Row + 1
Cells(usor, 1) = kelt
Cells(usor, 2) = ar
Sheets("Masolt_lap").Select
sor = sor + 1
Loop
End Sub -
Delila_1
veterán
válasz
attiati
#3893
üzenetére
A lapot, amit másolsz valahonnan, "Másolt_lap"-nak neveztem el (két helyen szerepel a makróban, írd át a saját lapod nevére). Ezen az A oszlopba írtam a dátumot, B-be a termék nevét, C-be az árat. Mindezt a második sortól, mert feltételezem, hogy az első sorban oszlopcímek vannak. A gyümölcsök lapjára már nem kell minden sorba az azonosítót beírni, azért nem tettem be az adatok közé.
Az gyümölcs lapokra csak két oszlopot vettem fel, a dátumot és a hozzá tartozó árat.Sub Másol()
Sheets("Másolt_lap").select
sor = 2
Do While Cells(sor, 1) <> ""
kelt = Cells(sor, 1)
lapnév = Cells(sor, 2)
ár = Cells(sor, 3)
Sheets(lapnév).Select
usor = Range("A65536").End(xlUp).Row + 1
Cells(usor, 1) = kelt
Cells(usor, 2) = ár
Sheets("Másolt_lap").Select
sor = sor + 1
Loop
End Sub -
Delila_1
veterán
válasz
Alex123
#3886
üzenetére
A lenti makró elvégzi a munkát.
Ha biztos vagy benne, hogy az A oszlopban minden cím csak egyszer szerepel, akkor így jó lesz a makró, ha nem biztos, akkor az Exit For sort töröld a futtatás előtt.Sub egyezo_torles()
ucsoA = Range("A65536").End(xlUp).Row
ucsoB = Range("B65536").End(xlUp).Row
Cells(1, 3).FormulaR1C1 = "=COUNTIF(C[-2],RC[-1])"
Range("C1").Select
Selection.AutoFill Destination:=Range("C1:C" & ucsoB)
For sorB = 1 To ucsoB
If Cells(sorB, 2) > 0 Then
email = Cells(sorB, 2)
For sorA = 1 To ucsoA
Cells(sorA, 1).Select
If Cells(sorA, 1) = email Then
Selection.Delete Shift:=xlUp
Exit For
End If
Next
End If
Next
Columns("C:C").Select
Selection.ClearContents
Range("A1").Select
End Sub -
Delila_1
veterán
válasz
cousin333
#3874
üzenetére
Miért kérdés 3 oszlop adataiból terület diagramot rajzoltatni? Valamit félreértek?
[Itt egy kép] -
Delila_1
veterán
Most ugyan nem vagyok 2007-es közelében, de megpróbálom leírni.
Az utolsó menüpont Fejlesztés, vagy hasonló névre hallgat. Innen hívd meg a Visual Basic-et. Bal oldalon láthatod a megnyitott füzeteid nevét, állj rá arra, amelyikbe be akarod másolni a makrót.
Insert menü, Module hatására jobb oldalon kapsz egy üres lapot, oda másold be a makrókat.
Ha a cellának nem a hátterét, hanem a karaktereket akarod színezni, az Interior-t mindenhol írd át Font-ra.
Innen is indíthatod a makrókat. A magnókon szereplő ikonokhoz hasonlóak.
A füzetből való indítás szintén a Fejlesztés menüből történhet, a Makrók nevű gombbal. Erre a gombra kattintva megjelennek a füzethez rendelt makrók, az egyik kiválasztása után az Indítás gombbal működtetheted, vagy az indítandó makró nevén duplán kattintasz..
Jó munkát!
-
Delila_1
veterán
Úgy tűnik, programozás nélkül nem megy.
Amit Lúzer ajánlott – Cella("szín",A2), az sajnos nem arra vonatkozik. Sikerült megtalálni a súgóban, aztán gyorsan el is vesztettem. Olyasmit tartalmaz, hogy ha negatív szám esetén más színt adunk a karakternek, mint pozitívnál, akkor 1 lesz az értéke a képletnek, azonos színnél 0 (vagy fordítva(?)).
Miért nem akarsz makróval dolgozni?Mindenesetre megírtam két makrót. Az első a színezett cellán állva egy üzenetboxban kiírja a háttér színkódját, ezt a kódot add meg a második makró If-fel kezdődő sorában.
Sub szin()
MsgBox Selection.Interior.ColorIndex
End SubNálam a színkód 44 (sötétsárga) volt.
A második makró számolja a nem színezett cellák tartalmának átlagát, mégpedig A2-től (feltételezve, hogy az A1 oszlopcímet tartalmaz) addig, amíg az A oszlopban talál adatot. Az utolsó adat utáni cellába írja az eredményt.Sub Atlag()
For sor = 2 To Range("A65536").End(xlUp).Row
If Cells(sor, 1).Interior.ColorIndex <> 44 Then
osszeg = osszeg + Cells(sor, 1)
oszto = oszto + 1
End If
Next
Cells(sor, 1) = osszeg / oszto
End Sub -
Delila_1
veterán
válasz
RoyalFlush
#3854
üzenetére
Ne vond össze a cellákat. Az FKEREShez a két oszlopnak (Alsó határ, Minősítés) egymás mellett kell lenniük, csak úgy működik. Ez egy segéd táblázat, a lap bármelyik részén lehet, itt nem a formázás a lényeg.
-
Delila_1
veterán
válasz
RoyalFlush
#3846
üzenetére
Nézz rá a #3850 és #3851-es hozzászólásokra.
-
Delila_1
veterán
válasz
Fehér Mancs
#3850
üzenetére
Teljesen igazad van. [Itt a minta]
Az utolsó paraméter az fkeresnél 1, vagy IGAZ is lehet. -
Delila_1
veterán
válasz
RoyalFlush
#3848
üzenetére
Lássuk a konkrét feladatot!
-
Delila_1
veterán
válasz
RoyalFlush
#3846
üzenetére
Arról van szó, amit privátban beszéltünk meg (hogy max. 7 feltételt tud ellenőrizni a munkalap függvény).
Az ötlet jó, hogy szétszeded a 8, vagy több feltételt. -
Delila_1
veterán
válasz
RoyalFlush
#3843
üzenetére
=HA(H1<60;"ENERGIATAKARÉKOS";HA(ÉS(H1>=60;H1<=90);"KÖVETELMÉNYEKNÉL JOBB";HA(ÉS(H1>90;H1<=100);"KÖVETELMÉNYEKNEK MEGFELELŐ";HA(ÉS(H1>100;H1<=120);"KÖVETELMÉNYT MEGKÖZELÍTŐ";HA(ÉS(H1>120;H1<=150);"ÁTLAGOSNÁL JOBB";HA(ÉS(H1>150;H1<=190);"ÁTLAGOS";HA(ÉS(H1>190;H1<=230);"ÁTLAGOST MEGKÖZELÍTŐ";"POCSÉK")))))))
A H1-eket írd át a csere funkcióval H1357-re.
Szerk: ezt jól összetörte a sorkiegyenlítés

-
Delila_1
veterán
válasz
RoyalFlush
#3843
üzenetére
Nézd meg jobban az ÉS függvény szintaktikákát az előző példában, és a többi mennyiségre is úgy alkalmazd.
és(h1357>=150;h1357<=190) -
Delila_1
veterán
válasz
RoyalFlush
#3841
üzenetére
=ha(és(h1357>=150;h1357<=190);"átlagos"; ...
-
Delila_1
veterán
válasz
takyka77
#3822
üzenetére
Sub Worksheet_Change(ByVal Target As Excel.Range)
If (Target.Column = 2 And Target.Row = 3 And Target.Value > 100) _
Then MsgBox "Elérte a maximumot"
End SubEz a makró a B3 cella (Column 2, Row 3) értékét figyeli. Ha meghaladta a 100-at, akkor üzenetdobozban figyelmeztet.
A makrót a kérdéses laphoz rendeld hozzá. Lapfülön jobb klikk, kód megjelenítése. A VB szerkesztő jobb oldalán kapott üres lapra másold át, és értelemszerűen végezd el a módosításokat.
Ehelyett a feltételes formázással is ki lehet emelni a cella értékét.
-
Delila_1
veterán
válasz
benjoe1
#3820
üzenetére
A Selection.Offset(3.1).Select sort itt nem értem, meg szerintem a cikluson belül módosítani kellene a kijelölés helyét. Nálad működött?
Az enyémben az usor kezdetű sor felesleges, de nem árt senkinek. Előbb a ciklust az usorig vittem, aztán a módosítottban benne hagytam a szemetet. -
Delila_1
veterán
Vegyük úgy, hogy a lapjaid neve Csoport_1, Csoport_2, és Csoport_3, a cikkszámok az A oszlopban vannak, az árak pedig B-ben.
A kereső lapon az A-ban a cikkszám, a következő háromban az ár, amit az Fkeres függvény ír be.
A B oszlop képlete:=HA(HIBÁS(FKERES($A2;Csoport_1!$A:$B;2;HAMIS));"";FKERES($A2;Csoport_1!$A:$B;2;HAMIS))
Ezt a képletet jobbra húzod a D oszlopig, és a Csoport_1-et átírod Csoport_2-re, illetve Csoport_3-ra. Ezután a 3 képletet együtt lemásolod, ameddig szükséges.
Lehetne úgy is, hogy a 3 képletet valahova messzebb teszed, mondjuk H-tól J-ig, B-be pedig =max(H2:J2)
-
Delila_1
veterán
válasz
liquidmoon
#3792
üzenetére
A DARAB2 függvény megszámolja, hány adatod van egyik, és másik oszlopban. A két eredményből tudsz százalékot számolni.
-
Delila_1
veterán
Hű, de fürge vagy! Alig néhány hónap, és már meg is nézed!
Sheets("kiinduló lap").Select
usor = Range("A65536").End(xlUp).Row
Range("A16:J" & usor).Select
Selection.Copy
Sheets("nyilvántartás").Select
Cells(1, 1).Select
ucso = Range("A65536").End(xlUp).Row
If Cells(ucso, 1) > "" Then ucso = ucso + 1
Cells(ucso, 1).Select
Selection.PasteSpecial Paste:=xlPasteValuesAz lehet a baj az előzővel, hogy a nyilvántartás lapodon még nem volt adat, az xlDown leszaladt a 65536. sorig, és oda akart bemásolni néhány sort. Ettől persze kiakadt a lelke.
-
Delila_1
veterán
válasz
Narancs
#3772
üzenetére
Tegnap kicsit szűkszavúan válaszoltam.
Egyik módszer, hogy a D2-be beviszed a szumha függvényt. 500 adat esetén
=szumha($b$2:$b$500;b2;$c$2:$c$500)
Ezt a képletet lehúzva minden terméked mellett kiírja a pillanatnyi összes darabot.Másik - nekem szimpatikusabb - módszer:
C801-be (hogy legyen bőven hely a további tételek beírásához)
=részösszeg(9;c2:c800)
Itt a 9 egy függvényszám, ami azt jelzi a függvénynek, hogy a látható tételeket össze kell adni.
Most a felső sorba tegyél autoszűrőt az Adatok/Szűrő/Autoszűrő-vel. A "B" oszlop bármelyik tagjára szűrve azonnal látod a temék darabszámát.Megjegyzés: a részösszeg függvényt teheted akár a G1-be is, hogy mindig lásd, ne kelljen görgetni hozzá a képernyőt.
-
Delila_1
veterán
válasz
Gabcsika
#3765
üzenetére
Szívesen.
A Formátum/Feltételes formázással könnyen megoldható.
[Itt egy kép] -
Delila_1
veterán
-
Delila_1
veterán
Csak próbálkozás:
Ha a VBE-ben a Tools/Options párbeszéd ablak Editor fülén be van kapcsolva a Require Variable Declaration, akkor a makró elején deklarálni kell a változókat. Lefoglalni nekik a helyet a Dim utasítással (Dim uoszlop As Integer, Dim szöveg As String), azután meg kell adni a kezdő értéküket (Set uoszlop= ActiveSheet.UsedRange.Columns.Count, Set szöveg="Juliska").
Nálam nincs bekapcsolva. Vagy kapcsold ki, vagy deklaráld a változókat, remélhetően ez a bibi.

-
Delila_1
veterán
Érdemes a makró elején meghatározni a kiinduló lapot.
Ha a kiinduló lapon az A16 fölött nincs adat, hibás lesz a kijelölés, ezért inkább az
usor = Range("A65536").End(xlUp).Row -val keresd ki az A oszlop utolsó sorát.
A nyilvántartás lapra a Select-tel lépj át.Sheets("kiinduló lap").Select
usor = Range("A65536").End(xlUp).Row
Range("A16:J" & usor).Select
Selection.Copy
Sheets("nyilvántartás").Select
Cells(1, 1).Select
ucso=Selection.End(xlDown).Row+1 'Itt adod meg az utolsó alatti sort (+1)
Cells(ucso, 1).Select
Selection.PasteSpecial Paste:=xlPasteValues -
Delila_1
veterán
Szerkesztés/Ugrás/Irányított. Itt kiválasztod az Állandókat, mire felajánlja a számokat, szövegeket, logikai értékeket és a hibákat. Azokat hagyd kijelölve, amiket ki akarsz törölni. Az OK-ra a kiválasztott cellák lesznek jelöltek, és akkor a DEL billentyűvel egyszerre kitörölheted mindet.
-
Delila_1
veterán
-
Delila_1
veterán
válasz
Csontikka
#3708
üzenetére
Ugyanazt csinálja mint az előbb, csak kicsit kevesebb sorban leírva:
Sub Tisztítás()
usor = Range("A65536").End(xlUp).Row 'változtatás, ha nem A oszlopban van az adat
For sor = 1 To usor
név = Cells(sor, 1) 'változtatás, ha nem A oszlopban van az adat
Do While Mid(név, 1, 1) = " " Or Mid(név, 1, 1) = "!"
név = Right(név, Len(név) - 1)
Loop
k = Len(név)
Do While Mid(név, k, 1) = " " Or Mid(név, k, 1) = "!"
név = Left(név, Len(név) - 1)
k = k - 1
Loop
Cells(sor, 2) = név 'változtatás, ha nem B oszlopba kell írni a kigyomlált adatot
Next
End Sub -
Delila_1
veterán
válasz
Csontikka
#3708
üzenetére
Nem írtad, melyik oszlopban vannak az adataid.
A makró az A oszlopban lévő adatokat tisztítja meg a feleslegtől, és a B oszlopba írja az eredményt.Sub Tisztítás()
usor = Range("A65536").End(xlUp).Row 'Itt írd át az A-t, ha nem az A oszlop adatait ellenőrzöd
For sor = 1 To usor
név = Cells(sor, 1) 'Itt az 1-et az oszlopod sorszámára
név = Right(név, Len(név) - 1)
név = Left(név, Len(név) - 1)
Cells(sor, 2) = név 'Itt azt az oszlop sorszámot a 2 helyett, ahova a tisztított adat kell
k = 1
Do While Mid(név, k, 1) = " "
név = Right(név, Len(név) - 1)
Cells(sor, 2) = név 'Itt is azt az oszlop sorszámot a 2 helyett, ahova a tisztított adat kell
Loop
k = Len(név)
Do While Mid(név, k, 1) = " "
név = Left(név, Len(név) - 1)
Cells(sor, 2) = név 'Itt azt az oszlop sorszámot, ahova a tisztított adat kell
k = k - 1
Loop
Next
End SubA tisztított adatot oda is írathatod, ahol jelenleg a !-es adataid vannak, de jobb máshova, és az eredetit utólag törlöd.
Új hozzászólás Aktív témák
- Facebook és Messenger
- OpenMediaVault
- Fejhallgató erősítő és DAC topik
- Először beszélt bővebben az új Xbox konzolról a Microsoft
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- exHWSW - Értünk mindenhez IS
- iPhone topik
- AMD GPU-k jövője - amit tudni vélünk
- Kész rémálom lesz Linuxot használni jövőre az USA egyes államaiban
- Anglia - élmények, tapasztalatok
- További aktív témák...
- Játékkulcsok ! : PC Steam, EA App, Ubisoft, Windows és egyéb játékok
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- The Elder Scrolls Online Imperial Collector s Edition
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - 15% AKCIÓ
- Xbox / Microsoft Store feltöltőkártya kód (digitális, HU) több címlet, több db, azonnal, olcsón
- Eladó AORUS 15 X5LF RTX 4060 (140W), i5-12500H 16 GB DDR5 15,6" QHD (2560 1440) 165Hz Garancia
- Decathlonos 43-as boxcipő, alig használt, hibátlan állapotban
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RTX 5060 Ti 16GB GAMER termékbeszámítással
- Dell Pro Plus 14 Core Ultra 5 238V 32GB 1000GB FHD+ TouchScreen ProSupport Plus gar: 2028.10.07
- Samsung Galaxy S24 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest








Fferi50