-
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
-
Guitar14
senior tag
válasz
föccer
#52797
üzenetére
+Emod:
Sajnos (vagy nem sajnos) Office 2016-om van. Cseréltem volna újra de egy két módosítástól megőrültem az újjabb Office-ban, így maradtam.Egyébként ennek az egésznek megoldását annyira egyszerűnek hittem, mondom én vagyok ilyen gyökér, hogy egy full egyszerű feladatot nem tudok megírni képlettel pedig nehezebbeket is megoldottam már.
Igazából batch programot írok ami könyvtárszerkezetet hoz létre és azokba fájlokat másol. Minden oszlop egy programművelet
"cd Mucsaröcsöge | mkdir Mappa | move xy Mappa | .....stb" A szám ami meg mellette van balra az a sorrendje, régen mindig összemásoltam őket egymás alá és a számok alapján sorrendbe raktam őket majd futtatható is volt. Gondoltam már erre a képletre régebben is csak nem vettem rá magam, most viszont akkora a tábla, hogy nem akarom gyalog összerakni futtatható sorrendbe + későbbiekben is erre a célra jó lenne. -
Guitar14
senior tag
válasz
föccer
#52793
üzenetére
Köszi, majdnem jó lett.
Be is írtam a nagy táblámba, belepörgettem és láttam, hogy csak az első sor értékeit veszi mindig.
Már értem miért írtad az "annyira szimpatikus, hogy minden oszlopban ugyan azok a gyümölcsök szerepelnek" szöveget, a valós nagy táblámba változóak soronként a szövegek csak azért írtam így oszloponként ugyanazt a példatáblába mert nem jutott ennyi gyümölcs az eszembe

Kicsit átírtam és a pirossal jelölteknél látszik a hiba.
Valami ötlet? -
Guitar14
senior tag
Sziasztok, beletört a bicskám ebbe a műveletbe így tőletek kérnék segítséget:
Adott a táblázat, a sárga J oszlopba szeretném képlettel belerendezni, hogy megkeresse az I oszlopban lévő értéket az A1:H7 tartományba és a mellette jobbra lévő cellát kapjuk értékül. (pl.: J28 cellába legyen írva, hogy eper)
Próbálkoztam HOL.VAN, INDEX stb függvényekkel, neten is csomót olvastam de mindig két oszlopos táblát adnak például abba meg én is megcsinálom. Gondom az, hogy a HOL.VAN erre a tartományra #HIÁNYZIK-ot ír. A tábla meg amibe ezt véghez kéne vinnem kb. tízezer soros és kétszáz oszlopos.
-
föccer
nagyúr
válasz
Flowtation
#52786
üzenetére
Használd a szűrő() függvényt. Befoglalásba kell betenni a nevet, mint feltétel.
Ha nem függőlegesen, hanem vizszintesen akarod a listát akkot be kell ágyaszni egy transzponálás függvényt.
üdv, FG
-
kopogo
tag
Sziasztok
Megoldást keresek adott 1 munkafuzet melyben van 1 adat fül és 1 eredmény fül
Eredmény fülön az emberek legördülő listában ki lehet választani viszont az emberekhez tartoznak eszközök és az eszközöket szeretném megjeleníteni és kiválasztani adott emberhez csak adott eszközök jelenjenek meg
-
Flowtation
őstag
Sziasztok!
Kaptam egy feladatot, amit nem tudok megoldani. Van egy névsor, ahol az aktuális név mellé oda kellene írnom, hogy milyen számú gépet használ, ha van neki. Ez a nyilvántartás egy másik táblázatban van, de ott így:
név1 nb1
név1 monitor1
név1 monitor2
név2 nb2
név3 pc1
Tehát van akinek laptop van, van akinek pc, és olyan is hogy egy név zöbbször szereplhet, a plusz eszköz miatt. Én megpróbáltam az fkeres függvénnyel, de nem sikerül. A névlista táblázatból (név, besoztás, végzettség, stb) simán ki tudom szűrni a névhez tartozó munkakört pl. de a másik táblából az eszközt nem. Hiába másolom oda a leltár táblából a nevek+gépek oszlopokat, még akkor sem szedi ki jól a gépneveket, sok név mellé pl. ugyanazt a gépnevet rakja, de sok helyen pl. monitort tesz oda.
Tudnátok nekem segíteni?
Köszönöm! -
föccer
nagyúr
gyerekek, új időszámításba léptem. Felfedeztem, hogy létezik függ.halmozás függvény. Hogy én ezzel eddig mennyit szívtam.
köszönöm, hogy meghallgattatok. Most már könnyebb

-
Imy
veterán
Biztosan egyszerűen meg lehet oldani, de leírom a problémámat. Köszönöm aki segít.
Van egy excelem ami több oszlop/sorból áll.
Hogyan tudom kivállogatni, hogy az egyik oszlopban lévő értékek csak egyszer szerepeljenek?Példa:
Kiindulás
Alma piros
Alma piros
Körte sárga
Alma piros
Körte sárga
Barack narancs
Szilva kékEredmény:
Alma piros
Körte sárga
Barack narancs
Szilva kék -
föccer
nagyúr
Szóval lehetne-e olyant, hogy:
Igen, lehet. Viszont ha dinamikusan változik a listád, akkor kicsit jobban össze kell rakni a makrót, hogy "bolondbiztos legyen".Számon kell tartani, hogy pontsan mennyi név van, szépen sorba másolni, lértehozni a szükséges cuccokat, nyomtatást elvégezni, majd törölni azokat a WS-eket, amik már nem kellenek.
Ez már egy pár órás feladat. Nem túl bonyolult, de neki kell ülni és összerakni kitesztelni.
-
Win-T
őstag
válasz
föccer
#52779
üzenetére
Na én itt már teljesen elvesztettem a fonalat.

Szóval lehetne-e olyant, hogy: Egy munkalapon egy oszlopban ott van minden név (egyedül ez változik minden hónapban ha egy ellátott meghal vagy új érkezik). Ezt manuálisan kezeljük, tiszta sor.
Lemásolja minden névhez a munkalapot amiken az X2-be és X28-ba bemásolja a nevet.
Az elkészült munkalapokat kijelöli és megnyitja a a nyomtatási párbeszédablakot nyomtatáshoz (Ezt azért kéne mert több nyomtató is van, ki kell választani melyikre küldje, illetve mivel két oldalas, be kell állítani a duplex nyomtatást. Ezeket nem tudom lehet-e makróból.)Vagy: Megcsinálom a neveket tartalmazó oszlopot és a szükséges számú munkalapot kis ráhagyással (van, hogy kell a 80, van hogy kevesebben vagyunk). A szükséges két cellába egyszerű képlettel átmásolom a neveket. Egy makró megnézi minden munkalapon, hogy X2 tartalmaz-e adatot és csak azokat a munkalapokat nyomtatja amiken igen.
Melyik verzió életképesebb? Vagy kivitelezhető egyáltalán?
-
föccer
nagyúr
válasz
föccer
#52778
üzenetére
Ezt 1x kell lefuttatni, ez megcsinálja annyiszor a másolást, ahány a For i = WsC to WsC+10 sor végén a szám (jelenleg a 10)
A munkalapon neve az N betűből és egy sorszámból fog állni.
sub Szetmasolas()
Dim i As Integer
Dim WsC As Integer
WsC = ActiveWorkbook.Sheets.Count
For i = WsC To WsC + 10
Sheets("16-32").Copy After:=Sheets(i)
Sheets("16-32 (2)").Name = "N" & i - WsC + 1
Next
End SubEz pedig kijelöli és nyomtatóra küldi az összes (jelenleg 10) munkalapot.
Sub kijelolnyomtat()
Sheets(Array("N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "N10")).Select
Sheets("N0").Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End Sub -
föccer
nagyúr
1x kell megcsinálni, helyesen és utána bármennyiszer jól fogja megcsinálni.

Jelenleg is megcsinálja a 80 pdf-et, amit 3 kattintással nyomtatási sorba tudsz tenni.
Sőt, azt is meg lehet cisnálni, hogy egy makró megcsinálja a 80 munkapalot, lemásolgatva és sorszámozva őket, kijelöli az összes munkalapot és úgy nyomtatja. Akkor is egy doksiként fog kijönni, de ahhoz meg kell lennie az összes adatnak, egyszerre (vagy 1 munkalapon, vagy 80 munkapaon külön, az mindegy. Maga a nyomtatás az 1 eljárás, a kinyomtatott dokumentumokat az excel nem tudja összefűzni, de a különböző munkalapokat egyszerre kijelölve értelmezi, hogy 1 dokumentumba kell kinyomtatni.
üdv, FG
-
föccer
nagyúr
Sheets("16-32").Range("X2").Value = Sheets("Seged").Cells(i, 1).Value
ez a sor csinálja a név másolását,
Sheets("16-32").Range("X28").Value = Sheets("Seged").Cells(i, 1).Value
kell neked berakni alá. Ez az X28-ba is bemásolja a segéd A oszlopából az aktuális sor nevét.A Sheets utáni paraméter a munkafüzet neveve, a Range után a cella hivatokzás van. Az = jeltől balra lévő Cells(i,1) cella tartalmazza a nevet (az aktuális, i-edik sorból veszi az értéket).
Mivel minden oldalt külön "generálsz lesz", így nem nagyon tudod összefűzni, max utólag. Simán filekezelőből viszont az összes fájlt kijelölve, helyi menüből lehet nyomtatni, és akkor sorba kinyomtatja az összeset.
1 pdf legenerálásához, egy munkalapon össze kellene szerkeszteni az összes dokumentumot, szépen tördelve és úgy nyomtatni. Meg lehet csinálni, de az macerás.
üdv, fg
-
Win-T
őstag
válasz
föccer
#52774
üzenetére
Teljesen frankó, köszönöm... csak két bajom van.

Ezt nem írtam meg pontosan, de mivel két oldalas a kész nyomtatvány (egyik oldalon elsejétől tizenötödikéig, hátoldalán tizenhatodikától harminc/harmincegyedikéig a napok) két helyen kellene a nevet beszúrni X2-őn kívül X28 cellába is.
Ha beszúrok még egy sort az X2 alá azt érteni fogja?Sheets("Tevékenység").Range("X28").CalculateA másik, hogy ez minden névhez külön fájt hoz létre amiket aztán még mindig egyessével kell kinyomtatnom, de én pont ezt nem szeretném. Az lenne a jó, ha egy fájlba rakna mindent amit aztán csak el kell küldeni a nyomtatónak és kalap kabát, mint a Word körlevelesdi. Ez esetleg megoldható?
-
föccer
nagyúr
Seged munkalap igy nézzen ki.

Mentst a munkafüzetet xlsm-be, makróbarátként. Fejlesztőeszközök menüből adj hozzá egy sima gombot. Alt+F11-el nyisd meg a VBA editort. Jobb klikk a fájl alatt az object-en, insert modul. A megjelent Module1-en dupla klikk, majd a lenti kódot szúrd be.
A beillesztett gombon jobb klikk, makró hozzá rendelése és válaszd ki a megírt Nevek_kitoltese makrót, majd futtasd.
Ha minden jól megy, akkor a fájl mellé lenyomja pdf-ben az összes formanyomtatványt úgy, hogy a fájl nevébe beteszi a nevet. Nem lehet 2 azonos név.

Sub Nevek_kitoltese()Dim i As IntegerDim AnswerDim Fajl_neve As StringDim Futvonal As StringDim Nyomtato As StringMsgBox "Kérlek válaszd ki a pdf nyomtatót"Application.Dialogs(xlDialogPrinterSetup).ShowNyomtato = Application.ActivePrinterMsgBox "Nyomtató beállítva: " & NyomtatoFor i = 2 To Sheets("Seged").Range("F2").ValueSheets("16-32").Range("X2").Value = Sheets("Seged").Cells(i, 1).ValueSheets("16-32").Range("X2").CalculateAnswer = MsgBox("Mehet a pdf generálása?", vbQuestion + vbYesNo + vbDefaultButton2, "Biztos?")If Answer = vbYes ThenFajl_neve = ActiveWorkbook.Path & "/" & Sheets("Seged").Cells(i, 1).Value & ".pdf"Sheets("16-32").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Fajl_neveElseMsgBox "Nyomtatás megszakítva..."Exit SubEnd IfNextEnd Sub -
Win-T
őstag
válasz
föccer
#52770
üzenetére
Ez akartam is írni, hogy én 8 bites felhasználó vagyok, egyszerűbb képletekkel még elboldogulok, de a makrókhoz kábé annyira értek mint az atomfizikához (semennyire).
Semmi extra nincs a táblában, csak egy egyszerű munkalap, amin X2-be szeretném ha automatikusan nyomtatná a neveket egy listából. De ha ilyen bonyolult akkor megcsinálom Wordben inkább.
-
föccer
nagyúr
Makróban sima-liba megoldani. Több formanyomtatvány kezelőt is csináltam már.
Összerakod a név listát egy munkalapon, egy másikon egy formanyomtatványt.
A név darabszámhoz kötötten egy sima for ciklussal végig mész a neveken, beilleszted a formanyomtatványba és pdf-be lementet.
Ha mutatsz mintát, akkor segítünk megírni.

Ha van outlook kliens, akkor direktbe ki is tudja küldeni a vba

üdv, FG
-
Win-T
őstag
Üdv!
Excelben tudok olyant csinálni mint Wordben a körlevél készítés? Tehát adott egy nyomtatvány havonta 70-80 példányban amin csak a név változik. Nem szeretném havonta begépelni a neveket vagy 80 példányban elmenteni a munkalapot és egyessével nyomtatni. Tehát létre tudok hozni valahogyan egy forrást amiből ki tudja venni a neveket nyomtatáskor?
-
Fferi50
Topikgazda
válasz
lanszelot
#52766
üzenetére
Szia!
Ha csak ennyiből áll a makród, akkor természetes a hibaüzenet, mivel nem tudhatja, hogy melyik cellával szeretnél dolgozni.
Ezt a sort én Delila makrójának a CV -s sora helyett javasoltam. Tehát kellenek hozzá az abban szereplő további sorok, hogy világos legyen a makrónak, mi a feldolgozandó terület.
Valószínűleg nem voltam elég világos.
Sajnálom, hogy feleslegesen fárasztottalak.
Üdv. -
lanszelot
addikt
válasz
Delila_1
#52765
üzenetére
#52753 itt próbáltam elmakogni

Csak már fáradt voltam.
A tiéd tökéletesen működik.
Én is pont úgy próbáltam, csak énCV.Value = "+A1*" & CV.Value
Így vittem be és ez nekem hibát dobottFferi50
Sub masik()
CV.Formula = "=" & Replace(CV.Text, ",", ".") & "*A1"
End Subez a kód
A1 cella értéke 2
kijelölt cella értéke 3
runtime error 424
debug kijelöli a sort -
Fferi50
Topikgazda
válasz
lanszelot
#52755
üzenetére
Szia!
Bocs, a nagy igyekezetemben elírtam, így helyes:CV.Formula = "=" & Replace(CV.TEXT,",",".")& "*A1"
Ezek nem aposztrófok, hanem idézőjelek! A Replace függvény kicseréli a számokban levő magyar formátumú vesszőt pontra, mert a makróban angol formátum kell.
Remélem, így már működik ez is (bár elvileg a másik formának is működni kellene...)
Üdv. -
lanszelot
addikt
válasz
Fferi50
#52754
üzenetére
Ez nekem nem működik. Hibát dob.
A fenti jól működik, és azt értem.
Ezt sajnos nem értem, így nem tudom mi lehet a gond.
Azok az aposztrófos vesszős pontos izék fogalmam sincs mit csinálnak.
Látom hogy a replace függvénynek ez a formátuma, csak nem tudom mi mit csinál, hogy működik. -
-
-
Delila_1
veterán
-
lanszelot
addikt
válasz
Delila_1
#52737
üzenetére
Először is köszönöm szépen a választ.
CV.Value = CV.Value * Cells(1, 1)
Ebben a sorban a nem megszorozni kellene az A1 tartalmával, ahanem magával a képlettel kiegészíteni, de nem tudom hogyan lehetneCV.Value = "+" & CV.Value & Range("A1")
Persze ez így nem működik, de nem tudom lehetséges e képletet hozzá adni -
föccer
nagyúr
válasz
Fferi50
#52743
üzenetére
Végül sokkal egyszerűbb lett a megoldás. A kód részletedet nézve sejlett fel előttem, hogy a PrintPreview megjeleníti child form-ban az előnézeti képet, majd annak bejárása után folytatja a makró futását a következő sorban. Szóval csak simán kapott egy Sheets(NyWs).Visible = xlSheetHidden utasítást és jóccakát. Tökéletesen működik.

-
Fferi50
Topikgazda
válasz
smallmer
#52746
üzenetére
Szia!
Az 1. rész megoldható az alábbiak szerint:
A másik munkalapon a kereső cellába - Adatok - Érvényesítés - lista - kijelölöd az első munkalap első oszlopát.
Ezután mellette vagy alatta FKERES függvénnyel megkapod a hozzá tartozó további értékeket.
A 2. rész szerintem csak makróval oldható meg.
Üdv. -
smallmer
őstag
Sziasztok!
Az alábbi feladat megoldásában szeretném kérni a segítségeteket.
Előzmények:
1. Adott egy excel lap ahol 5 oszlopban vannak tulajdonságok.
2. Az 5 oszlop közül az első egy azonosító.Feladat:
Egy másik excel sheeten csinálni egy mezőt amiből ki lehetne választani a másik sheeten lévő azonosítókat (keresni is lehessen rá begépeléssel). Ha kiválasztottam, akkor jelenjen meg minden adat ami az azonosítóhoz tartozik és lehessen felvenni új információt az azonosítóhoz, amit az excel szúrjon be az eredeti azonosítós táblázat végére egy oszlopba. Minden újabb tulajdonság egy új oszlop legyen.Remélem érthetően írtam le.
Láttok erre bármiféle megoldást?
Köszönöm szépen!
-
gycs02
aktív tag
válasz
Fferi50
#52739
üzenetére
Szia!
Köszönöm a választ!
Keresgettem az ajánlásod alapján, de sajnos nem jutottam előrébb. Nem vagyok képben a makró világában, csak amit megtalálok a neten azokat próbálom több-kevesebb sikerrel felhasználni, s minimálisan módosítgatni.
Ez így most működik:Dim utvonal As String
utvonal = "c:\Dokumentumok\01\1.xlsx"
On Error GoTo 1
ActiveWorkbook.FollowHyperlink utvonal, NewWindow:=True
Exit Sub
1: MsgBox Err.DescriptionHogy mi miért van benne nem tudom, egyedül az útvonal ami számomra mond valamit.
Az elérési út az alkönyvtár kivételével minden esetben ua, a fájlnév sem változik. Azt szeretném elérni, hogyha az a fájl ami a makrót futtatja a 01-es mappában van, akkor az abban lévő 1.xls-t nyissa meg, ha a 02-ben van, akkor az abban lévőt stb.
Lehet így érthetőbb is a kérdésem, ha megoldható kijavítanád ezek alapján?Az excel-ben az összes makró engedélyezve van, és pipálva a VBA projekt objektumok is.
Az a tiltás feloldása rész nálam nincs vagy nem jó helyen keresem vagy le van tiltva. [kép]Köszi gycs!
-
föccer
nagyúr
Sziasztok!
A lenti kóddal megjelenítek egy rejtett munkalapot, majd kérem a nyomtatási képet, hogy lehessen direkt nyomtatni.
Milyen néven találom meg azt a metódust, ami akkor fut le, ha a nyomtatási képet bezáródik (tehát ha a nyomatást vagy ha a bezárást választom, ígyis-úgy is szertném elrejteni az NyWs-t.
Köszönöm

Sub Nyomtat()Dim NyWs As StringSheets("Seged").Range("B1:D1").CalculateNyWs = Sheets("Seged").Range("D1").ValueSheets(NyWs).Visible = xlSheetVisibleSheets(NyWs).PrintPreview FalseEnd Sub
-
Fferi50
Topikgazda
válasz
gycs02
#52738
üzenetére
Szia!
Az éppen aktuális fájl teljes nevét az ActiveWorkbook.Fullname utasítással tudod elérni, ezt tárolhatod egy változóban is akár.
Az elérési utat a Path, a rövid nevet a Name tulajdoság adja vissza.
Amikor megnyitsz egy fájlt, akkor az lesz az aktív, tehát megnyitás után le tudod kérdezni a tulajdonságait. Nem kell a Cella függvény hozzá, de abból is megkaphatod az értéket:
Range("A1").TEXT utasítás a cellában ténylegesen megjelenő szöveget (nem a képletet!) adja vissza.
A makrók miatti figyelmeztetéseket szerintem úgy tudod elkerülni, ha engedélyezed a makrókat. Ezen felül vagy inkább ezzel együtt a fájlkezelőben a fájl nevén jobb egérgombbal kattintva, a tulajdonságot kiválasztva alul a Biztonság részben bepipálod a Tiltás felodása négyzetet.
Makróból szerintem az okézás nem megy.
Üdv. -
gycs02
aktív tag
Sziasztok!
Kezdek belejönni, persze csak ha a gugli segít.
Ha nem akkor jönnek ide a kérdések.
Van egy fájl, aminek az egyik cellájában a =+CELLA("filename") képlet kiírja a megfelelő információkat. Betudom valahogy helyettesíteni ezen cella tartalmának alapján ezt az elérési utat: utvonal = "c:\Dokumentumok\1.xlsx". Több fájlom van, az utvonal fájlnevét eddig manuálisan átírtam, mikor másnéven mentettem. Azt szeretném, hogy a makróval elvégzendő parancsot mindig a megnyitott fájlon hajtsa végre. Remélem érthetően sikerült leírnom.
Még egy kérdés. néha előfordul, hogy olyan fájlra hivatkozom, amire az office feldobja, hogy néhány fájl vírust tartalmazhat.... , ez le lehet okézni valamilyen makró paranccsal?Köszi előre is!!!
-
Delila_1
veterán
válasz
lanszelot
#52736
üzenetére
Ennyi az egész. Bekéred a szorzandó területet, amit vagy bepötyögsz, vagy egérrel kijelölöd, a többit elvégzi a makró. Hozzárendelheted egy gombhoz, ahogy már föccer is írta.
Ha állandó a terület, az inputbox helyett megadhatod direktben:Set Terulet = Range("A1:Z1")Sub Szozas()Dim Terulet As Range, CV As ObjectSet Terulet = Application.InputBox(prompt:="Kérem a szorzandó tartományt", Type:=8)For Each CV In TeruletCV.Value = CV.Value * Cells(1, 1)NextEnd Sub -
lanszelot
addikt
válasz
föccer
#52733
üzenetére
Huhhh, nagyon szépen köszönöm mindenkinek a segítséget.

Nem hangzik bonyolultnak
Persze át kell rágnom magam rajta, de szerintem nem lesz gond.Fferi50: a link is nagyon jó, köszönöm szépen.
Így már rá is tudok keresni.Access -ben tudtam, hogy van programozás rész (nem csináltam, csak tudtam róla) , de excel-ről nem tudtam.
-
Fferi50
Topikgazda
-
föccer
nagyúr
válasz
föccer
#52733
üzenetére
Ez alapján meg fogod tudni csinálni.
Sub Szorzas()Dim Sor As LongDim Oszlop As LongDim S As StringDim Szorzo As DoubleS = "Munka2"Szorzo = Sheets("Munka1").Range("A1").ValueFor Sor = 1 To 20For Oszlop = 1 To 20Sheets(S).Cells(Sor, Oszlop).Value = Sheets(S).Cells(Sor, Oszlop).Value * SzorzoNextNextEnd Sub -
föccer
nagyúr
válasz
lanszelot
#52732
üzenetére
Alapvetően egy objektum orientált visual basic-ként kell kezelni.
Makróbarátként kell menteni a munkafüzetet, bekapcsolni a fejlesztő eszközök menüt. A legegyszerűbb, ha kiraksz egy gombot, amihez a megírt makrót rendeled.
alt+F11 bill kombinációval hívod elő a VBA editort. Bal oldalt a modul-ba dupla katt és már lehet is írni a kódot.
Ha visszalapozol ott a fórumba, sok-sok megírt kódot látsz.
Minden makró sub - end sub kód közé kell rakni. 1 modulba mehet több sub is.
egy cella értékét a sheets("munkalap neve").range("cella hivatkozás").value objektumban éred el vagy a sheets("munkalap neve").cells(sor azonosító, oszlop azonosító).value objektumban.
Változó deklaráció a Dim változó név As tipus utasítással. Ciklusok mennek. For - Next fog neked kelleni. feltétel keelés simán If - then - else - end if kulcsokkal mennek.
Operátorok közül a megszokottak.
Érték adás klasszikusan jobbról balra végrhajtás van i = i+1. Ugyan ez megy a cella értékeinek a megadásával is működik.
sheets("munkalap1").range("A1").value =sheets("munkalap1").range("A1").value + 1
Ha programozásba otthon vagy, akkor ezzel nagyjából már menni is fog ennek a feladatnak am egoldása.
Ma készen vagy a makróval, akkor VBA mecsok, jobb klikk a gombon és makró hozzárendelése. Ott lesz a megírt sub neve. Kijelölöd, okézod és már kattinthatod is a gombot.
-
föccer
nagyúr
válasz
lanszelot
#52728
üzenetére
Az excel egy program. Alapvetően egy keretrendszer, amin belül a program adta korlátok között azt csinálsz amit akarsz.
Alapadat - > algoritmus -> eredmény
Ez az excel működési alapelve. Amit te szeretnél, hogy az alapadtba visszatöltse neked az eredményt, ami viszont logikailag hibás és/vagy adatvesztéshet és/vagykörkörös hivatkozáshoz és a futásban stack overfow-ba esne.
Ahogy Fferi írta, amit szeretnél arra nincs felkészítve az excel. Nem véletlen. Ellenben meg lehet oldani sok máshogyan. Megoldásból megírtunk többet is. Néhány kattintás. Ha szeretnéd segítünk a makró felprogramozásában és akkor menni fog az is. Ehhez viszont kellene néhány konkrétum. Elnevezések, munkalap nevek, pontos cella pozíciók.
A leírtak alapján a makró megírása sem nagyon nagy feladat, még én is meg tudom csinálni 1-2 óra alatt

üdv, fg
-
lanszelot
addikt
válasz
Fferi50
#52729
üzenetére
A szabályoknak megfelelően írtam.
Igen, írja felül, azt akarom, de használja a benne lévő értéket a felülírásnál.
Ez nem korlát, ez hiányosság. Méghozzá óriási.Amit írtam nagyon életszerű. Ha egy 8 általános betanított munkás elé tolsz egy papírt ahol 2 számsor van, belegabalyodik.
Ha csak 2 számsor van, nincs mit kevernie.
Ha nyomtatasnál véletlen nem kapcsolod ki az alap számsort.... stb
Csak problémát okoz.
Hibát az alapoknál kell elhárítani.
Hogyan tudom makróval megcsinálni?
-
Fferi50
Topikgazda
válasz
lanszelot
#52728
üzenetére
Szia!
"+A1*(aktuális cella tartalma) - jelentése;
Ahol C1 cella értéke 24
+A1*24 -re valtozik a cella értéke
Ahol D1 cella értéke 47
+A1*47 -re valtozik a cella értéke
Stb."
Erre kiváló az irányított beillesztés - szorzás =>ahogyan Delila írta az 52718#-ban. A tartományokat egyszerre is kijelölheted, összefüggőket egérrel simán, a külön-külön levőket egér és Ctrl -al.
DE: Ha változtatod az A1 értékét, akkor ismét meg kell csinálni ugyanezt. (Más kérdés, hogy honnan és hogyan kerül új érték a C1,D1 stb. cellákba előtte.)
Mivel nem írhatsz egy cellába értéket és képletet is egyszerre!!! Ha képlet volt és felülírod értékkel, a képleted elvész. EZ A SZABÁLY!
Az Excel annyit tud, amennyit itt leírtunk neked. Amit képlettel nem lehet megoldani, az makróval még megoldható.
Ennyi! Szerintem engedd el a problémát. Részemről elengedtem.
"Mi van ha valaki dolgozik is vele?"
Tudomásul veszi a rendszer korlátait vagy keres olyan rendszert/programot , amiben megoldható a feladat. Amit leírtál az egyébként nem életszerű, az alapadatokat általában mindenki szereti látni és megőrizni.
Üdv.
Ps. A semmit sem érő munkalapok/sorok teszik lehetővé, hogy megoldd a feladatot, ezek egyébként el is rejthetők a felhasználók elől. -
lanszelot
addikt
válasz
föccer
#52727
üzenetére
Először is köszönöm szépen a válaszokat

Rengeteg munkalap van, és az extra semmit sem erő munkalapok csak zavaró, mint a felesleges sorok.
Ha csak a gyereknek oldasz meg egy szöveges feladatot excel-el akkor tényleg felesleges a makro.
De amikor 100 munkalap, és minden munkalapon rengeteg szám, ahol ugyanazt a műveletet kell újra és újra és újra bevinni.
És ez nekem nem munka. Csak hobbi.
Mi van ha valaki dolgozik is vele?
Tehát ez 2024-ben édes kevés.
Hamarabb írok meg egy honlapot.Fferi50:
+A1*(aktuális cella tartalma) - jelentése;
Ahol C1 cella értéke 24
+A1*24 -re valtozik a cella értéke
Ahol D1 cella értéke 47
+A1*47 -re valtozik a cella értéke
Ahol E1 cella értéke 63
+A1*63 -ra valtozik a cella értéke
Stb -
föccer
nagyúr
válasz
lanszelot
#52725
üzenetére
1. munkalap
A1 cellába az ominózus szám2. munkalap
bármilyen tartományba az alap számok, amiket meg kell szoroznod, A1-től. Ide tetszőleges módon beviheted ezeket, bármilyen mennyiségben, csak legyen egy "maximum sor és oszlop"
3. munkalap. Ide jönnek az eredmények. A1 cellába =HA(Munkalap2!A1="";"";Munkalap2!A1*Munkalap1!$A$1)
Ezt a képletet 1x kell kiterjesztened az egész tartományra a 3. munkalapon és mindig a munkalap1 A1 cella értékével fogja kiszorozni a munkalap2-re betett adatokat. A munkalap3 pedig az eredményt fogja tartalmazni, ahonnan tetszőlegesen kimásolhatod.
A számolótáblát megcsinálni gyakorlatilag bárhány cellára kb 20 másodperc, utána bárháynszor használhatod, csak a munkalap1 és munkalap2 alapadatait kell változtatodnod.
Tök felesleges erre programot írni, meg makrózni. Ha minimálisan is rutinban vagy, tényleg 1 perc megcisnálni.
-
Fferi50
Topikgazda
válasz
lanszelot
#52725
üzenetére
Szia!
"De az alap számokra nincs szükségem, csak zavaró tényező, ha ott van."
És amikor megváltoztatod az A1 tartalmát, akkor honnan fogja tudni az Excel, hogy mit szorozzon meg vele? Hiszen az alap számok a szorzás után eltünnek! a leírásod szerint.
Szerintem még mindig 2 malomban őrölünk, ezért jó lenne ha példával és képpel ! illusztrálnád a problémádat: Kiindulási helyzet és elérni kívánt eredmény megmutatásával.
"Mint ha programoznál.
Ezekhez a cellákhoz add hozzá a szorozva A1 cellaval képletet."
Csakhogy más a programozás és más a képlet!!!
A makróban/programban megteheted, hogy egy cella értékét megváltoztatod - akár képlettel, akár konkrét átírással, írhatsz bele új képletet és visszaírod az adott cellába.
A munkalapon, képletben ilyen lehetőség NINCS, saját magára nem hivatkozhat a cellában levő képlet! Ez egy szabály, amit vagy elfogadsz és aszerint használod az Excelt vagy elfelejted és nem képletezel hanem programozol.
Ezért kell használni ilyen esetekben segédtartományokat (oszlopot v. sort), ahova bekerül az a képlet, amellyel az általad alap számoknak nevezett értékekre és az A1 cellára hivatkozunk. Az alap oszlop marad változatlan, a segédoszlop pedig a képletnek megfelelően változik.
A képletet pedig lehúzással, másolással (irányított beillesztés - képlet), sőt akár villámkitöltéssel is átírhatod.
Sajnos úgy látom, olyan funkciót próbálsz az Excellel képletben megoldani, ami nincs - bármennyire is furának és hiányosságnak tartod.
Vannak a rendszerben szabályok és azok szerint kell használnunk.
Üdv. -
lanszelot
addikt
válasz
Fferi50
#52722
üzenetére
Nagyon szépen köszönöm a választ.
Megpróbálom máshogy leírni:
Van rengeteg számom
Mindegyikkel pontosan ugyanazt a műveletet kell elvégezni: megszorozni A1 cella tartalmával.
Csak A1 cella tartalmát változtatom a beírás után.
Tehát minden cellában be kell írnom ugyanazt a képletet milliószor.
De az alap számokra nincs szükségem, csak zavaró tényező, ha ott van.Amit szeretnék: beírni a számokat és utólag ráhúzni a képletet, hogy ne kelljen annyit pötyögni.
Mint ha programoznál.
Ezekhez a cellákhoz add hozzá a szorozva A1 cellaval képletet.Értem, hogy be tudom zárni a sort, és nem látszik.
Azt is, hogy be tudom egyesével pötyögni.
Vagy a képleten ctr+c és ctrl+v , majd átírom a számot, de ez még mindig 90-es évek.
Egy ilyen alap funkció nincs az excelben?
Elkopik a billentyűm, és rengeteg időm megy el pötyögéssel.
Egyazon képletet ráhúzni egy számsorra.
Programkódban csinálok egy tömböt és minden elemét for ciklussal megszorzom egy változó ertékével.
Kész.
Itt is az kellene. Beírom a számokat, kijelölöm, és +A1*(aktuális cella tartalma). Háttérben excel egy for cikkussal megcsinalja.
Ez programozásban a legalja, semmi. Hogy hogy nem tették bele?
Órákat lehetne megspórolni.
"Add formula to the selected cells" - pl ilyen néven
Furának tartom, hogy nincs ilyen.
Félre ne értsétek, nem ellenetek írok. Meg vagyok lepődve egy ilyen hiányosságon.
-
Mutt
senior tag
Szia,
Szerintem az alapokat kell elsajátítani/magabiztossan kezelni és utána lehet elővenni a haladó dolgokat, amelyek véleményem szerint az alábbiak lehetnek hasznossági sorrendben:
- táblázatok,
- kimutatás/pivot,
- Solver,
- tömbfüggvények (annó CSE bevitel, pl. SZORZATÖSSZEG/ÖSSZESÍT mindenre),
- Power Query/Power Pivot,
- dinamikus tömbök (spill, @ és # jelentése) illetve újabb függvények (LET, LAMBDA, XLOOKUP/XMATCH/BY...)
- VBA,
- DAX függvények (itt Power BI felé lehet kacsingatni)
- Office Script illetve Py szkript (ezek MS365-ben),
- Excel4 függvények (talán egyedül EVALUATE)Szerintem ne azt keresd, hogy mi a legfrissebb, mert nagyon sokan még régi verziójú Excelt használnak, nekik is mindig van megoldás a problémára. Az elmúlt években a Microsoft önti az újabb függvényeket az Excelbe, de ezek elterjedése lassan megy és nincs is mindenkinek szüksége rá.
pl. mindenki adott össze már számokat Excelben, 2 éve van a REDUCE amivel lehet összeadni is, de nem hinném hogy a SZUMHATÖBB (eseteg SZORZATÖSSZEG/ÖSSZESÍT) helyére fog valaha is lépni.Ha a fenti listában lévő dolgok újdonságok neked, és nincs időd mindet megismerni, akkor Power Query-vel kezdj szerintem.
Youtube-on én az alábbi csatornákat tudom javasolni:
1) Mike Girvin: https://www.youtube.com/@excelisfun
Erőssége: tömbfüggvények (kb. 4 évvel ezelőtt, van is könyve róla), az elmúlt időszakban főleg Power Query/Power Pivot/DAX és az új Excel függvényeket használja.Sok hosszabb videója van, ami alapokat magyaráz hogy a haladó dolgokat meg lehessen érteni.
2) Bill Jelen aka MrExcel: https://www.youtube.com/@MrXL
Erőssége: rövid videók a legfontosabb változásokról, illetve ha 4-5 évet visszamész a csatornán, akkor tipikus problémákra mutat megoldásokat. volt egy Duelling Excel sorozat, amiben jó példák voltak.
3) Mynda: https://www.youtube.com/@MyOnlineTrainingHub
Erőssége: változatos videók, alaposan bemutatva adott függvényt vagy problémát.
4) VBA-hoz Paul csatornája: https://www.youtube.com/@Excelmacromastery
Kezdőknek jó a csatorna, mert tippeket ad hatékony kód íráshoz. Hátránya, hogy szinte mindig vagy collection vagy class module lesz a vége.
5) DAX/Power BI/Power Query:
- Goodly: https://www.youtube.com/@GoodlyChandeep
- Marco/Alberto: https://www.youtube.com/@SQLBI
- BAS: https://www.youtube.com/@HowtoPowerBIüdv
-
Fferi50
Topikgazda
válasz
lanszelot
#52721
üzenetére
Szia!
Most, hogy mégegyszer figyelmesen elolvastam amit írsz, az a válaszom, hogy ez így nem megoldható képlettel:
"Ugyanazt a képletet kellene hozzá adom különböző cellákhoz:
+A1x(aktuális cella tartalma)"
Egy adott cellába nem írhatsz olyan képletet, ami saját magára (aktuális cella!) hivatkozik. Ill. írhatsz, de az hibás eredményt, leginkább 0-t fog eredményezni.
Az A1 x aktuális cella eredményét egy harmadik cellába kell képletezned! Ezután a harmadik cella értéke automatikusan változik, akár az A1, akár az "aktuális cella" értékét változtatod meg.
A javaslat a következő:
Ez a kiindulás.
A következő lépés: B2 cellára Ctrl+C (másolás)
Utána kijelölöd ahova szeretnéd a képletet, pl. C2 : D5
Ezután Paste - Paste Special - Formulas Eredmény:
Ezután A1 cella értékét változtatom 10-re. Eredmény:
Ha ez így nem működik nálad, akkor szerintem mutasd be legalább képpel, mit szeretnél elérni, mert lehet, hogy félreértünk valamit.
Üdv. -
lanszelot
addikt
-
Rhair
csendes tag
Sziasztok
Tudnátok mondani könyveket, weboldalakat, esetleg yt csatornákat amik haladó szinten foglalkoznak az excellel és nem elavultak?
Illetve van valakinek tapasztalata exceltitok v excelneked oldalakkal és az ott elérhető könyvekkel?
Köszi -
-
csongi
veterán
Sziasztok!
2019 Office
Hogyan lehet megoldani ezt?
Nem tudom jobban leírni
-
lappy
őstag
válasz
Delila_1
#52706
üzenetére
$A1$1*C1

lanszelot
C2 cellába beírod a képletet ha erre ráállsz akkor a jobb alsó sarokban lesz egy fekete kereszt ekkor megfogod és végig húzod a Z oszlopig
Ezután kijelölöd a kapott értékeket majd másolás a beillesztès pedig ugy történik hogy jobb gomb es csak az értékeket másolja be -
-
lanszelot
addikt
Hello,
Van egy szám sorom C1 - től Z1 -ig.
Mindegyik számot szeretném A1 értékével megszorozni, de úgy, hogy nem külön cellákba
Azaz a
C1 eredeti értéke: "34"
C1 módosított értéke "+34*A1"
Azt a módszert tudom, hogy egyesével átirom .
Lehet e egyszerűbben? -
Delila_1
veterán
válasz
karlkani
#52701
üzenetére
Szia,
Indítás előtt kijelölheted a cellákat.Range("A2, B2:D8").Select, de lehet "gyalogosan" is.Sub Megjegyzes()Dim CV As ObjectFor Each CV In SelectionIf Not CV.Comment Is Nothing Then CV.Comment.DeleteCV.AddCommentCV.Comment.Text "megjegyzes"CV.Comment.Shape.TextFrame.Characters.Font.Bold = TrueCV.Comment.Shape.TextFrame.AutoSize = TrueNextEnd Sub -
karlkani
aktív tag
válasz
Fferi50
#52684
üzenetére
Szia!
Megcsináltam a megjegyzést makróval, működik.
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C1:C2")) Is Nothing Then
Call Megjegyzes
End If
End SubSub Megjegyzes()
With Range("A1")
If Not .Comment Is Nothing Then .Comment.Delete
.AddComment
.Comment.Text "megjegyzes"
.Comment.Shape.TextFrame.Characters.Font.Bold = True
.Comment.Shape.TextFrame.AutoSize = True
End With
End SubKéne egy kis segítség. A gondom az, hogy a megjegyzést TÖBB cellába kéne betenni. Néztem pár útmutatót, de nem sikerül a
For Each Cell-t beépíteni, hogy működjön...
Új hozzászólás Aktív témák
- ÁRGARANCIA!Épített KomPhone i5 14600KF 16/32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- HIBÁTLAN iPhone 15 Pro 128GB Natural Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS4226
- LG 39GS95UE - 39" Ívelt OLED / QHD 2K / 240Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
- Eladó Samsung A12 4/64GB / 12 hó jótállás / ÚJ KIJELZŐ
- Apple iPhone 12 Mini 64GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest





Adott a táblázat, a sárga J oszlopba szeretném képlettel belerendezni, hogy megkeresse az I oszlopban lévő értéket az A1:H7 tartományba és a mellette jobbra lévő cellát kapjuk értékül. (pl.: J28 cellába legyen írva, hogy eper)











