-
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
-
Fferi50
Topikgazda
válasz
pentium4
#51473
üzenetére
Szia!
Az adott helyzetben a tömbképlet:=SZUM((MARADÉK(OSZLOP($A2:$N2);4)=1)*(($A2:$L2)="do"))
A tömbképletet Ctrl+Shift + Enter kombóval kell lezárni. Így húzható lefelé.
Amennyiben 7 oszloponként kell az eredmény, akkor a 4 helyére 7 kerüljön a MARADÉK függvénybe.
Üdv. -
-
Fferi50
Topikgazda
válasz
karlkani
#51464
üzenetére
Szia!
"akkor 2 sorral jobbra írja a dátumot (I), ha a H-ba, akkor csak 1 sorral (I)"
(Egy apró megjegyzés: ez ugye oszlop és nem sor.)
Egyébként:
If Target.Column = 7 Or Target.Column = 8 Then
1. Mivel a dátum mindenképpen az I oszlopba kerül, egyszerűen így szerintem:
Cells(Target.Row,"I")=Date
2. Egyben lehet "törölni" az adott területet:
Range(Cells(Target.Row,"H"),Cells(Target.Row,"J"))=""
Üdv. -
Fferi50
Topikgazda
válasz
#77257183
#51400
üzenetére
Szia!
A DARABHATÖBB függvény minden kritérium tartománya mindig a segédoszlopban megadott sortól a tartomány végéig tart: pl.=DARABHATÖBB(INDIREKT("$B"&F2):$B$127;$E2;INDIREKT("$C" & $F2):$C$127;$F2)
Ugyanígy a SZUMHATÖBB függvénynél is a kritérium tartományokat így kell meghatározni:=SZUMHATÖBB(INDIREKT("$D" & $F2):$D$127;INDIREKT("$B"&F2):$C$127;$E2)
Üdv. -
Fferi50
Topikgazda
válasz
#77257183
#51391
üzenetére
Szia!
Arra van szükséged, hogy a legutolsó x mérkőzés kezdő sorát meghatározd a tartományod számára. Csak a tartomány meghatározásra egyszerűsítve a feladatot segédoszloppal lehet megoldani szerintem:
F2 cella képlete:=NAGY(HA($B$2:$B$127=$E2;SOR($B$2:$B$127);HA($C$2:$C$127=$E2;SOR($B$2:$B$127);""));5)
Ez a tömbképlet megadja, hol található a tartomány végétől visszafelé számolva az 5. olyan sor, amelyben az adott csapat neve van. Mivel mindkét oszlopban szerepelhet, ezért kell a kétszeres ha függvény. Ha csak az egyik oszlopot (hazai/vendég) szeretnéd tudni - utolsó x hazai ill. vendég eredményt, akkor csak az adott oszlopra kell a ha függvényt felírni.
A tömbképletet Shift+Ctrl+Enter kombóval kell lezárni, az Excel pedig kapcsos zárójelbe teszi.
A H2 cella képlete:=DARABTELI(INDIREKT("$B"&F2):$C$127;$E2)
Ez is húzható lefelé.
Mutatja, hogyan alkalmazd a tartomány meghatározásához a segédoszlopot az indirekt függvénnyel. Itt csak azt mutatja, hogy valóban 5 darab tétel van az adott sortól kezdődő tartományban.
Üdv. -
Fferi50
Topikgazda
Szia!
Csak hogy még jobban főjön a fejed, itt egy másik megoldás:
A könnyebb képletezés miatt két tartományt a névkezelőben neveztem el:
értékelő1=ELTOLÁS(Munka1!$B$1;0;0;DARAB2(Munka1!$B$1:$B$3000);1)
értékelő2=ELTOLÁS(Munka1!$D$1;0;0;DARAB2(Munka1!$D$1:$D$3001);1)
A két név mindig az adott oszlop aktuálisan kitöltött részére hivatkozik. Ha 3000-nél több sorodban lenne adat, akkor légy szíves módosítani a 3000-t a végén. FIgyelj a $ jelekre kérlek.
Ezután a képletek:
F2 cella=RANG.ÁTL($C2;INDEX(ELTOLÁS($C$1;HOL.VAN($B2;értékelő1;0)-1;0;DARABHA(értékelő1;$B2);1);0;1);0)
G2 cella=RANG.ÁTL($E2;INDEX(ELTOLÁS($E$1;HOL.VAN($D2;értékelő2;0)-1;0;DARABHA(értékelő2;$D2);1);0;1);0)
A két képlet húzható lefelé, ameddig adatod van.
A DARABHA függvény korábbi Excel verziókban DARABTELI névre hallgatott, de úgy gondolom nálad már ez van.
Mielőtt a korreláció képletet mutatnám, a tartományok szétválasztásának módszeréről írok:
A magyarázat az F2 cella függvényeit veszi alapul:
Az INDEX függvény képes tartományt visszaadni a következőképpen: Ha a sor paraméter értékét 0 -ra állítjuk be, akkor a tartomány adott oszlopát, ha az oszlop paraméter értéke 0, akkor a teljes sort adja vissza. (Figyelem, nem elhagyjuk a sort/oszlopot, hanem 0-t írunk be paraméternek.)
A számunkra szükséges tartományt pedig az ELTOLÁS (lánykori nevén OFFSET) függvény és a HOL.VAN (MATCH) függvény használatával kaphatjuk meg:
Az ELTOLÁS függvény paraméterei:
1. A cella címe, ahonnan a tartományt elmozdítjuk. (A fix pont, ahonnan Arkhimédész kimozdítaná a Földet...
)
Ez nálunk a C1 cella, mivel itt kezdődnek az értékelő1 által adott eredmények
2. A sorok száma, amennyivel lejjebb-feljebb tesszük a kezdősor értékét.
Ez lesz annak a sornak a száma, ahol az értékelő1 először fordul elő a B oszlopban (az értékelő1 elnevezésű tartományban).HOL.VAN($B2;értékelő1;0)-1Azért kell a végére -1, mert a függvény a paraméter úgy használja, hogy a kiinduló sorhoz hozzáadja a sor eltolás mértékét. MIvel az első találat a 2. sorban lesz és az elsőből indulunk, ezért vonunk le 1-et.
3. Az oszlopok száma: esetünkben 0, mert a kiinduló oszlopban maradunk
4. Magasság: Az új tartomány sorainak száma:DARABHA(értékelő1;$B2)ahányszor előfordul az első értékelő neve a tartományban.
5. Szélesség: Az új tartomány oszlopainak száma: esetünkben 1, mivel maradunk az eddig oszlopban.
Így az új tartományunk a C2 cellában kezdődik és a C7 cellában végződik. Ezt az oszlop tartományt adja vissza nekünk az INDEX függvény, mivel a sor paraméternek 0-t adtunk meg.
Most pedig a korreláció függvény: Egyszerűbb képlet:
H7 cellába=KORREL($F$2:$F$7;$G$2:$G$7)
H11 cellába=KORREL($F$8:$F$11;$G$8:$G$11)
Ezeket gondolom nem okozna nagy problémát beírni akár egyenként.
De lehet automatizálni:
I2 cella képlete:=KORREL(INDEX(ELTOLÁS($F$1;HOL.VAN($B2;értékelő1;0)-1;0;DARABHA(értékelő1;$B2);1);0;1);INDEX(ELTOLÁS($G$1;HOL.VAN($B2;értékelő1;0)-1;0;DARABHA(értékelő1;$B2);1);0;1))
Ez húzható lefelé.
Ezután az ízlésednek megfelelő cellában hagyod meg a képletet.
FIGYELEM!
A tartományok ilyetén szétválasztása csak akkor működik, ha az értékelők szerint sorba van rendezve a táblázatod.
Ne ijedj meg, megcsinálni sokkal könnyebb és rövidebb ideig tart, mint ezt az egészet elolvasni.
Üdv. -
Fferi50
Topikgazda
válasz
lacipapi
#51347
üzenetére
Szia!
Próbáltad már, hogy időformátumban beírtad a kezdő és a vége időt, majd a kettő különbsége =vége-kezdő (az Excel ugyanis számként kezeli a dátum/idő értékeket.)
Pl. =B1-A1 a C1 cellába, ha mindkét cellában idő formátum van, a C1 cellában is idő formátumban jelenik meg.
A második kérdésedre: egy cellában vagy képlet van vagy egyedi érték. Ha egy olyan cellába írsz számot, amelyben képlet van, akkor a képlet megsemmisül. Ehhez a feladathoz 3 másik cellát kell használnod, a megfelelő képlettel.
Üdv. -
Fferi50
Topikgazda
Szia!
" ha valahol azt látod, hogy 17-31-ig zárva van valami, akkor nem hagyod ki a 17-et, hanem azt is beleszámolod a zárva tartott napok közé."
Ebben teljesen igazad van, csakhogy a függvény súgója szerint
"az Excel a vég_dátum – kezdő_dátum művelettel számítja ki a két dátum közötti napok számát."
Ez van bele "égetve", ezt kell figyelembe venni a képlettel való számolásainknál. Tehát, ahogy az előttem szóló is írta, ha a kezdő napot is bele szeretnéd számolni, hozzá kell adni az eredményhez 1-et.
Üdv. -
Fferi50
Topikgazda
Szia!
"ő azt mondja, hogy pl 08.17 és 08.31 között 14 nap van, ami a valóságban 15."
Szerinted hogyan lehetne a 31-17 kivonás értéke 15?
Az Excel pont ugyanúgy számol a dátumokkal, mint a számokkal - mivel a dátumokat egyébként számokként ábrázolja.
Amúgy hány nap is van hátra 17 -től 31-ig?
Üdv. -
Fferi50
Topikgazda
válasz
p5quser
#51320
üzenetére
Szia!
Szerintem egyszerűbb módon is meg lehetne oldani a lista szűrését. Most nincs túl sok időm, csináltam egy nagyon egyszerű példát, ahol a betűk beírásával folyamatosan változik a kiválasztott érték és megjelenik a textboxban.
[link]
Csak indítsd el a Userform1-et.
Üdv.
Ps: A Data.hu egy darabig ellenőrizgeti a vírusügyet, csak később lesz elérhető a letöltés. -
Fferi50
Topikgazda
Szia!
Szerintem egyáltalán nem kell a billentyűvizsgálat hozzá, a ComoBox maga is kezeli ezt. Annyi kell csak, hogy az Inicializálásnál vagy a fókuszba kerülésnél be kell állítani a ListIndexet a ListCount-1 értékre.
Én biztosan nem foglalkoznék itt a KeyDown, KeyUp eseményekkel.
Pl:Private Sub UserForm_Initialize()With Me.ComboBox1.AddItem "Géza".AddItem "Paula".AddItem "Kriszta".AddItem "Aladár".AddItem "Blöki".AddItem "Maffia".AddItem "Mz/X".AddItem "Máris szomszéd".ListIndex = .ListCount - 1End WithEnd Sub
Ha a Textbox1ből kilépünk és azt szeretnénk, hogy az utolsóra ugorjon:Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)With Me.ComboBox1.ListIndex = .ListCount - 1End WithEnd Sub
Bármelyik listaelemet be lehet ezzel a módszerrel állítani szerintem.
Üdv. -
Fferi50
Topikgazda
-
-
Fferi50
Topikgazda
Szia!
Talán megpróbálhatnád az alábbi lépéseket:
1. Az első sorban, vagy ha az foglalt a fejléceknek, akkor az adatok utáni sorban számozd be az oszlopokat 1 -től a végéig.
2. A következő sorban számozd be azokat az oszlopokat, amelyekkel számolni szeretnél. Én az első oszlopot otthagynám.
3. Az adatokat kijelölni - az eredmény oszlopot kihagyva természetesen
4. Adatok - rendezés - irány balról jobbra - utolsó sor szerint
5. A rendezés után egymás mellé kerülnek a kívánt oszlopok, így alkalmazható a DARABTELI függvény.
6.FONTOS! Az eredmény oszlopot kijelölöd - másolás - irányított beillesztés értékként
7. Adatok - rendezés - balról jobbra - utolsó előtti sor szerint (ami az eredeti sorrendet tartalmazza).
Ezzel kész a feladat.
Így néz ki a képletezésre előkészített táblázat:
Megcsinálni gyorsabb, mint az egészet elolvasni!
Üdv. -
Fferi50
Topikgazda
Szia!
"a gépen dupla katt-al megnyitom az excel filet és amikor felugrik a password ablak, akkor VBA ismerje fel, hogy most egy "olyan" file-t nyitottam meg "
Én úgy gondolom, ez nem fog így menni. A fájlt makróból lehet jelszóval megnyitni, de ahhoz ismerni kell a fájl nevét:
Workbooks.Open Filename:=fájlnév,Password:=jelszó
A fájlnévnek az aktulális könyvtár esetén elegendő a név.kiterjesztés, másik könyvtár esetén a teljes elérési út szöveg formában (idézőjelek között). A jelszó szintén idézőjelek között, mert az is szöveg (akkor is ha szám!).
Tehát a makróból való megnyitáshoz ismerni kell a fájl nevét.
Ezt a DIR() parancs tudja szolgáltatni:
fájlnév=DIR("*.xls*") az első xls-el kezdődő kiterjesztésű fájl nevét adja vissza.
Ebben az Instr függvénnyel megnézheted, hogy szerepel-e a kívánt szövegrészlet.
A következő fájlnevet pedig a paraméter nélkül kiadott parancs adja vissza:
fájlnév=DIR()
Addig az első feltétel szerint keres, amíg meg nem változtatod a keresés feltételét.
Ha nem talál olyan fájlt, ami a keresési feltételnek megfelel, akkor üres lesz a fájlnév változó. [Itt találsz a DIR parancshoz helpet]
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#51276
üzenetére
Szia!
"De mivel tudom biztosítani, hogy 1 for-on belül a 4 sub úgy fut le, hogy szépen, megvárja az egyik a másik futását, és minden rendben kiszámolódik és lementődik."
Egyrészt - ugye egymás után indítod a subokat, tehát a következő csak az előző után futhat. Persze értem, a számolás végrehajtását is ellenőrizni kell, erre a következő utasítás sorozat lehet jó:
Do While Application.CalculationState=xlCalculating : Loop
Ez addig "áll", amíg a számolás be nem fejeződik . A ciklus belsejébe tehetsz egy várakozási üres ciklust is - pl. For x=1 to 5000 : Next - , hogy ne azonnal ismétlődjön a számolási állapotra a rákérdezés.
Üdv. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
föccer
#51277
üzenetére
Szia!
Ha a terület egyforma, akkor az lehet a gond, hogy annak a munkalapnak kell aktívnak lenni, amelyikbe az értéket be szeretnéd illeszteni.
Egyébként használható a With utasítás is:Dim Akt_datum_oszlop As IntegerWith Workbooks("Tech_elemzo_recet_mintavetel_v4_3.xlsm")Akt_datum_oszlop = .Sheets("KEZELŐ").Range("H19").ValueMsgBox (Akt_datum_oszlop).Sheets("MBO_haladás").ActivateRange(Cells(4, Akt_datum_oszlop), Cells(37, Akt_datum_oszlop)).Value = .Sheets("KEZELŐ").Range(Cells(2, 20), Cells(35, 20)).Value ' MBO KPIEnd WithMsgBox ("KÉSZ")
'Ha szükséges, akkor vissza aktíválhatod a.Sheets("KEZELŐ").Activate sorral az End With előtt a kezelő munkalapot. De magához az értékek kiolvasásához nem kell aktívnak lennie.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#51274
üzenetére
Szia!
Ha nem adod meg a munkafüzetet, akkor az éppen aktuális munkafüzetben fogja keresni a KEZELŐ nevű munkalapot, ha nem talál ilyet, akkor hibaüzenettel megáll.
Ilyen esetekben célszerű a munkafüzetet tartalmazó hivatkozást is megadni, tehát Workbooks("valami").Sheets("Kezelő").Range("H19").Value
Az előző kérdésedre egy kérdés: Melyik munkafüzetben van a második munkafüzetet feldolgozó makró? Szerintem annak is az első munkafüzetben kell lennie és akkor kell egy átpakoló makró - utána feldolgozó makró - utána kövekező lépés, kb. így:
For ciklus indul
átpakoló makró
feldolgozó makró
next
Ne felejtsd el, ha új munkafüzetet nyitsz, akkor az lesz az aktív munkafüzet, ha új munkalapot adsz hozzá, az lesz az aktív munkalap.
Üdv. -
Fferi50
Topikgazda
válasz
13128814
#51269
üzenetére
Szia!
Az a kérdés, hogy mit teszel még utána vele. Szerintem az működhet, hogy a pivotot legenerálod, majd minden szűrés után a mellette levő területet "kitakarítod" és a fejléc + függvény subot futtatod - ez utóbbiba beleteheted a "takarítást" is (CleanContents).
Így nem kell minden szűréshez külön pivot generálás.
Üdv. -
Fferi50
Topikgazda
Szia!
"Hogyan lehet ezt megoldani?"
Kereső függvényekkel. De hogy jól lehessen alkalmazni, szükséges pár módosítás szerintem.
1.Az első sorban az összevont cellákat célszerű megszüntetni, helyette a kijelölés közepére igazítást javaslom alkalmazni.
2.Az E oszlopban a mérethatárokat szabatosabban kell meghatározni. A pontosan 3 átmérőjű termék melyik kategóriába tartozik? Az 1-3-ba vagy a 3-6-ba? Ugye, hogy nem mindegy az eltérés paraméterek miatt?
3. A kereső függvény használata érdekében a mérethatárokat egy számmal kellene megadni az E oszlopban, egyértelműen, mindig az alsó határt és jó lenne, ha az eltérés méretek nem egymás alatt, hanem egymás mellett lennének.
Ezekkel a módosításokkal lehetne igazán jó képletet alkotni szerintem.
Üdv. -
Fferi50
Topikgazda
válasz
13128814
#51265
üzenetére
Szia!
A kimutatás szűrő vagy szeletelő valóban nincs hatással a kímutatáson kívül levő területre. Ez általában hasznos is, de természetesen - ahogyan esetedben - ez nem feltétlenül szerencsés.
Javaslom, hogy nézd meg a GETPIVOTDATA (magyarban KIMUTATÁSADATOT.VESZ) függvényt, ahol a kimutatás állapotától némileg függetlenül mindig a kívánt adatot kapod vissza. Azért némileg függetlenül, mert ha a szűrés miatt egy adat nem látszik a kimutatásban, akkor a függvény értéke #HIV! lesz magyarban (Error 23 a VBA-ban). De ha a szűrést megváltoztatod és ismét látszik a hivatkozás, akkor az érték is újra megjelenik.
Szűrés nélkül:
Szűréssel:
Megfelelő negyedévi szűréssel:
Vagyis valószínűleg elég egy képletet beilleszteni azokba a cellákba, amelyekből tovább számolsz.
Remélem, segít.
Működik úgy is, ha nem azonos oldalon van az eredmény és a kimutatás.
Üdv. -
Fferi50
Topikgazda
válasz
vakondka
#51262
üzenetére
Szia!
Ez nem egy sima makró (Sub), hanem egy függvény (Function), ezért nem látod a makrók között. A függvényed egy bemeneti értéket vár - ahogyan látom ékezetes karaktereket tartalmazó szöveget - és azt alakítja át.
Meghívása VBA-ban egy olyan makróból történhet, amelyikben átadod az átalakítandó szöveget:
Pl. Sub hivo()
msgbox RemoveAccents(szöveg)
End Sub
szöveg helyére írod az átalakítandó szöveget.
Használható munkalapon is, ugyanúgy, mint egy beépített függvény.
A1-ben van az átalakítandó szöveg, akkor Pl. B1 képlete: =RemoveAccents(A1)
Még egy megjegyzés - Sub is várhat paramétert, akkor azt sem látod a makrók között, hiszen a bemeneti értéket meg kell adni a híváskor.
Üdv. -
Fferi50
Topikgazda
válasz
DopeBob
#51260
üzenetére
Szia!
Nem nagyon látok más megoldási lehetőséget (persze ettől még lehet). Talán egyszerűbbé teszi a helyzetet, ha minden adatsort külön-külön veszel fel, úgy ahogyan a képen látod:
Ezután adatsoronként végig csinálod a következőt:
Kijelölöd az adatsort - vonal nincs - a vége időponthoz tartozó adatpontot kijelölöd - vonal automatikus.
Ezt kapod eredménynek:
Illetve:
A diagramot egy lépésben létre tudod hozni az adatok kijelölése után, majd végig lehet/kell lépkedni minden adatsoron az előbbi műveletekkel.
Persze makrót lehet írni rá, de az is időbe telik.
Üdv.
Ps. tudom, sok adatsornál nem kevés idő, de más lehetőséget most nem látok. -
Fferi50
Topikgazda
válasz
bandus
#51244
üzenetére
Szia!
"hogyan tudnám képlettel összegezni egy adatsor első x elemét egy sorban, alatta a második x elemét,"
A képlet az A oszlopra pl. ha van fejléced, az X1 cellában van az összegzés darabszáma, az összegző oszlop első cellájában a képlet:=SZUM(Offset($A$2;(SOR()-1)*$X$1;0;$X$1;1))
Ezt húzhatod lefelé.
Ha az oszlop második cellájában szeretnéd kezdeni a képletet, akkor a -1 helyett -2 kell.
Ha nincs fejléc az összegzendő adatoknál, akkor $A$1 kell a $A$2 helyett.
Üdv. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
válasz
dzsampi
#51162
üzenetére
Szia!
Ha helyben szeretnéd törölni a többit a táblázatból:
Kijelölöd a táblázatodat. Az alábbi műveletek során a fejléc legyen bepipálva
1.Adatok - Sorbarendezés 1. szint sorszám - csökkenő 2. szint állat
2.Adatok - Ismétlődések eltávolítása - bejelölve hagyod a dátum és állat oszlopot. OK
Üdv.
ps. Persze nem árt ha van egy másolatod az eredeti adatokról, ha mégsem azt szeretted volna, ami eredményként előállt. -
Fferi50
Topikgazda
válasz
lacipapi
#51147
üzenetére
Szia!
Ha nem szeretnél makrózni, akkor magyar Excelben a Dátum : Ctrl + 0 (a számsoron, nem a számbillentyűzeten), az Idő Ctrl + Shift + . (pont) combó - egy plusz mozdulat:
Nap elején a Dátum, nap közben az Idő.
Üdv.
(Ps. így nem kell makróbarátként mentened a munkafüzetet) -
Fferi50
Topikgazda
válasz
LilProphet90
#51128
üzenetére
Szia!
Mégiscsak a gépen levő beállításokat kellene megnézni, illetve az Excel verzióját. Lehet, hogy angol verziójú, ezért csinálja azt amit írsz.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#51121
üzenetére
Szia!
Szerintem ez alapján FKERES (XKERES) függvénnyel is megoldható a feladat.
A hasonlítani kívánt két hónap azonosítóit egy munkalap oszlopba áttenni - ezután Adatok - Ismétlődések eltávolítása - majd a két havi FKERES függvény eredményének összehasonlítása kerül az eredmény oszlopba.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#51119
üzenetére
Szia!
Azt még mindig nem értem, miért kell egyedi sorazonosító és honnan tudod azokat?
Mielőtt nagyon belemélyednél, van egy olyan menüpont az Adatok csoportban, hogy összesítés -> ez arra szolgál, hogy külön-külön munkalapon levő azonos struktúrájú adatokat egy munkalapra hozzon össze. Talán érdemes lenne végiggondolni ezt is.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#51117
üzenetére
Szia!
Tehát fejlécek (oszlop azonosítók) és oldallécek (sor azonosítók) vannak az első sorban ill. első oszlopban? Jól értem?
" kimutatást készítsek, hogy hónapról-hónapra mennyi sorban volt változás az előző hónaphoz képest"
Hány hónapot kell összehasonlítani egy kimutatásban?
Lekérdezések sorozata szerintem lehetővé teszi a megoldást. PowerPivot szerintem jó lehet.
Talán több lehetne a segítség, ha szűkített és nem valódi adatokkal egy mintát feltennél valahova. Miből mit szeretnél létrehozni.
Üdv. -
Fferi50
Topikgazda
válasz
LilProphet90
#51110
üzenetére
Szia!
Át is váltja az értéket dollárra vagy csak a HUF helyett jelenik meg USD?
Az eredeti cella formátuma érdekes lehet, ott pénznem és HUF kellene legyen, majd a diagramnál a számformátum forráshoz kapcsolt bejelölése.
Üdv. -
Fferi50
Topikgazda
válasz
Delila_1
#51093
üzenetére
Szia!
Ez érdekes, mert nálam 2016-os Excel verzió fut és azon "kísérleteztem ki".
"Sheets(nyomtatni).Select sornál, Subscipt ouf of range."
Biztosan megvan minden olyan nevű lap a munkafüzetben, ami a nyomtatni változóban szerepel?
Üdv.
PS. Esetleg átküldenéd a mintád priviben? -
Fferi50
Topikgazda
válasz
joocek
#51089
üzenetére
Szia!
Akkor nincs más hátra, mint makró.
Ezt a két makrót másold be egy modulba, javítsd át a megfelelő helyeken. A hivo makróban megadhatod, melyik cellából másolja az adatot és hol kezdje a cél munkafüzetben a beírást. Ezáltal több cellát is másolhatsz a hivo makró paramétereinek változtatásával.Sub hivo()beirja "A3", "A1" 'A3 cellából az A1 cellától lefelé fog másolni. Ezt kell átírnod a megfelelő címekre.End SubSub beirja(ByVal honnan As String, ByVal hova As String)Dim sh1 As Worksheet, sh2 As Worksheet, celja As RangeSet sh1 = Worksheets("S51") 'S51 helyébe írd a cél munkafüzet nevétSet celja = sh1.Range(hova)For Each sh2 In WorksheetsIf sh2.Name <> sh1.Name Thencelja.Value = sh2.Range(honnan)Set celja = celja.Offset(1, 0)End IfNextEnd Sub
A munkafüzetet makróbarátként vagy binárisként kell mentened.
Üdv.
Ps. Létezik még az Excelben az Adatok - összesítés menüpont, ahol megfelelően struktúrált munkalapok adatai egy munklapra összesíthetők. Talán azt is érdemes lenne megnézned. -
Fferi50
Topikgazda
válasz
joocek
#51087
üzenetére
Szia!
Képlettel megoldható, de nem úszod meg a munkalap nevek beírását a képletbe. Pl:
=Munka1!$A$1 ' ide a cella címe kerüljön a $ jelekkel együtt
Ezt a képletet húzod lefelé vagy jobbra, attól függően, hova kell az adatoknak kerülni.
Majd a képletekben levő munkalap neveket átírod a megfelelő névre.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#51081
üzenetére
Szia!
Talán érdemes megfontolni a következő gondolatot:Dim nyomtatniConst sheetek = "Kezelő,TOP LISTÁK,TOPELEMZES,VCBE,EE_1,EE_2,EE_3,EE_4,EE_5,EE_6,EE_7,EE_8,EE_9,EE_10,EE_11,EE_12,EE_13,EE_14,EE_15,EE_16,EE_17,EE_18,EE_19,EE_20"EE_szama = Sheets("KEZELŐ").Range("D23").Valuenyomtatni = Split(Left(sheetek, InStr(sheetek, "EE_" & EE_szama) + IIf(EE_szama < 10, 3, 4)), ",")Sheets(nyomtatni).Select
Mivel egyben definiáltuk az összes nyomtatási szükségletet, az EE_szám alapján mindig le tudjuk vágni a megfelelő darabot belőle. A Split függvény pedig tömböt csinál a levágásból.
Üdv. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
Szia!
"hogyan tudum kigyűjteni egy új oszlopba a neveket, úgy hogy töbször ne forduljon elő és ne manuálisan kelljen megcsinálni"
Átmásolod az összes nevet az új oszlopba, majd Adatok - Ismétlődések eltávolítása.
Sajnos új név hozzáadása esetén kell egy kis munka még. Fkeres függvénnyel meg kell nézni, hogy létezik-e már az egyedi oszlopban, ha nem akkor egyszerűen át kell írni oda, ha igen, akkor nincs teendő.
Több név hozzáadásakor pedig meg kell ismételni az ismétlődések eltávolítását.
A nevek melletti képletet nem kell megváltoztatnod, csak lehúznod az új nevekhez.
Üdv. -
Fferi50
Topikgazda
válasz
lac14548
#51035
üzenetére
Szia!
A jelenlegi oszlop mellé segédoszlopba beviszed a számokat 1-től (gyorsan így megy: 1, 2 ezután kijelölöd ezt a két cellát és lehúzod addig, ameddig adatod van.)
Az így létrejött két oszlopot kijelölöd, másolás, majd az eddigi adataid alá beilleszted.
Ezután a teljes 2 oszlop kijelölésével Adatok - rendezés - a számos oszlop szerint - figyelj a fejlécre, ha nincs ne legyen bepipálva.
A segédoszlopot kitörlöd és kész a feladat.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#51018
üzenetére
Szia!
A fileokat begyűjtő ciklus elé:On Error Resume NextA Workbooks.Open utasítás után:If Err=0 Then' Ide jönnek a sikeres megnyitás utáni műveleteka fájlbegyűjtő ciklus Next utasítása elé (ami most az utolsó sor)Else' Ide jön a hibakezelő 2 sorod +Err=0End If
A folyamat (makró) legvégén pedig On Error Goto 0 - a hibakezelés visszaadása a VBA-nak.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#51010
üzenetére
Szia!
Esetleg kipróbálhatnád a következőt:
A másolandó sorok mellé teszel egy jelet (pl. x) az utolsó oszlop után.
Ezután autoszűrő a teljes tartományra - x -re.
Ezután másolás:Pl. Range($A$1:$X200).SpecialCells(xlCelltypeVisible).Copy Destination:=A célterület első cellája.
Ha esetleg így túl lassúnak találod, akkor lehet a látható tartományt területenként is másolni:Dim terulet As RangeFor Each terulet In Range($A$1:$X200).SpecialCells(xlCelltypeVisible).Areasterulet.Copy Destination:=a következő üres sorkövetkező üres sor meghatározásaNext
Ezután kitörlöd az x-eket és kész, vagy bezárod mentés nélkül a forrás fájlt.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#51007
üzenetére
Szia!
Csak egy gondolat:
Amikor egy új fájlt nyitsz meg, akkor az lesz az aktuális munkafüzet. Mivel azt írod, hogy egymás után több fájlt is nyitsz, nagy eséllyel nem a cél fájlod az aktív workbook amikor ehhez a sorhoz ér a makró.
Nézd meg, hogy a hibaüzenet esetében melyik munkafüzet aktív.
Mivel a Gyujtott_mintavetelek munkalap előtt nem írsz munkafüzet nevet, így azt az aktuális munkafüzetben keresi - de mivel az aktív munkafüzet az éppen megnyitott forrás fájl, persze nem találja.
Megoldás: a forrás fájl megnyitása után aktíváld ismét a cél fájlt - vagy a munkalapnál használj teljes nevet.
Célszerűnek találnám, ha változóba tennéd a cél munkafüzetet és akkor egyszerűbb lenne a hivatkozás rá:
Mielőtt megnyitnád az első forrás fájlt:dim celwsh as Worksheetset celwsh=Sheets("Gyujtott_mintavetelek")'A mutatott sor pedig:celwsh.Range(celwsh.Cells(Gyujtott_minta_darab + 2, 1), celwsh.Cells(Gyujtott_minta_darab + 2, 20)).Value
Ebben az esetben nem szükséges aktívvá tenni a cél munkafüzetet, mivel a változó tartalmazza a szükséges információkat.
Egyébként egy területet egyben is átmásolhatsz, nem kell soronként menni.
A forrás munkafüzetet is egyszerűbben tudod kezelni, ha változóba teszed a fájl megnyitása után. Egyszerűbb a kód írás is.
Üdv. -
Fferi50
Topikgazda
válasz
TillaT
#51004
üzenetére
Szia!
A feltételes formázás "viselkedése" külön tanulmányokat érdemelne, pl. amikor beszúrsz a formázott területre, akkor rögtön többszörözi a szabályokat, terület bontással.
A 2. képen látható szabály "logikája" a hivatkozásban keresendő:
$CQ7 - > a CQ rögzített oszlopból a 7. sorban levő cella. Mivel a formázás a 7-től 10-ig sorra vonatkozik, ezért minden sorban a CQ oszlop megfelelő - 7-től 10-ig - cellája lesz a kiindulási alap. A nem rögzített sor miatt a szabályban levő függvény "mozog" a formázott területtel együtt.
Ugyanezt tapasztalhatod a normál Excel munkalapon is - a képletek a sor/oszlop rögzítésnek megfelelően "mozognak". Szerintem érdemes a hivatkozások magyarázatát átnézni az Excelben.
Üdv. -
Fferi50
Topikgazda
válasz
Reinhardt
#50969
üzenetére
Szia!
1. Karbantartót kirúgni, újat felvenni. Munkaköri leírásban rögzíteni, hogy minden hónap elsején köteles az órák állását leolvasni és rögzíteni.
2. Irodás Micikének munkakörébe iktatni, hogy minden hónap elsején köteles ellenőrizni a karbantartót, elmaradás esetén leolvasni az órák állását.
3. Okosórákat beszerelni amelyek automatikusan továbbítják az óraállást minden hónap elsején.
Komolyra fordítva: Jelen esetben csak interpolálni tudsz: ábrázolod az adatokat Excelben grafikonon, kérsz rá egy trendfüggvényt és az alapján számítasz becsült hó eleji adatokat.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#50967
üzenetére
Szia!
Akkor próbáld ki még a következőt:Dim a() 'persze ezt csak egyszer kell és a cikluson kívüla = Sheets("Minta_NY").Range(Sheets("Minta_NY").Cells(5, 1), Sheets("Minta_NY").Cells(Mintak_szama + 4, 34)).ValueSheets("MINTA_OSSZES").Range(Sheets("MINTA_OSSZES").Cells(Sheets("Mintavetelek_segedszamitas").Range("G2").Value + 1, 1), Sheets("MINTA_OSSZES").Cells(Mintak_szama + 4, 34)).Value = a
Vagyis a tartományt egy tömbbe olvassuk be és a tömböt írjuk ki.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#50963
üzenetére
Szia!
A két for ciklus helyett kipróbálhatnád ezt:
Sheets("MINTA_OSSZES").Range(Sheets("MINTA_OSSZES").Cells(Sheets("Mintavetelek_segedszamitas").Range("G2").Value + 1, 1), Sheets("MINTA_OSSZES").Cells(Mintak_szama + 4, 34)).Value = Sheets("Minta_NY").Range(Sheets("Minta_NY").Cells(5, 1), Sheets("Minta_NY").Cells(Mintak_szama + 4, 34)).Value
Persze a tartomány címeket azért ellenőrizd le légy szíves.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#50963
üzenetére
Szia!
Nem írtad, hogy az Application.ScreenUpdating milyen állapotban van. Ez szabályozza ugyanis a cellák módosításának kiírását a képernyőre. Figyelembe véve a számítások mennyiségét, a képernyő frissítés biztosan elég sok időt vesz igénybe.
Továbbá nem egészen értem miért kell - ráadásul kettő - ciklus az adatok átmásolásához, hiszen ismered a tartomány címét. (Sorok száma=minták száma, oszlopok száma 34). Tehát egyben is átmásolható szerintem.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#50961
üzenetére
Szia!
Csak ötletek:
Az automatikus számolás kikapcsolása:
Application.Calculation=xlCalculationManual
Visszakapcsolás a végén:
Application.Calculation=xlCalculationAutomatic
Képernyő frissítés kikapcsolása:
Application.ScreenUpdating=False
Visszakapcsolás:
Application.ScreenUpdating=True
A StatusBar frissítéshez be kell tenni egy DoEvents utasítást, mielőtt módosítod a szövegét.
Esetleg szűrő bekapcsolással elrejteni azokat a sorokat, amelyeket nem kell másolni, majd a látható cellákat másolni.
A leggyorsabb egyébként szerintem a tartomány begyűjtése egy tömbbe, majd a tömb kiírása a célterületre. (Pl. Dim a() As Variant: a=Range("A1 : C4").Value : kapsz egy 3x4-es tömböt, ezek értékeit írhatod be a célcellába - tehát egyenként vizsgálható, hogy ki kell-e írni vagy sem.) Mivel a tömb a memóriában van, a vizsgálat is nagyon gyors. A legtöbb időt a kiírás igényli, de ez sem kibírhatatlan.
Esetleg megmutatnád a másoló makródat, hátha abból is lehet ötletet kapni.
Üdv. -
Fferi50
Topikgazda
válasz
Delila_1
#50952
üzenetére
Szia!
Ez volt a kérdező pontosított megfogalmazása:
"A cellák a bennük lévő (összefűz) képletek eredményeként vagy üresek, vagy egy "X" karaktert is tartalmazó szöveges adat van bennük. Olyan szöveges adat, mint mit előzőleg írtam:" X Szöveg""
Ennek szerintem megfelel a javasolt feltételes formázás, mivel ha a képlet eredménye üres szöveg, akkor nem érvényesül a formátum.
Üdv. -
Fferi50
Topikgazda
válasz
TillaT
#50934
üzenetére
Szia!
Ez így képlettel, de még makróval sem megoldható. Képletet tartalmazó cellának az eredményét nem tudod színezni. Ha nem képlet van benne, de csak akkor a Characters(a,b).Font.Color utasítással láthatatlanná tudod tenni a szöveg egy részét is.
Ezért sem jó, ha egy cellában többféle információt szeretnénk bezsúfolni. Bele kell törődnöd, hogy mások is látják az információt, vagy két oszlopba kell az eredményt szétszedned.
Üdv. -
Fferi50
Topikgazda
Szia!
Próbáld az alábbit:=SZORZATÖSSZEG((tartomány<>"")/DARABTELI(tartomány;tartomány))-(DARABTELI(tartomány;A5)=1)*1
Az A5 cella a kihagyott 5. sorban van. Ha több sort is kihagysz, akkor
a dőlt betűs részét a képletnek a kihagyott sorok adott oszlopbeli valamennyi cellájára meg kell ismételned.
Üdv. -
Fferi50
Topikgazda
Szia!
Nem tudom, milyen képleteket használsz. A Részösszeg függvénynél a 100 fölötti kódúak nem veszik figyelembe a szűrés által elrejtett sorokat - lehet ez egy megoldás.
Az összegző függvényeknél több tartomány is megadható pontosvesszővel elválasztva.
Egyéb képletekben a számítást több részletre kell bontani, a nem kívánt sor előtti és utáni részre külön megadni a képletet és így használni.
Remélem segít valamennyire.
Üdv. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
Szia!
A második kérdésedre a válasz: Ez nem lehetséges! Az Excel automatikusan módosítja a hivatkozásokat sor/oszlop hozzáadása/törlése esetén, akkor is ha abszolut ($-os) címet használsz. Ez alapvetően kényelmes, de mint korlátot figyelembe kell venni. Akkor is így van, ha nevesítetted a tartományt.
Üdv. -
Fferi50
Topikgazda
válasz
joocek
#50892
üzenetére
Szia!
Aztán akkor mi történjen, ha mindketten ugyanabba a cellába írnak adatot - természetesen a vízsz-függ reláció figyelembe vételével.
Egyébként a transzponálás függvény pont erre való - a vízszintes - függőleges közötti váltásra.
Eseménykezelő makróval elérhető, hogy amit az egyik táblába beírtak, ellenőrizze, hogy a másik helyen nincs-e már adat, továbbá át is fordítja a másik táblába, ha nincs semmi akadálya.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#50884
üzenetére
Szia!
"Arra gondoltam, hogy az elsődleges tengely folytonos vonalára rápöttyözöm, viszont így elveszik az érték jelölése, hogy az adott naphoz mekkora érték tartozik."
Miért veszne el? Az adott ponthoz megjeleníted az adatfeliratot. Ez több pozícióban is lehet a ponthoz képest, biztosan találsz egy látható pozíciót.
Üdv. -
Fferi50
Topikgazda
válasz
föccer
#50874
üzenetére
Szia!
A beállítások - speciális menüpontban beállíthatod, hogy az autoszűrőben a dátumokat csoportosítva mutassa. Így év - hónap csoportosítás alapján választhatsz a szűrőtételek között.
Nálam így jelenik megy az autoszűrő:

Ez segíthet esetleg neked is.
Üdv.
Ps. A szín szerinti szűrés csíkja ne tévesszen meg, nem az van beállítva. -
Fferi50
Topikgazda
válasz
föccer
#50872
üzenetére
Szia!
Remélem mentésed van a régi adatokkal.
Az Excel táblázatként kezeli (gondolom fejlécekkel) vagy sima tartomány?
Megpróbálnám a következőt:
Autoszűrő kikapcsolása
A teljes adatállomány kijelölése - majd autoszűrő bekapcsolása.
Ha így sem látszanak a 2023-as adatok a szűrővel, akkor mégis inkább az adat formátummal lehet baj. Ebben az esetben nézd meg, hogy egy ilyen adatot tartalmazó cella formátumát számmá alakítva megváltozik-e a tartalma. Ha nem, akkor bizony nem dátum van benne hanem szöveg.
Látatlanban ennyi.
Üdv. -
Fferi50
Topikgazda
válasz
jackal79
#50861
üzenetére
Szia!
Nem értem, mit kell ezen összesíteni?
Egy munkalapra szeretnéd összehozni a hét munkalap adatait? Az egyes munkalapokon egy-egy lista van?"Van gyorsabb megoldás rá?"
A húzható képlet.
Akkor egy-egy konkrét képlet kell bajnokságonként és azt végighúzhatod a táblán.
Pl. A2 képlete =Magyar!A2. Ha ebben a formában írod, simán húzhatod jobbra és lefelé is.
Üdv. -
Fferi50
Topikgazda
válasz
szürke
#50855
üzenetére
Szia!
"Ez a rész arra vonatkozik ha csak egy nevet kellene visszakapnom eredménynek ezért a vizsgált cella nem is tartalmazza a "/" karaktert?"
Alapvetően igen. Ezt a feltételt beépítve a képlet lehúzható és működik mindkét esetben, akkor is ha két nevet, akkor is ha egy nevet keresel.
Ilyen formán:=HA(HOSSZ(C6)=HOSSZ(HELYETTE(C6,"/","")),FKERES(C6,A6: B17,2,HAMIS),FKERES(BAL(C6,SZÖVEG.KERES("/",C6)-1),A6: B17,2,HAMIS) & " / "& FKERES(KÖZÉP(C6,SZÖVEG.KERES("/",C6)+1, HOSSZ(C6)),A6: B17,2,HAMIS))
Továbbá fontos szeritem, hogy a tartományt, amiben keresel - A6 : B17 "abszolutizáljuk", azaz $A$6:$B$17 formában használjuk. Így húzható a képlet lefelé és nem marad ki egy név sem a keresésből. (Ellenkező esetben lefelé húzásnál az oszlop első cellái szépen kikerülnek a tartományból - próbáld ki húzni lefelé a képletet.)
Üdv. -
Fferi50
Topikgazda
válasz
szürke
#50853
üzenetére
Szia!
"Hol rontom el?"
Talán ott, hogy az A oszlopban nincs "GJ/MCs", csak "GJ" és "MCs" külön sorokban.
Ezért az első FKERES esetében a "/" előtti értéket, a második esetében a "/" utáni értéket kell keresned.
A "/" előtti érték=BAL(C6,SZÖVEG.KERES("/",C6)-1)
A "/" utáni érték=KÖZÉP(C6,SZÖVEG.KERES("/",C6)+1, HOSSZ(C6))
A C6 helyett a fenti értékeket kell az FKERES függvényekbe beírni.
Viszont azt is meg kell nézned, hogy van-e "/" a C6 Cellában:
Pl.HA(HOSSZ(C6)=HOSSZ(HELYETTE(C6,"/","")),FKERES(C6...stb,), 2 FKERES a fentiek szerint)
Üdv.
Új hozzászólás Aktív témák
- Garmin topik
- Nintendo Switch 2
- Itt a Galaxy S26 széria: az Ultra fejlődött, a másik kettő alig
- OnePlus 15 - van plusz energia
- Debrecen és környéke adok-veszek-beszélgetek
- Világ Ninjái és Kódfejtői, egyesüljetek!
- Counter-Strike: Global Offensive (CS:GO) / Counter-Strike 2 (CS2)
- Google Pixel topik
- Szerkesztett és makrofotók mobillal
- Eredeti játékok OFF topik
- További aktív témák...
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- MEGA AKCIÓ! - Jogtiszta Windows - Office & Autodesk & CorelDRAW - Azonnal - Számlával - Garanciával
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem.
- Kaspersky, BitDefender, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- ÁRGARANCIA!Épített KomPhone i7 14700KF 32/64GB RAM RTX 5070 Ti 16GB GAMER PC termékbeszámítással
- Prémium! Bambulab bontatlan filamentek (PLA - PETG- ABS) ÁFÁS- számlával eladóak készletről!
- ÁRGARANCIA!Épített KomPhone Ryzen 7 9700X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- DDR4 Szerver RAM felvásárlás - napi árak, elsősorban nagy mennyiségben
- BESZÁMÍTÁS! Apple MacBook Pro 16 M1 Max 64GB RAM 8TB SSD notebook garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
F2 cella képlete:
A két név mindig az adott oszlop aktuálisan kitöltött részére hivatkozik. Ha 3000-nél több sorodban lenne adat, akkor légy szíves módosítani a 3000-t a végén. FIgyelj a $ jelekre kérlek.
Mielőtt a korreláció képletet mutatnám, a tartományok szétválasztásának módszeréről írok:
)
Ezután az ízlésednek megfelelő cellában hagyod meg a képletet.
De a Dec.Bin stb. megmaradt.


