- AMD Ryzen 9 / 7 / 5 7***(X) "Zen 4" (AM5)
- Milyen TV-t vegyek?
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- TCL LCD és LED TV-k
- Újabb "merénylő" érkezett a Thermalright megbízásából
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Nagyobb lesz az új Oppo Pad
- Gaming notebook topik
- Telekom TV SmartBox: szolgáltatói set-top box alacsony korlátokkal
- Milyen notebookot vegyek?
Hirdetés
-
Mozgásban a Kill Knight
gp A mai nap folyamán érkezik egy kipróbálható demó PC-re, így megnézhetjük végre hogy fest élőben a játék.
-
Újabb "merénylő" érkezett a Thermalright megbízásából
ph A modernebb Intel és AMD tokozásokkal egyaránt kompatibilis léghűtés nem szereti a feltűnést.
-
Ha Trump győz, Elon Musk politikai tanácsadó lehet
it A jelentések szerint Donald Trump azt fontolgatja, hogy politikai tanácsadót csinál Elon Muskból, amennyiben megnyeri a novemberi választást.
-
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 Kojaszan #24450 üzenetére
Nem állítom, hogy pontosan értem a kérdésedet de ezen a linken van pár dolog a témáról.
-
Kojaszan
újonc
válasz m.zmrzlina #24451 üzenetére
Okés, köszi, megnézem!
Legyen szép napod -
m.zmrzlina
senior tag
"A" munkafüzetben szeretnék használni pl egy =FKERES() fv-ben egy "B" munkafüzetben névkezelőben definiált tartományt.
Hogyan lehetséges ez?
-
Wyll
őstag
válasz m.zmrzlina #24453 üzenetére
Az elnevezett tartományokkal nagyon vigyázz, amennyiben nem kizárólag abszolút ($-os) hivatkozás(oka)t tartalmaznak!
Amúgy semmi különbség nincs ahhoz képest, mint ahogy a saját munkalapon csinálnád:
írod szépen a képletet, majd amikor kell a másik munkafüzet, átkattintasz rá, F3, kijelölöd a nevet, enter, majd visszakattintasz a függvényedhez, és írod szépen tovább.Szintaktikailag ugyanúgy kell írni, mintha egy cellahivatkozás lenne, nem kell idézőjel meg semmi, a másik file neve persze itt is szögletes zárólejben van, ahogy mindig.
Amúgy meg google.[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
Wyll
őstag
válasz m.zmrzlina #24455 üzenetére
Akkor sorry, nem találkoztam még ilyennel, hogy miért tiltódik le a névkezelés...
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
Delila_1
Topikgazda
válasz m.zmrzlina #24455 üzenetére
Szerintem töröld a nevet, és újra vidd be.
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
Topikgazda
válasz m.zmrzlina #24458 üzenetére
Törléssel?
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Wyll
őstag
Beállítok egy változót, hogy a makrómat is tartalmazó, éppen aktív, kiinduló workbook egyik sheet-jére mutasson:
Set mysheet = ActiveSheet
Utána valamivel megnyitok egy másik file-t, innentől persze ez lesz az aktív. A kódnak ebben a részében használhatom-e a mysheet változót (objektumot), és az mire fog mutatni? Csak mert nekem hibát dob, és nem értem miért.. Én azt gondolom/szeretném, hogy a kiinduló file-om megfelelő sheetjére mutasson.
[ Szerkesztve ]
Megbízhatóságom: http://phmegbizhatosag.atw.hu/phtabla.php?nev=Wyll
-
m.zmrzlina
senior tag
Én a
Set valami = ThisWorkbook.Worksheets("valami")
megoldást szoktam használni és eddig még jól működött.
Egy időben a makrós munkafüzet nevét adtam meg itt de arról hamar leszoktam mert kb abban a pillanatban halt meg a makró ahogy átnevezték a fájlt. És mindig átnevezték.
-
MC Pite
veterán
Sziasztok!
Nem találom hogy tudnám megvalósítani azt, hogy egy sorban jobbra növelném a képletben az oszlopcímet, 31esével. Lefele 30 adatsor van, következő oszlopban 31-61ig, következő oszlopban 62-92ig, stb.
A cím fügvénnyel próbálkoztam, de nem sikerült<ELADÓ:új Bryton Gardia radar 32k> Pixel 8 | C4 SpaceTourer 1.2 Pt '18 | 208 1.2VTi '18 | https://www.spritmonitor.de/en/user/MC_Pite.html
-
Fferi50
őstag
válasz MC Pite #24463 üzenetére
Szia!
Bocs, de a kérdés és a leírás teljesen ellentétes egymással (legalábbis az én értelmezésemben).
"egy sorban jobbra növelném a képletben az oszlopcímet, 31esével. Lefele 30 adatsor van, következő oszlopban 31-61ig, következő oszlopban 62-92ig, stb."
Nekem ebből úgy tűnik, a sorszámát kellene növelni 30-as csomagokban.
Erre szerintem az indirekt függvényt lenne jó használni. A sor számát pedig a képletben az oszlop() és sor() függvény felhasználásával tudod beállítani:
= indirekt( "$A" & (oszlop()-1)*30+sor()) a második oszlop első cellájába az első oszlop első cellájának értékét fogja beírni.Üdv.
[ Szerkesztve ]
-
slashing
senior tag
egy ellenőrző makrón dolgozom, ti hogy csinálnátok?
szituáció: D4 cellától jobbra azaz egy sorban vannak a fejlécek pl.: akármi 1, akármi 2
alattuk az adatok...Azt akarom ellenőrzini hogy ha bekerültek az adatok a fejlécek alá akkor ha valamilyen oknál fogva foghíjas lesz az adattartományom vagy nem szám kerül bele akkor fejezze be a makró futtatását esetleg írjon ki valamit.
Az én ötletem az hogy darab2-vel (countA) megszámoltatom a fejléc tartományt majd sima darab-bal az adattartományt és ha a fejléctartomány * ahány sorban van adat = annyival mint amennyi az adattartományom akkor Okésak vagyunk ha nem akkor gáz van.
Az én kódom így néz ki, látszólag tökéletes, ti mit csinálnátok másképp vagy jó lesz ez így..?!
Sub ellenorzes()
fejlec = WorksheetFunction.CountA(Range(Cells(4, 4), Cells(4, ActiveCell.End(xlToRight).Column)))
adatok = WorksheetFunction.Count(Range(Cells(5, 4), Cells(ActiveCell.End(xlDown).Row, ActiveCell.End(xlToRight).Column)))
usor = Cells(Rows.Count, "D").End(xlUp).Row - 4 '-4 mert az első négy sort nem akarom számoltatni (D1-től D4-ig)
If fejlec * usor = adatok Then
MsgBox "ok"
Else
MsgBox "ng"
End If
End Sub[ Szerkesztve ]
-
slashing
senior tag
-
slashing
senior tag
Tapasztaltatok már olyat hogy egy makró sokkal de tényleg nagyon sokkal lassabban fut le ha meg van nyitva egy másik fájl. Nálam ez egy bizonyos fájlnál van csak "egyenlőre" de nem jövök rá az okára hogy mi a kettő között az összefüggés?!
-
thee
csendes tag
Sziasztok!
Adott egy "pont x y" grafikon (Excel 2010), logaritmikus az x és az y tengely, kb 20 adatpárból van kirajzolva a görbe, adatok elég nagy tartományban mozognak (1,E+01 - 1,E+10).A feladat az lenne, hogy egy "y" érték alapján meg kellene adni a görbe szerinti "x" értéket.
Erre van valami beépített lehetőség?Használható trendvonalat nem tudtam a görbére ráilleszteni.
Van már egy megoldás:
Függvényekkel az adatokból keresse meg azt, hogy az adott "y" érték melyik két koordináta között helyezkedik el, és egy egyszerű arányosítással adjon meg egy "x" értéket.
Gond az, hogy egy logaritmikus tengelyen ábrázolt görbét ez elég durván közelít meg (pláne ilyen kevés koordináta esetén), ennél pontosabb adatokra lenne szükségünk.A grafikonon gyönyörűen kirajzolja a görbe minden egyes pontját, ez alapján nem lehet lekérdezni?
Esetleg egy újabb Excel verzió ügyesebb ebben?Már az is nagy segítség lenne, ha ki lehetne íratni a görbe pontjait vmi nagyon sűrű osztással (akár más programmal is). Ha elég sok koordinátánk van, akkor a fentebb leírt függvényes módszerrel már egész pontosak tudnánk lenni.
Köszönöm!
-
slashing
senior tag
válasz slashing #24469 üzenetére
Application.Calculation = xlCalculationManual
Application.Calculation = xlCalculationAutomaticazthiszem az lehetett a gond hogy a menyitott fájlban van egy tömbfüggvény amit lehet minden egyes cellaváltásnál újraszámolt(talán) és mivel van vagy 30 munkalap benne így ezeket szerintem mindig újraszámolta(talán)...
-
m.zmrzlina
senior tag
válasz slashing #24469 üzenetére
Nekem van ilyen makróm. Ha csak az a munkafüzet van megnyitva amiben a makró van akkor 1-2 mp egyébként halál hosszú (végig sem szoktam várni)
Biztos vagyok benne, hogy elcsesztem valamit a makróban de még kérdezni sem tudok vele kapcsolatban semmi konkrétat úgyhogy nem is túráztattam vele senkit sem itt a fórumon sem máshol.
Szerencsére csak én használom ezért tudom hogy mielőtt azt indítom bezárok minden mást és így simán lefut.
-
slashing
senior tag
válasz m.zmrzlina #24472 üzenetére
Nálam ez most megoldotta szerencsére, az elején kikapcsolom az adatok újrakalkulálását majd a végén vissza.
Az a makró ami 0,8 másodperc alatt futott le alapállapotban az a másik fájl megnyitása után 32 másodpercig futott miután beraktam a kalkuláció kikapcsolást kicsit lassult csak 0,97-1 másodpercre. Tekintve azt hogy annak a fájlnak muszáj nyitva lennie így most roppant boldog vagyok mert 10-esével(10 külön fájl) kell beimportálni az adatokat ami azt eredményezte volna hogy a 10 másodperc helyett több mint 5 percig dolgozott volna továbbá a mai példából kiindulva ezt meg kellett csinálnom ma vagy 15ször így lett volna vagy másfél óra malmozás
amúgy én is tuti valamit elcsesztem itt már.... ez kvázi az első makrós projectem amihez lassan nekem is folyamatábra kell hogy átlássam
-
Fferi50
őstag
válasz slashing #24471 üzenetére
Szia!
Az egészen biztos, hogy az automatikus kalkuláció tud problémákat okozni, főleg a következő esetekben:
Amikor olyan munkalap függvények vannak "tömegesen", amelyeknek az értéke frissítés (pl. ilyen az indirekt függvény is), vagy olyan saját függvényt használunk, amelyben benne van az Application.Volatile sor.
Ezek miatt ugyanis minden, de minden egyes cellaváltozáskor újraszámolódik az összes képlet értéke, akkor is, ha nem az azokban érintett cellák változtak.Nagyon sok adatunk van - sok munkalapon, esetleg még külső hivatkozásokkal (lekérdezésekkel) megspékelve és a külső adatok frissítése automatikusra van állítva.
Ilyen esetekben segít, ha a megnyitás előtt a számolást kézire állítjuk át (Application.Calculation=xlCalculationManual), és csak akkor hívjuk meg a számolás, ha ténylegesen változtattunk valamit.
Az újabb excel változatokban makróból már lehet hívni a számolást úgy is, hogy csak az adott munkalapot, vagy az adott cellatartományt számolja újra (de úgy emlékszem, ez az opció csak makróból megy).Segít még az is, ha a külső adatok automatikus frissítését letiltjuk és makróból vagy kézzel frissítünk.
Ha nagyon lassan jön be egy munkafüzet, ilyenekre lehet gondolni.
Üdv.
-
slashing
senior tag
válasz Fferi50 #24474 üzenetére
Így már érthető...
Amúgy pont ezért nem is szertem az indirekt függvényt, amúgy is könnyen belekavarodok az alkalmazásába.... de ahol eddig tudtam ott pl. helyettesítettem az eltolás függvénnyel, persze nem mindenhol alternatíva az eltolás. Volt egy fájlom ami tele volt indirekttel és ahogy írtam bele egyesével az adatokat állandóan villigott minden számított mező rémes volt használni...
-
m.zmrzlina
senior tag
válasz Fferi50 #24474 üzenetére
Az én esetemben valóban vannak munkalapfüggvények a makróban de nem azoknál lassul a futás, hanem egy ilyen kódrészletnél:
For Each rngCella In Selection.Cells
rngCella.Value = Left(rngCella.Value, Len(rngCella.Value) - 1)
NextEz egy "%" karaktert vág le kb 35000 cella értékének a végéről.
-
excelfan
újonc
válasz m.zmrzlina #24453 üzenetére
Nem pont fkeresel megírva, de a lényeget azt hiszem ki tudod venni, tégy vele egy próbát:
=SZUM('D:\2-es.xlsx'!szamok)
Persze az elérési útvonalat, hivatkozást jobb ha nem kézzel gépeled, hanem Wyll által írt módon a hivatkozott munkalap is meg van nyitva képlet szerkesztéskor, és ott jelölöd ki a hivatkozott részeket.... -
Fferi50
őstag
válasz m.zmrzlina #24477 üzenetére
Szia!
Esetleg próbáld ki a következőt:
a=selection.value
for xx=1 to ubound(a,1)
for yy=1 to ubound(a,2)
if a(xx,yy)<>"" then a(xx,yy)=left(a(xx,yy),len(a(xx,yy))-1)
next
next
selection.value=a1.Ha biztosan nincs üres cella, akkor az if feltételt kihagyhatod.
2.A selection helyett inkább használj konkrét tartomány címet - ez működik akkor is, ha az adott munkalap nem aktív.
Sheets("Munka1").range("A1:B20").value
3.Ez csak akkor működik, ha a tartományod összefüggő.Azért lehet gyorsabb, mert itt a memóriában vannak az adatok, az "a" tömbben.
Elképzelhető, hogy out of memory hibát kapsz, de talán 35000 sornál még nem (persze attól is függ, hány oszlopod van). Ebben az esetben bontsd részekre a műveletet, még úgy is gyorsabbnak kell lennie.Üdv.
[ Szerkesztve ]
-
thee
csendes tag
Nnno, a meglévő megoldást sikerült finomítani.
Nem a koordinátákat értékeit arányosítja, hanem a koordináták logaritmusát veszi alapul az arányosításhoz, így már a logaritmikus tengelyeken ábrázolt görbét sikerült viszonylag jól megközelíteni egy koordináták közötti egyenessel.Ez már épp elfogadható megoldást ad, de a jó lenne csinálni vagy szerezni vmi free curve fit tool-t az Excelhez.
Szóval tippek, tapasztalatok továbbra is sokat segítenének. -
Fferi50
őstag
válasz m.zmrzlina #24477 üzenetére
Szia!
Az előző hozzászólásomban (24479) írtam: " Ebben az esetben bontsd részekre a műveletet", természetesen nem a műveletet kell részekre bontani, hanem a tartományt kell kisebb "adagokban" számítani.
Másrészt, ha csak a végén van # jel, akkor a
selection.replace what:="#",replacement:=""
parancs megoldja az eltüntetését.Üdv.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Fferi50 #24481 üzenetére
selection.replace what:="#",replacement:=""
Ez lett a megoldás, legalább két nagyságrenddel rövidebb idő alatt fut le még akkor is ha meg van egy másik munkafüzet nyitva.
Azzal együtt továbbra sem értem, hogy miért viselkedik másképp ugyanaz a makró, ha meg van nyitva egy másik munkafüzet is.
Köszi a segítséget
[ Szerkesztve ]
-
Fferi50
őstag
válasz m.zmrzlina #24482 üzenetére
Szia!
Csak még egy kérdés: Akkor is belassul, ha a másik munkafüzet üres, vagy csak akkor, ha adatok vannak abban is?
Esetleg egy "közzétehető" mintát meg lehetne nézni (nyilván az érzékeny adatok nélkül)? Mert akkor talán tudunk válaszolni.
Meg lehet még próbálkozni az eseménykezelés letiltásával - az is tud problémát okozni, ha minden egyes cella változásánál "elszalad" az eseménykezelésbe, még akkor is, ha egyébként ott nem kell neki semmit csinálni.
Elébe egy Application.Enableevents=false, utána egy Application.Enableevents=true.
Nem tudom, a képernyőfrissítést ki szoktad-e kapcsolni. (Application.ScreenUpdating)Üdv.
[ Szerkesztve ]
-
m.zmrzlina
senior tag
válasz Fferi50 #24484 üzenetére
Este lesz rá egy kicsit több időm akkor majd végzek pár mérést különböző peremfeltételek mellett és tudatom az eredményét.
Maga a munkafüzet csak számok és dátumok szóval akár egy az egyben kitehető. Bár jelzem működik és tudom használni (főleg a mostani változtatás után) tehát csak akkor feccölj bele időt ha maga a probléma érdekes számodra.
Eseménykezelés nincs tiltva de a képernyőfrissítés elhanyagolható javulást hozott (ezt tegnap kipróbáltam).
-
Fferi50
őstag
-
tombar
senior tag
Sziasztok!
új vagyok makrózásban, szóval a tudásom a makrók rögzítéséig terjed el. egy olyan jellegű gondom, hogy pdfből bemásolom az egész tartalmat, makróval megadom h mit kellene kitörölni és megadom neki, hogy a következő lapra dobja át a szükséges adatokat. na most ezt idáig úgy csináltam, hogy az első oldalon a formázást lemakróztam és a második oldalra az átrakást kézzel csináltam. a kérdésem az lenne, hogy miként tudom megadni, h pl.: az A oszlop legelső üres cellájába dobja a következő adathalmazt?
előre is köszi srácok!Everybody knows, you dance like you fuck. So let me see you dance!
-
anonymus89
addikt
Üdv!
Az volna a kérdésem, hogy lehetne összefűzni kb. 500 db excel fájlt egy fájlba mindösszesen?
Akár Access-be?Organikus, természetes összetevőjű, 100% tisztaságú bőrápoló termékek //marcsiszappan.hu//
-
m.zmrzlina
senior tag
válasz tombar #24488 üzenetére
Sub masol()
Range("A1:G1").Copy
elsoures = Worksheets("Munka2").Range("A" & Rows.Count).End(xlUp).Row + 1
Worksheets("Munka2").Range("A" & elsoures).PasteSpecial Paste:=xlPasteAll
End SubAz első sor kijelöli a másolni kívánt tartományt (ez nyilván nálad teljesen más)
A második megadja, hogy a Munka2 munkalap A oszlopának melyik az első üres cellája
A harmadik odamásolja a kijelölt tartományt.Meg lehet csinálni egy utasításban is:
Worksheets("Munka2").Range("A" & Worksheets("Munka2").Range("A" & Rows.Count).End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteAll
Ugyanaz az eredmény csak az első valamennyivel átláthatóbb.
-
Delila_1
Topikgazda
válasz anonymus89 #24489 üzenetére
A makró a könyvtárból egyenként behívja a másolandó fájlokat, másol a makrót tartalmazó füzetbe, majd bezárja a másoltat mentés nélkül.
A másolás műveletét az előző hozzászólásban m.zmrzlina bemutatta.Sub osszefuzes()
Const utvonal = "C:\Mappa\Almappa\"
ChDir utvonal 'Direktor váltás
FN = Dir(utvonal & "*.xlsx", vbNormal)
Do
If FN <> "." And FN <> ".." Then
'Fájlok megnyitása
Workbooks.Open Filename:=utvonal & FN
'ide jön a másolás
ActiveWindow.Close False 'megnyitott fájl bezárása módosítás nélkül
End If
FN = Dir()
Loop Until FN = ""
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.
-
slashing
senior tag
Application.CutCopyMode = False
erre lehet szükség lesz az ActiveWindow.Close False után érdemes beszúrni illetve lehet még ez is hasznos
Application.DisplayAlerts = False
szintén ugyan oda csak a close elé, legalábbis mikor én utoljára ilyet csináltam az első az mindenképpen kellett a nagy adatmennyiség miatt ami a vágólapra került, az utóbbi meg ha esetleg valami hibaüzi felbukkanna a bezáráskor. -
Fferi50
őstag
válasz m.zmrzlina #24490 üzenetére
Szia!
Akkor már miért nem így:
Range("A1:G1").Copy destination:=Worksheets("Munka2").Range("A" & Rows.Count).End(xlUp).Row + 1)
Nem kell hozzá utána semmi.
Üdv
[ Szerkesztve ]
-
Thrawnad
senior tag
Hali!
Az alábbit akarom megcsinálni. Persze a sor az nem 333 mert az máshonnan kalkulálódik.
Lényegében az utolsó sorba akarok szum sort írni. De nem jó hogy makróban összesítek mert kézzel még a beltartalom változhat.Sor = 333
Hely = 3
While Hely < 26
Cells(Sor, Hely).Select
ActiveCell.FormulaR1C1 = "=SUM(R[((sor-4)*-1)]C:R[-1]C)"
Hely = Hely + 1
WendTud valaki segíteni?
Thrawnad
Hardver hibára ritkán van jó szoftver...
-
Delila_1
Topikgazda
-
kisg
tag
Sziasztok,
Ezt a feladatot kellene megoldanom Excell-ben:
Termék árlistában szereplő árak kerekítése xxx.900Ft-ra. Van egy határszám: 400Ft
A szabály az hogy ha a termék ára pl 10.326Ft akkor ez 9.900Ft legyen a kerekítés után. Ha viszont 10.426Ft akkor a kerekített ár 10.900Ft legyen.
Másik megfogalmazásban, hogy ha a termék árában a százas helyiértéken 000-400Ft szerepel akkor az ezres helyiérték-1 és a százas helyiérték pedig fixen 900.
Ha viszont a százas helyiértéken 401-999Ft szerepel akkor az ezres marad, a százas helyiérték pedig fixen 900.Gondolom megcsinálni egyszerűbb mint megfogalmazni :-)
Üdv, kisg
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Promenade Publishing House Kft.
Város: Budapest