- Radeon RX 9060 XT: Ezt aztán jól meghúzták
- Atomenergiával dübörögnek tovább az Amazon adatközpontok, SMR-ek is jöhetnek
- Macron betiltatná az EU-ban a közösségi médiát a 15 év alattiaknak
- Az NVIDIA ipari AI-felhőt épít a németeknek, együtt az OpenAI és a Google
- Két új Ryzen közül választhatnak a kézikonzolok
-
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
-
m.zmrzlina
senior tag
válasz
Hyper84 #23599 üzenetére
A "torolni " munkalap A oszlopába nem a s01... stb-t írod hanem az A01.... stb-t és a
If Application.WorksheetFunction.CountIf(rngTorolni, rngCella) = 1 helyett
If Application.WorksheetFunction.CountIf(rngTorolni, rngCella) = 0 lesz
A többi ugyanaz.
Azt gondolom mondani sem kell, hogy legyen a fáljból biztonsági másolatod. -
Hyper84
csendes tag
válasz
m.zmrzlina #23598 üzenetére
Ezt a fordítva dolgot leírnád még nekem légy szíves és igérem befejeztem?
-
m.zmrzlina
senior tag
válasz
m.zmrzlina #23597 üzenetére
Ehhez a módszerhez mindenképp kell egy tartomány amiben a "halálra ítélt" azonosítók vannak.
Meg lehet fordítva is csinálni de akkor a maradó azonosítók listája kell és a Countif() nulla értékénél kell törölni.
Ugyanaz csak pepitában.
-
Hyper84
csendes tag
válasz
m.zmrzlina #23593 üzenetére
Vagy meg is lehetne fordítani a dolgot, az nem lenne programozás oldalról egyszerűbb, ha azt mondanánk, hogy mindent töröljön kivéve azokat az oszlopokat amik nekem kellenek, jelen esetben A01, A02...stb.
Még ez így jobb is lenne nekem ugyanis a tábla elején vannak még felesleges oszlopok, csak gondoltam azt kézzel kitörlöm.
-
Hyper84
csendes tag
válasz
m.zmrzlina #23593 üzenetére
Nagyon köszi ez így már majdnem jó is lenne, csak úgy nem lehet ezt megoldani, hogy ahogy az én táblám látod abból a makró futtatásával törölje a felesleges oszlopokat?
Mert azt hogy külön meg kell adnom a törlendő oszlopok értékeit, az nekem nagyon sok időt venne igénybe ugyanis ez az S01, S02...ez egészen S99-ig tart és ilyen excelből van vagy 30 db.
-
Fferi50
Topikgazda
válasz
Carasc0 #23589 üzenetére
Szia!
Megnyitás előbb kikapcsolod az automatikus számolást a menüből. Megnyitás után visszakapcsolod.
De akkor meg a szám beírása után lesz hosszú idő, amíg "magához tér" a fájl.
Szerintem mindenképpen vizsgáld meg, hogy minden képletre szükséged van-e és abban a formában.Üdv.
-
m.zmrzlina
senior tag
válasz
Hyper84 #23592 üzenetére
1. Létrehoztam egy munkalapot a "torolni" néven
2. Ennek a munkalapnak az A oszlopába felvittem azokat az elemeket amelyeknek az oszlopát törölni kell
3. A munkalap amin a törlendő adatok vannak "adatok " nevet kapott
4. A For Each sor végén lévő Range("A1:Z1") azt a tartományt jelöli ameddig a te adataid tartanak az "adatok" munkalapon.Sub oszlop_torol()
Dim rngTorolni As Range
Dim rngCella As Range
Dim wsAdatok As Worksheet
Set wsAdatok = ThisWorkbook.Worksheets("adatok")
Set rngTorolni = ThisWorkbook.Worksheets("torolni").Range("A:A")
For Each rngCella In wsAdatok.Range("A1:Z1")
If Application.WorksheetFunction.CountIf(rngTorolni, rngCella) = 1 Then
rngCella.EntireColumn.Delete
End If
Next
End Sub -
Hyper84
csendes tag
válasz
m.zmrzlina #23591 üzenetére
-
m.zmrzlina
senior tag
válasz
Hyper84 #23590 üzenetére
Én eltárolnám egy oszlopba azokat a fejlécelemeket amelyek oszlopát tötölni kell majd egy for each next-tel és egy =CountIf()-fel végigmennék a fejlécen. Ahol a =CountIf() 1-et ad vissza ott törölném az egész sort.
Ha teszel be egy képet a munkalapodról (vagy legalább leírod, hogy hogyan néz ki) konkrétabb is tudok lenni.
-
Hyper84
csendes tag
Eddig jutottam
Sub Oszlop_Torlese()
Y = False
I = 1
For xCounter = 1 To Columns.Count
If Y = True Then
Cells(I).EntireColumn.Delete
Else
I = I + 1
End If
Y = Not Y
Next xCounter
End Sub -
Carasc0
őstag
Megoldottam közbe...
-
Hyper84
csendes tag
Sziasztok,
Olyan problémával kapcsolatban szeretném kérni a segítségeteket, hogy adott egy táblázat, amiből azokat az oszlopokat szeretném, hogy törölje a makró aminek az első sorában az alábbi értékek valamelyikét találja: S01, S02...S099-ig.
Nagyon kezdő makrós vagyok, szóval ha lehetőség van rá teljes makrót írjatok legyetek szívesek amit már csak be tudok illeszteni a helyére.
köszönöm előre is,
CsabiHT -
Carasc0
őstag
válasz
Fferi50 #23586 üzenetére
Szia!
Köszi a lehetőségeket, de az elsőt nem igazán értem. Gond az hogy a nyilvántartás folyamatosan lenne feltöltve és amint valaki felvísz egy sort abban a pillanatban megindul az automatikus számolás a megfelelő helyen és íródnak át a cella értékek. Ez muszáj hogy működjön hiszen ezért csináltam. Ha kikapcsolom az automatikus számolást akkor ez megszűnik?
Amúgy én nem makrózom arra sajnos nincs időm....Hol tudom kikapcsolni az automatikus számolást?
-
Fferi50
Topikgazda
válasz
Carasc0 #23585 üzenetére
Szia!
Az egyik gyorsítási lehetőség az, hogy kikapcsolod az automatikus ujraszámolást. Amikor változtatsz valamit, akkor kézzel számoltatsz (Természetesen ez makróból is megy mindkettő.) Az Excelt azelőtt állítsd át kézi számolásra, mielőtt behívod a munkafüzetet. (Makróban: application.calculation= és innen felajánlja a lehetőségeket).
A másik, hogy végiggondolod, melyek azok a képletek, amelyeknek az eredménye frissítés. Ezek általában olyan képletek, amelyek rendszer változó dolgokra vonatkoznak pl. ilyen az indirekt, az offset meg még van egy pár belőle. Ezek minden egyes cella megváltozásakor azonnal újraszámítódnak, akkor is, ha nem a "hozzájuk tartozó cella" változott.
Harmadik dolog, a képeket biztosan nem éri meg "belegyömöszölni" az excelbe. Tedd be őket egy adott könyvtárba és a programban csak a hivatkozás kell bele, az excel betölti és utána el is tudod vele felejtetni.
Ugyanez vonatkozik nagytömegű szövegre (pl. help, magyarázat). Ezt is bele lehet tenni egy külön fájlba.Ha megnézed tömörítővel pl. zip, abból is kiderülhet, hogy melyik rész az ami "nyomja" a területet.
(fájl kiterjesztést átírod zip-re utána a zip tömörítővel meg tudod nézni, ki is tudod tömöríteni egy külön helyre azt, amire kíváncsi vagy. Arra vigyázz, hogy ne szerkessz bele, mert akkor baj lehet belőle. Ajánlatos mindezt a fájl másolatával megcsinálni.) Ha nem "rondítottál bele", akkor a visszanevezés után ugyanúgy lehet vele dolgozni, mint azelőtt.Üdv.
-
Carasc0
őstag
Sziasztok!
Köszönöm az előzőeket, alighanem a transzponálás megoldás az jó lesz. Viszont van egy súlyos gond. A nyilvántartó rendszerem eddigi mérete 16MB ebbe semmilyen importált kép nincs csak több ezer felhasznált cella. A gond az hogy bazi lassan indul el (tehát mikor rákattintok az állományra hogy töltsön be az Excel). Nagyon lassan tölti be... Ezen nem lehet valahogy segíteni? Valamit kikapcsolni vagy más formátum akármi....
Előre is köszönöm!
-
Delila_1
veterán
válasz
nebulo0128 #23582 üzenetére
Ha PowerPoint-tal próbálkoztál, akkor jó lesz a Fényképezőgép funkció. Kiteheted az ikonját.
2003-es verzióig Testreszabás, Parancsok fül, Eszközök kategória. A jobb oldalon megjelenő ikonok közül a Fényképezőgép-ét felhúzod az ikonok közé.
2007-től Gyorselérési eszköztár, További parancsok, a Választható parancsok helye legördülőből a Minden parancs-ot választod. Az alatta lévő táblába lépve egy F nyomására az első f-fel kezdődő parancsra lépsz, innen kikeresed a Fényképezőgép-et. A Felvétel gombbal átmásolod a jobb oldali táblába. OK után megjelenik a Gyorselérési eszköztáron.
Alkalmazása:
Kijelölöd a tartományt, amit mindig látni akarsz, majd az ikonra kattintasz. Ekkor szálkereszt alakú lesz az egér mutatód, ezzel rajzolsz egy négyszöget. Módosíthatod a szokásos módon a méretét. Olyan helyre tedd, ami szem előtt van, pl. a felső sorokba, amiket rögzítettél az ablaktábla rögzítése funkcióval.Amint változtatsz a kijelölt táblában valamit, azonnal látod az új értéket a fényképezőgép ablakában.
-
Thrawnad
senior tag
válasz
nebulo0128 #23582 üzenetére
Kijelzőn gondolom csak az eredmény van fenn.
Én csinálnék egy táblát amiben a makró mondjuk percenként, vagy ahogy szükséges megnyitná a bemeneti táblát és magába másolná az eredményeket, majd becsukná.
Így annak a helyére ami a bemenet be lehet összeomlás nélkül másolni a filet a frissítések közt.
Egy külön példányon meg dolgozhatsz zavartalanul.
Thrawnad -
nebulo0128
csendes tag
Sziasztok!
egy nagy excel dokumentumot szeretnék megjeleníteni egy kijelzőn, ami UVNC terminálon kapja a jelet. Azon a kijelzőn csak megjelenne a táblázat és automatikusan frissülne, ettől függetlenül másik gépen szeretnék dolgozni benne. (szerveren van a fájl).
összességében van olyan program vagy bármi megoldás, amivel így meg tudnám jeleníteni külön a táblázatot?
úgy hogy közben a szerkeszthetőség megmaradjon.
a táblázat megosztása nem játszik, összeomlanak tőle a képletek, elég bonyolult tábláról van szó.
powerpointból próbálkoztam táblázat objektumként csatolásával.esetleg valakinek valami egyéb ötlete?
-
baggerhun
csendes tag
Sziasztok!
Excel dinamikus diagram témakörben lenne kérdésem.
Azt már kibogarásztam, hogy ha táblázat formázást adok meg, akkor a diagram bővülni fog automatikusan, ha új sort viszek a táblázatba.A táblázatom egy dátum oszlopot és egy érték oszlopot tartalmaz.
Azt kellene megoldanom, hogy a diagram mindig az aktuális naptól (ma) számított 180 (tehát összesen 180 sornyi) napra visszamenőleg jelenítsen meg csak adatot. Megoldható ez valahogy?Köszönöm,
Bagger
u.i.: Ha erről van már tutorial is, link is megfelelő lesz válaszként. köszi még1x
-
Fferi50
Topikgazda
válasz
m.zmrzlina #23575 üzenetére
Szia!
Azért van ez, mert a sima range és cells mindig az AKTÍV munkalapra hivatkozik, ha nincs előtte a pontos megjelölés.
Tehát a második: wsKabelo.Range(wsKbelo.Cells(2, intDigitlista_oszlop), wsKabelo.Cells(intListahossz, intDigitlista_oszlop))formában működik megfelelően. (Én is bele szoktam néha esni ebbe a hibába....)
Az első viszont a betűkkel direktben a wsKabelo -ra hivatkozik.
Üdv.
-
Fferi50
Topikgazda
válasz
Carasc0 #23572 üzenetére
Szia!
Csináld meg a képletet vizszíntesen: =AA$100, ezt húzd el vizszintesen addig, ameddig szükséged van rá.
Utána: Másolás - uj cella kijelölése az oszlopban - irányított beillesztés: képletet és transzponálás ! A képleted számodra megfelelően másolódik át lefelé.
Üdv.
-
m.zmrzlina
senior tag
Így próbálok feltölteni adattal két tömböt:
arrAnalist() = wsKabelo.Range("A2:A" & intListahossz)
arrDigilist() = wsKabelo.Range(Cells(2, intDigitlista_oszlop), Cells(intListahossz, intDigitlista_oszlop))Ha nem az a munkalap aktív amelyikről az adatokat a tömbbe kell írni akkor a második sornál a "worksheet objektum range metódusa hibás" hibaüzenetet kapom. Az első sor gond nélkül lefut.
Ha a két sor elé beteszem, hogy:
wsKabelo.Select
akkor mind a két sor hiba nélkül megy.Mi lehet az oka?
-
-
Carasc0
őstag
Sziasztok!
Nagyon köszönöm a tippeket mindenképp kifogom őket próbálni.
Másik kérdés. Ez már könnyebb de sztem ezt nem lehet megoldani csak kézzel. Azt szeretném megoldani, ha függőlegesen másolok egy hivatkozott cellaazonosítót akkor ne a sorazonosító változzon hanem az oszlopok azonosítója. PL.
AA100
AB100
AC100És ha lefele másolom akkor folytassa a betűsorszámozást, a szám azonosító maradjon. Vagyis ahogy én haladok lefele, a hivatkozási keret úgy menjen jobbra.
-
bteebi
veterán
válasz
Carasc0 #23567 üzenetére
1. Gagyi és jelen esetben valószínűleg nem túl gyors, de egyszerű megoldás, ha lehúzod a képletet, és a megfelelő részt lecseréled Ctrl+H-val (mondjuk a C-t D-re, de ha ez soronként változik, akkor nem jó). Feladattól függően elég macerás is lehet (itt most valószínűleg túl körülményes lenne).
2. Makróval. Kiindulásnak valami ilyesmi jó lehet, ezt kell kicsit átírnod:Dim i As Integer
For i = 1 To 40
Cells(i, 2).Value = WorksheetFunction.If(Sheets("Nyilvántartás").Range("C2") = Range("CX1"), WorksheetFunction.If(Sheets("Nyilvántartás").Range("D2") >= Range("K2"), WorksheetFunction.If(Sheets("Nyilvántartás").Range("D2") <= Range("K8"), 1, 0), 0), 0)
Next iHa a Range("hivatkozás") helyett mindenhol a Cells(sor, oszlop)-ot használod, akkor azt úgy paraméterezed ciklusban, ahogy csak szeretnéd, és akkor könnyen megvan az egész. A fenti példában a B1-es cellába (ami a Cells(1,2) cella) írt képlet van.
-
m.zmrzlina
senior tag
-
Carasc0
őstag
válasz
slashing #23566 üzenetére
Továbbra sem ez a gondom. Máshogy teszem fel a kérdést:
Hogy lehet úgy képletet másolni tetszőleges irányba hogy a képletnek csak az a része változzon amit én a másolandó képletbe megváltoztattam. Írok rá extra primitív példát:
10
11
12
13
14
15
16Tegyük fel megváltoztatom a 10-et 20-ra. Ha másolnám a 20-at akkor így legyen az eredmény:
20
21
22
23
24
25
26Tehát csak az a része változzon amit én megváltoztatok....többi maradjon a helyén.
-
slashing
senior tag
válasz
Carasc0 #23565 üzenetére
Azért nem változik a "C" "D"-re ha elhúzod a képlet mert a C oszlop abszolút hivatkozva van tehát az mindig fixen C lesz a képletben, szedd ki előle a $-jelet és úgy húzd el a képletet és ha mindig a második sorból kell az adat akkor meg oda rakd a $-t.
A másoláson remélhetőleg a fogd és húzd módszert érted nem a ctrl+c/v-t
-
Carasc0
őstag
Sziasztok!
Akkor nem volt eléggé érthető. Én kérek elnézést. Lássunk akkor egy egyszerű példát:
=HA(Nyilvántartás!$C2=$CX$1;HA(Nyilvántartás!$D2>=$K$2;HA(Nyilvántartás!$D2<=$K$8;1;0);0);0)
=HA(Nyilvántartás!$C2=$CX$1;HA(Nyilvántartás!$D2>=$K$9;HA(Nyilvántartás!$D2<=$K$15;1;0);0);0)
Az első képlet tegyük fel az A1, a másik A2 cella értéke. Na most ezt a 2 cellát lemásolom egy másik két cellába. Legyen mondjuk B1 és B2. Felülírom a B1-es cellába lévő képletben a &C2-t mondjuk &D2-re. Így most a B1 cellába egy módosított képlet van. Ezt úgy akarom átmásolni a B2-be, hogy ne az egész képlet változzon hanem csak amit átírtam. Mert ha simán átmásolom akkor tönkremegy az egész, hiszen nézzétek meg a belső HA függvényt mind2 képletben. Más az intervallum vizsgálat.
Remélem így okés...
-
slashing
senior tag
válasz
Carasc0 #23562 üzenetére
Nem teljesen egyértelmű de valószínűsítem hogy a relatív és abszolút hivtakozás kell neked:
Pl. Abszolút oszlop és abszolút sor $A$1 mindig erre a cellára fog hivatkozni a képlet ha lehúzod
Pl. Relatív oszlop abszolút sor: A$1 mindig az adott oszlop 1. cellájára fog hivatkozni ha elhúzod a képletet
stb.. stb...F4 billentyűvel tudod váltogatni gyorsan hogy melyik legyen relatív vagy abszolút...
Ha csak egy cellahivatkozást akarsz módosítani ahogy lehúzod a képletet akkor azon kívül mindegyik cellát rakd abszolútra...
Ha nem érthető keress rá az excel súgóban szerintem az egyik legérthetőbb súgó amit Microsoft terméknél láttam....
-
Carasc0
őstag
Sziasztok!
Iskolai nyilvántartást készítek excelben nagyon maszek módszerrel, tehát biztosan van rá jobb megoldás is de most ez lesz. Szeretném a munkámat kicsit felgyorsítani. Leírom a problémát:
Adott egy képlet egy sorba, mondjuk 40 cella hosszan. Mindegyik cellába más más képlet van. Tegyük fel ezt a 40 cellányi cellát még egy sorba le akarom másolni. Eddig teljesen könnyű. A lemásolt 40 cellányi képletekbe külön-külön csak 1db cella hivatkozást akarok lecserélni. Az a bajom hogy ezt egyesével kell megcsinálnom. Ezt nem lehet valahogy gyorsítani?
Másképp tehát a kédés: Nem lehet egy adott képletbe úgy megmásítani egy cellahivatkozást, hogy ha másolnám a képletet a sorba végig, akkor a felülírandó cellákba lévő képletbe csak az az 1 cella hivatkozás változzon meg.
Ha nem volt érthető leírok egy konkrét példát is.
Előre is köszönöm.
-
samfishR
senior tag
Sziasztok,
Adott 3 excel munkafüzet, "A" "B" és "C". "A" munkafüzet egy részte át van hivatkozva "B"-be, amiből szintén egy rész át van hivatkozva "C"-be. Ha "A"-ban módosítok valamit, akkor annak "C"-ben is meg kellene mutatkoznia, mivel számításokról van szó. Tehát A-ból egy számítás végeredménye van áthivatkozva B-be ahol ez a végeredmény felhasználásra kerül egy újabb számításban és ennek az újabb számításnak a végeredménye van áthivatkozva C-be, ahol az újból fel van használva..... Remélem érthetően írtam le. A problémám az, hogy ha A-ban módosítok valamit, akkor az C-ben nem fog látszani anélkül, hogy B-t ne nyitnám meg és menteném el a frissült eredménnyel...Össze lehet valahogy kötni ezeket a fileokat úgy, hogy működjön a hivatkozás? Köszi előre is a segítséget!
-
m.zmrzlina
senior tag
válasz
Mittu88 #23558 üzenetére
Az volt a probléma, hogy volt egy kezdőérték, lefutott a teljes kód aminek során megváltozott és ennek a kódnak egy részét szeretném újra futtatni.
Namármost: a kezdeti értéket nem adhatom meg a részkód futtatásánál mert ha már egyszer lefutott a teljes kód akkor már nem megyek semmire azzal az értékkel. Ha viszont itt adok értéket neki akkor meg a teljes kód futtatásánál kavar be.
De mindegy is Fferi50 tippje alapján fogok boldogulni a problémával.
Köszi mindenkinek aki segített.
-
Mittu88
senior tag
válasz
m.zmrzlina #23554 üzenetére
Az fog is változni, de nem az a problémád, hogy volt, amelyiknek nem volt kezdőértéke még?
-
Polllen
nagyúr
válasz
m.zmrzlina #23554 üzenetére
És változni is fognak, hiszen bizonyos sub-n belül dolgozol velük.
Ha mindig ugyanaz a kiinduló érték, nincs jelentősége annak, hogy egy sub-bal vagy munkafüzetben adod meg a kiinduló értéket.
Ha viszont az utolsó folyamat értéke kell, akkor is ha aktuálisan az a folyamat nem futott, tehát nem adott értéket, el kell tárolnod az előzőt és azt beolvasni.
-
sedyke
tag
válasz
m.zmrzlina #23550 üzenetére
Azt nem tudom elérni, hogy képlettel a mindig x sorral lejjebb található cellát kapjam eredményül. Manuális persze megtalálom, de több száz is van egy munkalapon belül.
-
Fferi50
Topikgazda
válasz
sedyke #23547 üzenetére
Szia!
Ezt attól függ, hogy milyen "technikával" hoztad létre összesítéseket.
Ha ugyanannyi sorral van lejjebb, használhatod az indirekt függvényt:
pl. Az első sorban = indirekt("munka1!B" & (sor()-1)*X+1) ahol az X az a szám, amennyivel lejjebb van a következő számlaszám. Ezt a képletet húzod végig az oszlopon.
Az összegre hasonlóan, csak nem +1 amit hozzáadsz, hanem az első összegnek a sorszámát (itt 45).Üdv.
-
Mittu88
senior tag
válasz
m.zmrzlina #23552 üzenetére
Modul-on belül deklarálod Sub-on kívül, aztán csinálsz egy Sub-ot, amiben értéket adsz mindegyiknek.
workbook_open-be meg beírod a sub nevét.pl.:
Module-ban:Public pelda as integer
Public peldaketto as stringSub Ertekadas()
pelda = 12345
peldaketto = "egykettoharomnegyot"End Sub
ThisWorkBook-ban meg:
Private Sub Workbook_Open()Ertekadas
End Sub
Bocsi, ha nem elég érthető, szaknyelvben nem vagyok jó (még)
-
m.zmrzlina
senior tag
válasz
sedyke #23547 üzenetére
A tiédhez nagyon hasonló probléma volt itt.
-
Mittu88
senior tag
válasz
m.zmrzlina #23546 üzenetére
Az esetleg nem lenne elegánsabb, ha csinálnál a module-ban egy eljárást, ami csak értéket ad a public változóknak, az eljárást pedig a Workbook_Open eseménynél meghívod?
Ergo fájl megnyitásakor kapna mindegyik public változó értéket és utána már használhatnád. -
Fferi50
Topikgazda
válasz
m.zmrzlina #23546 üzenetére
Szia!
Így van, elég így csinálni, de ennyi viszont kell.
Üdv.
-
sedyke
tag
Sziasztok!
Van egy Excel munkalapom, melyet A/4-es oldalakra osztottam fel. Minden oldal egy külön számla, de azonos felosztással. Hogyan tudom kiszűrni belőle a számlaszámokat és a végösszegeket egy külön táblázatba? Minden számlánál a két adat ugyanott helyezkedik el, de értelemszerűen mindig ugyanannyi sorral lejjebb. Az elsőnél a számlaszám a B1-es cellában van, a végösszeg a J45-ban, másodiknál a B50 és J96 és így tovább.... -
m.zmrzlina
senior tag
válasz
Fferi50 #23545 üzenetére
Jól gondolom, hogy ha a munkalapra kiírós megoldást választom akkor az objektumváltozókat sem kell Public-ként deklarálni csak minden eljárás elején (persze csak ami használja ) értékadással kell kezdeni? Pl:
Dim wsOsszesito as Worksheet
.
.
Sub makro1()
Set wsOsszesito = ThisWorkbook.Worksheets("összesítő")
.....
End Sub -
Fferi50
Topikgazda
válasz
m.zmrzlina #23542 üzenetére
Szia!
Paraméteresen is definiálhatod az egyes makrókat és akkor minden meghíváskor meg tudod mondani neki, hogy melyik változó melyik értékét használja.
pl. sub valami (byval valt1 as string,byref valt2 as integer)
eljárás
end subA byval és byref jelentőségét olvasd el a súgóban, illetve az előző hsz.-ban foglaltak miatt is a változók élettartama (variables scope) részt is.
Egy másik lehetőség:
Az egyes változó értékét "eltárolod" egy munkalap cellájába. Ide írják ki az egyes makrók az értékét és innen olvashatják ki mások az értéket. Ebben az esetben nem kell public változót használnod, sem paraméters meghívást, helyette minden eljárásból kilépéskor utolsó műveletek a változók értékeinek beírása az adott cellákba, az eljárások indulásakor pedig a változókba beolvasod a cellák értékét.Ebben az esetben a cellákban mindig a legutoljára eltárolt érték lesz benne és az olvasható ki, így megoldódik a legutóbbi kérdésedben levő probléma is.
Üdv.
-
m.zmrzlina
senior tag
-
Polllen
nagyúr
válasz
m.zmrzlina #23542 üzenetére
Ha mindig az előző eljárásnál felvett érték kell az újban, akkor public változókat kell használnod. Így adott module-n belül minden sub "látja".
-
m.zmrzlina
senior tag
A következő kérdésem lenne:
Van egy munkafüzetem abban van egy makró ami 4-5 jól ekülöníthető dolgot csinál. Elindítom a makrót szépen lineárisan elejétől a végéig lefut megteszi a dolgát, mindenki örül.
Néha azonban szükség van arra, hogy a teljes makrónak egyes részeit többször, külön is le lehessen futtatni (pl hogy két tartomány egyezőségét leelenőrizze) illetve vannak részek amiket kifejezetten nem szeretnék mindig lefuttatni többször (pl a forrás munkalapok más munkafüzetekből való importálására csak egyszer van szükség)
Az a tervem, hogy a teljes kódot egyetlen modulon belül kisebb eljárásokra szabdalom szét és ezekhez az eljárásokhoz külön parancsikonokat teszek a gyorsindítás eszköztárra.
Itt kezdődik a probléma mivel az egyes eljárások jórészt ugyanazokat a változókat használják.
Milyen tipusú változók kellenek és hogyan kell ezeket az eljárások között adni-venni?
Tudom, ez a téma sokkal bővebb mintsem egy válaszban minden részét ki lehetne vesézni, de nekem már az is sokat segít, ha valaki "irányba állít" és 600 oldal manual helyett csak pl 50-et kell elolvasnom.
-
slashing
senior tag
válasz
PindurAnna #23539 üzenetére
Hát biztos vagyok benne hogy ez nem excel-ben készült hanem word-ben tabulátorokkal.
Excelben egyéni cellaformátummal(cellaformázás/egyéni) lehet csinálni hasonlót a következők beírásával: @ *. ilyenkor pontozva lesz, alsó vonással nem lesz jó mert egyenes vonal lesz belőle...
-
-
zhari
csendes tag
Sziasztok!
Egy adott mappában lévő Excel táblák képlet számítási beállítását szeretném makróval átállítani automatikusra.
Az addig oké, hogy makrót futtatok egy adott mappa összes xls-én. De hogy tudom a képlet újra számítást automatikusra állítani?
Sub LoopThroughFiles()FolderName = "C:\...\"
If Right(FolderName, 1) <> Application.PathSeparator Then FolderName = FolderName & Application.PathSeparator
Fname = Dir(FolderName & "*.xls")'loop through the files
Do While Len(Fname)With Workbooks.Open(FolderName & Fname)
' here comes the code for the operations on every file the code finds
'HERE if you want to execute the second macro for every file in the loop
'ide kéne a beállítás
End With
' go to the next file in the folder
Fname = DirLoop
End Sub
-
nofi
addikt
Sziasztok!
Kaptam egy tervezési számításhoz készített excel-filet. Elindítom és az alábbi üzenet fogad:
Ez a munkafüzet elvesztette a VBA projektjét, az ActiveX vezérlőelemeit és minden programozással kapcsolatos képességét. / Office 2010Ennek mi lehet az oka? Létezik, hogy valaki "védetté" tette?
-
Timyyy
őstag
válasz
m.zmrzlina #23527 üzenetére
Tejóég, nekem ez kínai...
-
gyu84
tag
válasz
Timyyy #23525 üzenetére
Heló!
Én ezt úgy oldottam meg egyszer, hogy a rendes sorszám oszlop mellé beszúrtam még egye, oda pedig a =RÉSZÖSSZEG(102;sorszám első eleme rögzítve:sorszám eleme) képletet húztam végig (102 - Darab). Ez annyit csinál, hogy megszámolja, hogy hány darab szám van az A2-től, így egy sorozatot képezve.
Pl: A2 ben kezdődik a sorszámozás, akkor a B2 képlete: =RÉSZÖSSZEG(102;A$2:A2)
Így ha elrejtesz sorokat, vagy szűrsz akkor automatikusan változik a sorszám, nem kell kézzel újraírni, az eredetit meg elrejted. -
Timyyy
őstag
Sziasztok!
Adott egy névsor, amiben vannak mindenféle adatok, az emberek lefelé sorszámozva.
Nyomtatni akarok, de van pár ember, aki nem kell a nyomtatott listára, ezért az ő sorára rákattintok jobb egérrel, és van az az opció, hogy elrejtés. Szuper, eltűnt, csak a sorszámozás így nem passzol! Ha pl a 4. ember rejtettem el, akkor a 3-as után az 5-ös jön!
Hogyan tudnám ezt úgy kijavítani, hogy ne kézzel kelljen újrasorszámoznom az egészet nyomtatás előtt, aztán vissza, nyomtatás után???? -
m.zmrzlina
senior tag
Szerintem ez a feladat egyszerűen megoldható (feltéve, ha jól értem a problémát).
Tegyük fel, hogy nagyjából úgy néz ki a munkafüzeted ahogy kettővel lejjebb Wyll lerajzolta
Csinálsz egy munkalapot ebbe a munkafüzetbe, legyen a neve mondjuk "összesítő"Erre a munkalapra kialakítod a számodra legmegfelelőbb szerkezetet és a megfelelő helyekre behivatkozod azokat a cellákat aminek a tartalmát látni szeretnéd.
A képen most a cellák képleteit látod de ha beírod a képletetet akkor a hivatkozott cella tartalmát fogod látni.
-
Mittu88
senior tag
Azt hogy lehet megcsinálni, hogy Accessbe becsatolva egy xlsx fájlt a számot ne DUPLA típusúnak állítsa be adott oszlopban, hanem HOSSZÚ EGÉSZ-nek?
Sajnos az "Adatforrás csatolása csatolt tábla létrehozásával" menüpontra kell mennem, hogy mindig frissítsen megnyitáskor, de így nem tudom beállítani, hogy melyik oszlopot minek ismerje fel. Utána tervező nézetben meg nem engedi menteni a módosításokat. -
kutga
félisten
válasz
Mittu88 #23520 üzenetére
Igen, egy munkalap egy partner. Makrókhoz nem nagyon konyítok sajna.
MOD
Wyll
Igen, így néz ki. Az elrejtés még jó is lenne, ha nem lenne belőlük egy csomó, kézzel, egyenként irtó sokáig tart, és mivel gyakran változik, gyakran meg is kell csinálni. Erre keresnék valami automatizmust. -
Mittu88
senior tag
Úgy érted több munkalappal van egy táblázatod, és munkalaponként vannak a partnerek?
Ha igen, minden munkalapon ugyanabban a cellában található(ak) ez(ek) az adatok?
Szerk.: mivel külön munkalapon, vagy munkafüzetben vannak az adatok, szerintem egyszerűen nem lehet megoldani (bár ez relatív). Makró kell. Ahhoz értesz picit?
-
kutga
félisten
Sziasztok!
Megpróbálom érthetően leírni mire is lenne szükségem.
Adott egy méretes excel tábla, több munkafüzettel, minden munkafüzet egy megbízóhoz tartozik, adott munkafüzet adott megbízó szerződéseinek adatait tartalmazza (azonosító, tárgy, státusz, stb).
Ebből a táblából kellene készítenem egy összegezést, ami megbízónként kilistázza a szerződések tárgyát illetve státuszt (a többi adat nem lényeges).
Megoldható valahogy egyszerűen?
-
Thrawnad
senior tag
válasz
Istikee007 #23517 üzenetére
Ilyen helyre inkább konkrét kérdést illik feltenni:
Pl: Milyen függvénnyel keresek minimumot.
Hogy csinálok oszlop diagramot?
Ehhez hasonlók.Thrawnad
-
Istikee007
tag
Sziasztok, segítséget szeretnék kérni tőletek, egy leírást szeretnék kérni hogy hogyan tudnám folytatni a feladatot. A feladat jegyre megy, szombatig ha tudtok légyszíves segítsetek!Feltöltöttem google-drive-ra a leírás és a hozzá szükséges anyagot.
Benne van az is meddig jutottam el, a második feladatban szeretném a segítségeteket kérni, az első az nem lényeges!
Innen kellene nézni mert innen nem tudtam hozzászólni:
"Számoljatok relatív energiákat (vonjátok ki az összes energia közül (nem csak az adott oszlopot nézve) ..." -
UBO
csendes tag
Szia!
Épp az elmúlt héten kreáltam egyet én is mert már idegesített h nem találok normálisat ami kezeli a tengely alatti értékeket is. + extraként én csináltam hozzá egy makrót ami a megadott helyre átmásolja (és áthivatkozza a megfelelő sorokat a diagrammnál), mert sajnos a userek nem szeretnek az értékek áthivatkozásával bíbelődni amikor egy másik munkalapra kéne beintegrálni -
Delila_1
veterán
válasz
m.zmrzlina #23508 üzenetére
Szivi.
-
cadgers
aktív tag
Sziasztok! Olyat be lehet állítani hogy csak bizonyos felhasználók tudjanak egy adott cellát megváltoztatni?
-
Delila_1
veterán
válasz
m.zmrzlina #23504 üzenetére
Set wsTemp = workbooks("wbTemp.xlsx").Worksheets("Munka2")
Nem célszerű az éppen aktív lapra hivatkozni változó értékének a megadásánál.
Set wsOsszesito = sheets("Osszesito")
-
m.zmrzlina
senior tag
-
Imy
veterán
Ha van 3 lapom, az első kettőn vannak adataim. A 3. lapon hogyan tudok velük számolni? Azaz hogyan tudok rájuk hívatkozni?
-
Delila_1
veterán
válasz
m.zmrzlina #23501 üzenetére
wsTemp.Range("A1").CurrentRegion.Copy Destination:=wsOsszesito.cells(1, elsoures_oszlop)
-
m.zmrzlina
senior tag
Adott 2 munkalap. Mindkettőn azonos számú sorból de változó számú oszlopból álló tartományok. Egy harmadik munkalapra össze szeretném másolni ezeket egymás mellé (azonos a sorok száma ugyebár)
Így próbálom:
1. az első munkalapot lemásolom és "összesítő" néven hozzáadom a munkafüzethez
2.meghatározom az első üres oszlop számát és változóba írom (erre a változóra később még szükség lesz)
elsoures_oszlop = wsOsszesito.Range("A1").CurrentRegion.Columns.Count + 1
3. Másolok(nék)
wsTemp.Range("A1").CurrentRegion.Copy Destination:=wsOsszesito.[B]???????[/B]C][/M]
Hogyan jelölöm ki a legegyszerűbben a célterületet?
Új hozzászólás Aktív témák
Hirdetés
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Eladó steam/ubisoft/EA/stb. kulcsok Bank/Revolut/Wise (EUR, USD, crypto OK)
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 512GB SSD RTX3070 8GB ZALMAN S2 TG Enermax 750W
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7800X3D 32/64GB RAM RTX 5070 GAMER PC termékbeszámítással
- Lenovo Thinkpad P16 G2 - i9-13980HX, 64GB, 1TB SSD, 16" WQUXGA (3840 2400), RTX 4090 (ELKELT)
- Dell D6000 univerzális dokkoló USB-C/ USB-A, DisplayLink & Dell WD15 (K17A) USB-C + 130-180W töltő
- Csere-Beszámítás! Olcsó Gamer laptop! MSI Cyborg 15 . I5 12450H / RTX 4050/ 16GB DDR5
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest