- Alternatív kriptopénzek, altcoinok bányászata
- Újabb államok perelik az Apple-t, mert sok pénzt szed ki a vevőkből
- Windows 11
- SUSE Linux
- Meggyőző arcjátékkal reagál a kínai humanoid robot
- Milyen routert?
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Otthoni hálózat és internet megosztás
- Max
- Béta iOS-t használók topikja
-
IT café
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
őstag
-
Fferi50
őstag
válasz greenface #22869 üzenetére
Szia!
Próbáld ki a következőt:
Sub kepletszun()
Dim sh As Worksheet
For Each sh In ActiveWorkbook.Worksheets
if sh.name<>"törölni kell" then
sh.UsedRange.Value = sh.UsedRange.Value
endif
Next
application.displayalerts=false
sheets("törölni kell").delete
application.displayalerts=true
End SubHa csak képletek és értékek vannak, akkor menni fog. Ha kimutatás is van a munkalapokon, akkor viszont a kimutatásnál hibával leáll. (Természetesen lehet a hibát kezelni, de most csak gyorsan ezt dobtam fel, ha szükséges, szívesen átírom arra is.)
Üdv.
[ Szerkesztve ]
-
-
Fferi50
őstag
válasz adamssss #22889 üzenetére
Szia!
Feltételes formázás. Excel verziótól függően tudod megadni, képlettel.
Általában ki kell jelölnöd a két oszlopot. Utána két szabály két különböző képlettel:
1. ha tervcella>ténycella kitöltés piros
2. ha tervcella<ténycella kitöltés zöld
Ha ebben a formában írod a képletet =A1>B1 akkor minden sorban a megfelelő 2 cellát hasonlítja össze.Üdv.
-
Fferi50
őstag
válasz greenface #22901 üzenetére
Szia!
Miután az activeworkbook munkalapjain megy végig, a makrónak az adott munkafüzet egy moduljában kellene lenni.
Viszont megoldható az is, hogy egy külön munkafüzetbe teszed, akkor viszont ki kell egészíteni egy olyan résszel, ami megnyitja egyenként a fájlokat, utána ezzel a makróval elvégzi a módosítást, majd visszazárja/elmenti a fájlokat.Ha emlékeim nem csalnak, volt már itt ilyenről szó. (fájlok listázása mappából).
Ha mégsem találnád, írj és segítek.
Üdv.
-
Fferi50
őstag
válasz Delila_1 #22905 üzenetére
Szia!
Nem akarlak elkeseríteni, de ebben az esetben a
"Sheets("material").Range("A5, A7, D10, A12, A14, B14, D14, A16, B16, C16, A18, B18") = _
Range("A5, A7, D10, A12, A14, B14, D14, A16, B16, C16, A18, B18").Value"sajnos nem működik, mindig az első cella értékét fogja a többinek is beírni.
Ez a trükk csak folyamatos tartománynál működik.
Itt sajnos végig kell gyalogolni a cellákon.Üdv.
-
Fferi50
őstag
-
Fferi50
őstag
válasz Bobrooney #22916 üzenetére
Szia!
Nem kötelező a második paraméter használata, de vedd figyelembe az alábbiakat:
A második paraméter azt határozza meg, hogy melyik nap a hét kezdőnapja. Ha elhagyod, akkor a vasárnapot tekinti a hét kezdőnapjának. Ha a hétfőt tekinted kezdőnapnak (mint Mo-n általában), akkor a második paraméter értéke 2.Üdv.
-
Fferi50
őstag
válasz tgumis #22932 üzenetére
Szia!
Menjünk sorba:
" irányított beillesztésre létrehozott makró ne mindig oda illesszen be ahol a makró rögzítésekor tette"
Ehhez látni kellene a makrót.
Billentyűkombináció megváltoztatása: Fejlesztőeszközök - Makrók - ráállsz a makróra és utána egyebek.
Ikon elhelyezése: Excel 2010-ben.
Beállítások - Menüszalag testreszabása - a választható parancsok helye - makrók. Utána a jobb oldalon létrehozol egy saját menüpontot és ide hozzáadhatod a makródat.Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz rubint #22945 üzenetére
Szia!
Nem írtad, milyen excel verziót használsz. De mindegyikben működik a következő:
-összemásolod az összes oszlop adatát egy oszlopba egymás alá.
-adatok - speciális szűrő/irányított szűrő - egyedi értékek - máshova másol.
- az eredményt rendezed és a számokat, egyéb jeleket tartalmazó cellákat törlöd.Ez még kézzel sem hosszú, annyi cellára sem, amennyit írtál.
Ha automatizálni szeretnéd, akkor egyszer makró rögzítés, majd a megfelelő részeket átírod.Üdv.
-
Fferi50
őstag
válasz kacsaesokos #22948 üzenetére
Szia!
"leltári szám ami alapján lehetne talán szűrni?"
Igen jó lenne, ha valami egyedi azonosítót tudnál adni a munkához, mert egyébként mi alapján fogod "kitalálni", hogy melyik sorokat kell kicserélni.
Gondolom, nem egész sorokat kell cserélni, csak a megváltozott adatokat..., esetleg új sort hozzáadni.Egy kis méretű mintát a teljes illetve a becserélendő táblából azért tehetnél fel, hogy világosan láthassuk, mit szeretnél.
Üdv.
-
Fferi50
őstag
válasz Bobrooney #22949 üzenetére
Szia!
Ha a modulok azon értékeit, amelyeket más modulok is használnak, Public változóként definiálod, akkor azokat modulnév.változónév formában el tudod érni máshonnan is.
Ha a modulok nem osztálymodulok (nem class), akkor Global változóként is definiálhatod a közös változókat és akkor minden macera nélkül eléred mindenhonnan.Üdv.
-
Fferi50
őstag
válasz kacsaesokos #22954 üzenetére
Szia!
A cserélendő adatok "F" oszlopán végigmész, megkeresed a "nagy" táblában az értékét. Ha megtaláltad az egész sort copyzod, ha nem akkor a végéhez hozzáadod.
Kb. így nézhet ki:Sub cserelo()
Dim sh1 As Worksheet, sh2 As Worksheet, vanszam As Range, cl As Range
Set sh1 = Munka1
Set sh2 = Munka2
For Each cl In sh2.UsedRange.Columns("F").Cells
If cl.Value <> "" And cl.Row <> 1 Then
Set vanszam = sh1.Columns("F").Find(what:=cl.Value, LookIn:=xlValues, lookat:=xlWhole)
If vanszam Is Nothing Then Set vanszam = sh1.Columns("F").Rows.End(xlUp).Offset(1, 0)
cl.EntireRow.Copy sh1.Cells(vanszam.Row, 1)
End If
Next
End SubÜdv.
-
Fferi50
őstag
válasz slashing #22962 üzenetére
Szia!
Hogy egyikünknek se legyen egyből igaza:
=ÉS(MIN($A2:$D2)=A2;A2<>"")Ezt kell az A-D oszlopra ráhúzni. Mert a legkisebbet keressük a 4 oszlopban - már ha jól értettem.
Ha így írod be a képletet, akkor minden oszlopban saját magára nézve is fogja a cella értelmezni.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz JanoXP #22978 üzenetére
Szia!
Nem írtad, melyik excel verzióról van szó. Általában a beállításokban van egy olyan, hogy automatikus csatolás frissítés vagy vmi ilyesmi, ezt engedélyezd.
Másrészt az adatok -menüben van frissítés menüpont, ha arra kattintasz akkor frissülnek a hivatkozások.
Arra viszont számíthatsz, ha sok ilyen "külső" adat van, az bizony igénybevesz egy kis időt, míg frissül.
Ezért célszerű a számítást manuálisra állítani és a kívánt alkalmakkor F9 gombbal újraszámoltatni.Üdv.
-
Fferi50
őstag
-
Fferi50
őstag
válasz #02644736 #22994 üzenetére
Szia!
Az a helyzet, hogy a számolási beállítások applikáció (Excel program) szinten vannak és nem munkafüzetre specifikálva.
Vagyis, ha valamelyik használó akár kézzel akár makróból átállítja kézire és úgy lép ki belőle, akkor az marad a beállítás, amíg valaki vissza nem állítja.Üdv.
-
Fferi50
őstag
válasz mr.nagy #23018 üzenetére
Szia!
Ennek érdekében az adott munkalap change eseményéhez kell makrót írnod:
Private Sub Worksheet_Change(ByVal Target As Range)
application.enableevents=false
if target.column=4 then target.formula="=Clean(""" & target.value & """)"
application.enableevents=true
end subÜdv.
-
Fferi50
őstag
Szia!
Nézd meg a Filedialog objektumhoz tartozó helpet az excel VBA -ban.
Többfunkciós és többféle alapértelmezést is adhatsz neki.
De ne feledd, ha a felhasználóra bízod a mentés nevének megadását, akkor nem lehetsz biztos abban, hogy nem változtatja meg azt....
Szerintem sokkal jobb, ha magad adod meg a nevet és mented a filet. Szóval én nem dobnék fel dialog ablakot.Ha nem akarod, hogy a fájlmentés miatt megváltozzon az eredeti fájlod neve, akkor használd a
workbook.savecopyas filename formátEkkor nem változik meg a használt fájlod állapota.
Üdv.
-
Fferi50
őstag
válasz slashing #23031 üzenetére
Szia!
Ide tedd be a másik makró hívását, így:If Not Intersect(Target, Range("H7,H12,H17,H22,H27,H32,H37,H42,H47,H52,N7,N12,N17,N22,N27,N32,N37,N42,N47,N52,T7,T12,T17,T22,T27,T32,T37,T42,T47,T52,Z7,Z12,Z17,Z22,Z27,Z32,Z37,Z42,Z47,Z52,AF7,AF17,AF22,AF27,AF32,AF37,AF42,AF47,AF52")) Is Nothing Then
Application.Dialogs(xlDialogInsertObject).Show
alakzatMeretezes
End IfRemélem, jó helyre gondoltam.
Üdv.
-
Fferi50
őstag
válasz #02644736 #23056 üzenetére
Szia!
Elárulnád, hogy milyen Excel verziód van?
Csinálsz egy oszlopot mindkét munkalapra, ahova összefűzöd a keresni kívánt oszlop értékeit. Ezután ezt az értéket keresed fkeres függvénnyel ha a keresőoszlop az első a második munkalapon, vagy index és hol.van függvény kombinációval, ha a keresőoszlop nem az első a második munkalapon.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz bteebi #23064 üzenetére
Szia!
Próbáld így:
dim ws as worksheet,frm as formatcondition,afrm as formatcondition
for each ws in activeworkbook.worksheets
for each frm in ws.usedrange.formatconditions
for each afrm in frm.appliesto.formatconditions
frm.font.bold=false
frm.font.italic=true
next
next
nextEz végigmegy az összes feltételes formázáson és beállítja a font tulajdonságokat.
Üdv.
-
Fferi50
őstag
válasz Thrawnad #23073 üzenetére
Szia!
A worksheetfunction.vlookup-on kívül a VBA -ban a Range.find metodust is használhatod(ez kb. ugyanaz minta Crtl+F a munkalapon):
Cset talalt = munka1.range("A1:B50").find(what:=keresem,lookin:=xlvalues,lookat:=xlwhole)
if not talalt is nothing then
megtalálta
else
nemtalálta
endif
[/][/M]
Viszont az időkeresés az külön figyelmet kíván és ki kell többször próbálni, mert az excel a dátumot, időt számként tárolja.
Üdv.[ Szerkesztve ]
-
Fferi50
őstag
válasz Thrawnad #23078 üzenetére
Szia!
Bocsi, most látom, hogy a "programkód" vezérlés egy kissé átvert.
Az első sor így néz ki: set talalt=
A többi része jó.Az mindegy, hogy hol van a kód és hol van a táblád, mert a kódban lehet direktben hivatkozni a keresés helyére, lást munka1.range("A1:A50'), vagy sheets("Munkalapnév").range("A1:A50").find
De ha egy kis mintát felteszel, még pontosabb lehet még többet tudunk mondani.
Pld. működik az is, ha a cellába először a képletet írod be, majd utána átalakítod értékké.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
Szia!
Van egy dolog, amire még oda kell figyelni: Ha nem választanak, akkor nem fog a mentésed lefutni.
Ezért ezt a részt egy kicsit módosítani kell:With fd
.InitialFileName = Range("gyariszam") & "_jegyzokonyv"
.FilterIndex = 2 'xlsm, azaz makróbarát munkafüzetként
---------
.Show
.Execute
----------
helyett
if show=-1 then
.execute
else
msgbox "Nem választottál, a mentés nem történt meg!",vbinformation
endif
End WithHa mindenképpen kell, hogy legyen mentés, akkor figyelned kell, hogy megtörtént-e. Amennyiben nem, úgy meg kell ismételtetni.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz the radish #23083 üzenetére
Szia!
Az index és a hol.van függvényt próbáld meg:
=Hol.van("*darab";2:2;0) megmondja azt az oszlopot, amelyben a darab(számok) vannak listázva, ha a fejléc a 2.sorban van. Természetesen ha másik sorban van a fejléc, akkor annak a számát kell odaírni.Ha a fejléc másik munkalapon/másik munkafüzetben van, akkor a teljes hivatkozást be kell írnod a sor elé:
=Hol.van("*darab";Munka2!2:2;0), vagy = hol.van"*darab"; '[file name.xlsx]Munka2'!2:2;0)
Ezután az Index függvénnyel megtudod kapni a tényleges értéket:
=index(Munka2!A2:I200; 3;hol.van("*darab";munka2!2:2;0)) képlettel megkapod a 3.sorban levő értét a darab fejlécet tartalmazó oszlopból.
Ezáltal nem kell pontosan tudnod, hogy a fejlécben melyik oszlop tartalmazza a darab szöveget.
A sorokat pedig természetesen folyamatosan növelned kell, erre jó például a sor függvény, amit ha paraméter nélkül írsz be, akkor az adott cella sorát tartalmazza:
Tehát, ha az 5. sorban van az adat és az 5 sorba teszed a képleted, akkor a fenti képletben az ;3; helyett beírhatod a ;sor(); képletet.
Ha másik táblára váltasz és ott újra a 3. sortól kezdődnek az értékek, akkor az addig teleírt sorok számát ki kell vonnod:
Pl. 15. sorban végződött az előző tábla, akkor a 16.sorba jön a következő tábla adata:
A képletben kicseréled a munkalap nevét, a sor() helyett pedig beírod, hogy sor()-13, mert ez adja ki a 3. sor számát, ahol a forrástáblában kezdődik az adat.
Ezt a képletet is lehúzhatod addig, amíg üressé nem válik a cella értéke (0-át nem ad vissza).
Majd névváltás, sorváltás és lehet tovább lehúzni a képletet.Remélem elég érthető volt.
Üdv.
-
Fferi50
őstag
válasz Thrawnad #23091 üzenetére
Szia!
Nem tudom, Ora milyen változónak lett definiálva.
Valószínűleg azért kapsz ilyen üzenetet, mert nincs a keresett értéknek megfelelő eredmény és így egy hiba értéket ad vissza a Vlookup, amit csak variant tipusu változó tud megenni.Ezért inkább másként szoktuk a problémát megkerülni:
dim talalt as variant
on error resume next
talalt=Application.WorksheetFunction.VLookup(Kod, Sheets("Adatok").Range("E14:ei34"), 16, False)
if err=0 then
volt találat
else
nem volt találat
endif
on error goto 0vagy
dim talalt as variant
talalt=Application.VLookup(Kod, Sheets("Adatok").Range("E14:ei34"), 16, False)
if iserror(talalt) then
nincs találat
else
van találat
endifA dim talalt önmagában is elég, mert az variant tipusu változót deklarál, csak azért írtam oda a típust, hogy jobban feltűnjön.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
Szia!
Kérdés:
Az egyes táblázatok között van üres sor, vagy a fejléc (A csoport, B csoport) választja el egymástól őket?
Hova szeretnéd az eredményt tenni?Egyébként a darabüres függvény használható az üres cellák megszámolására, vagy a darabhatöbb függvény, ha feltétel szerinti üreset keresel.
Egy minta sem ártana.... Mert amit itt leírtál, az nem mutatja a munkalapon való elhelyezkedést.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz tgumis #23102 üzenetére
Szia!
Segítséget jelenthet az adatbevitelben az adatok érvényesítés - lista - lista forrása CR1:CR21
Ezután amelyik cellára ezt megadtad, ott egy legördülő listából választhatsz, nem kell beírnod semmit. Ha a forrást rendezed, akkor könnyebb lesz a keresés.
Üdv.
[ Szerkesztve ]
-
Fferi50
őstag
válasz tgumis #23104 üzenetére
Szia!
Tervező módban:
Tegyél fel egy combobox activexvezérlőt a munkalapra, a listfillrange a listát címe.
A matchentry tulajdonságot állítsd 1-fmmatchentrycomplete értékre
Így amint elkezded begépelni az értéket, a mejelenő lista szűkülni fog.
Hozzákötheted egy cellához (linked cell), ahonnan kimásolhatod az értéket.
Ha kilépsz a tervező módból látod a listádat és választhatsz belőle, amint rákattintottál, megjelenik az értéke a hozzákötött cellában.Üdv.
-
Fferi50
őstag
válasz Szilard7 #23107 üzenetére
Szia!
Ha biztos, hogy minden H oszlopbeli értékre van J oszlopbeli érték és az első H előfordulás mellett van a J oszlopban érték, akkor fkeres a barátod. Ha nem így lenne, akkor kapsz hibaértéket, amit az első előfordulásnál átírsz a helyesre és a többi kijavul (persze ezt H értékenként kellene megtenni).
Ha J11-től kezdődnek az üres cellák:
J11 képlete =fkeres(H11;$H$5:$H10;3;0)
Ezután húzd végig a J oszlopon a képletet.Vagy:
Csinálsz egy irányított (speciális) szűrést a H:J tartományodból átmásolva egy másik tartományba, bejelölve, hogy csak az egyedi értéket másolja át.
Ezután az fkeres kereső tartománya az új, kimásolt tartomány lesz, képlet mint fent, csak a $H$5:$H10 helyett az új tartomány $-os címét kell beírnod ($X$2:$Z$30).
Üdv.
[ Szerkesztve ]
Új hozzászólás Aktív témák
- Politika
- Luck Dragon: Asszociációs játék. :)
- Google Pixel topik
- 3D nyomtatás
- Vicces képek
- BestBuy topik
- Mesterportrékkal érkezett a Honor 200 Pro
- Mibe tegyem a megtakarításaimat?
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- ubyegon2: Airfryer XL XXL forrólevegős sütő gyakorlati tanácsok, ötletek, receptek
- További aktív témák...
- Canva Pro előfizetés - 1 éves
- Adobe Előfizetések - Adobe Creative Cloud All Apps, Photography Plan - 12 Hónap
- Bitdefender Total Security 3év/3eszköz! - "Tökéletes védelem most kedvező áron..."
- Adobe Creative Cloud - 2024. 04. 05 - 2025. 04. 05-ig
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.