-
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
-
spe88
senior tag
válasz Fferi50 #41497 üzenetére
Köszi a segítséget. Átalakítottam. Valamit nem jó helyre írtam szerintem.
Private Sub Workbook_Open()
Public ASH As Worksheet
Set ThisWorkbook.ASH = ActiveSheet
Sheets("HELP_DATA").Select
Columns("E:E").Select
ActiveWorkbook.Worksheets("HELP_DATA").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("HELP_DATA").Sort.SortFields.Add Key:=Range("E1"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("HELP_DATA").Sort
.SetRange Range("E2:E601")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("HELP_DATA").Select
Columns("G:G").Select
Range("G2").Activate
ActiveWorkbook.Worksheets("HELP_DATA").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("HELP_DATA").Sort.SortFields.Add Key:=Range("G2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("HELP_DATA").Sort
.SetRange Range("G2:H601")
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
End With
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'Munkalap aktiválásakor mengnézzük, hogy az új munkalap a védendő-e:
If Sh Is Worksheets("Output") Then
'Ha a védendő, akkor jelszót kérünk:
If InputBox("Jelszó:") = "blbla" Then
'Ha jó a jelszó, engedjük az aktívvá tételt,
'és elmentjük új aktívként
Set ASH = ActiveSheet
Else
'Ha rossz, akkor:
MsgBox "Ehhez a laphoz Neked semmi közöd!!"
'Visszaállítjuk az előző munkalapot aktívnak:
ThisWorkbook.ASH.Activate
End If
End If
End Sub
Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name <> "Output" Then Set ThisWorkbook.ASH = ActiveSheet
End SubA 2. sornál megakad:
Compile Error:
Invalid attribute in Sub or Function
Mit tegyek? Köszönöm
[ Szerkesztve ]
Spóroljunk! Kerül, amibe kerül!
-
őstag
Sziasztok!
Jelenleg 2019.08 hónap van.
Hogy bírom képlettel megoldani, hogy az aktuális hónap -1 hónapot írjon ki a cellába?
Jelenleg eddig jutottam:
=KALK.DÁTUM(MA();-1)
Ezzel az a probléma, hogy a kapott érték:
2019.07.05
Nekem pedig csak annyi kell, hogy2019.07
Ezt hogy tudom kivitelezni egy cellán belül?
Köszönöm
-
Fferi50
őstag
válasz Richard #41504 üzenetére
Szia!
Az a kérdés, hogy utána dátumként szeretnél vele számolni tovább, vagy sem.
Ha igen, akkor a cellaformátumot állítsd "éééé.hh" -ra az egyéni formátumban.
Ha nem, akkor a képlet:=ÉV(KALK.DÁTUM(MA();-1)) &"." & SZÖVEG(HÓNAP( KALK.DÁTUM(MA();-1));"0#")
Bár az sem kizárt, hogy a képlettel létrejött értéket is tudja dátumként kezelni.
Üdv. -
alikov
csendes tag
Sziasztok!
Szeretném a segítségeteket kérni! Időt szeretnék átváltani másodpercre és azzal tovább számolni.
Pélául: 00:05:33 átváltani másodpercre.
A1: ez látszik: 00:05:33
A1: óó:pp:mmA2 cellában legyen másodperc, vagyis 00:05:33 az 333 másodperc
A2: milyen képlet kell?A3 cellába egy szám legyen pl. 15 723 liter
A3: # ##0" liter"
A4 cellába kiszámolni 1 másodperc alatt hány liter akármi van.
A4: =A3/A2” liter/1s”
A4 cella eredménye: 47,21 liter/1s -
spe88
senior tag
válasz Fferi50 #41503 üzenetére
Megcsináltam, most már hibát nem dob viszont most is az a helyzet, hogy ráugrok a lapra, amit védeni szeretnék és minden adat látszik a lapon. Miután nem ütök be semmit a jelszóhoz, kiírja a szokásos üzenetet: "semmi közöd...", leokézom és szabadon nézhetem az adatokat.
Mit tegyek?
Köszönöm
Spóroljunk! Kerül, amibe kerül!
-
Fferi50
őstag
Szia!
Egy icipici módosítás kell (amire én sem gondoltam először).Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name <> "Output" Then Set ThisWorkbook.ASH = ActiveSheet
End Sub
helyett:Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
If Sh.Name <> "Output" Then Set ThisWorkbook.ASH =sh
End Sub
-
Fferi50
őstag
Szia!
Akkor próbáld meg ezt:Private Sub Workbook_SheetActivate(ByVal Sh As Object)
'Munkalap aktiválásakor mengnézzük, hogy az új munkalap a védendő-e:
If Sh Is Worksheets("Output") Then
'Ha a védendő, akkor jelszót kérünk:
Sh.Visible = xlSheetHidden 'elrejtjük
If InputBox("Jelszó:") = "blbla" Then
'Ha jó a jelszó, engedjük az aktívvá tételt,
'és elmentjük új aktívként
Sh.Visible = xlSheetVisible ' láthatóvá tesszük
Application.EnableEvents = False 'letiltjuk az eseménykezelést
Sh.Activate 'aktíváljuk
Set ASH = ActiveSheet
Application.EnableEvents = True 'visszaállítjuk az eseménykezelést
Else
'Ha rossz, akkor:
MsgBox "Ehhez a laphoz Neked semmi közöd!!"
'Visszaállítjuk az előző munkalapot aktívnak:
ThisWorkbook.ASH.Activate
Sheets("Output").Visible = xlSheetVisible 'láthatóvá tesszük, hogy kiválasztható legyen a lapfül
End If
End If
End Sub
[ Szerkesztve ]
-
urobee
tag
Szia!
@Pakliman első kódja kicsit átalakítva szerintem megoldás lehet:
Ez ugye a thisworkbook-ba kerül:
Private Sub Workbook_Open()
'A munkafüzet megnyitásakor elmentjük az éppen aktuális munkalapot:
Set ASH = ActiveSheet
End Sub
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
On Error Resume Next
'Munkalap aktiválásakor mengnézzük, hogy az új munkalap a védendő-e:
If Sh Is Worksheets("rejtett") Then
'Ha a védendő, akkor jelszót kérünk:
If InputBox("Jelszó:") = "jelszo" Then
'Ha jó a jelszó, engedjük az aktívvá tételt,
'és elmentjük új aktívként
Set ASH = ActiveSheet
'elrejti az összes oszlopot és sort
Columns.EntireColumn.Hidden = False
Rows.EntireRow.Hidden = False
Else
'Ha rossz, akkor:
MsgBox "Ehhez a laphoz Neked semmi közöd!!"
'Visszaállítjuk az előző munkalapot aktívnak:
ASH.Activate
End If
End If
End SubEz pedig az elrejteni kívánt lapra:
Private Sub Worksheet_Activate()
'megjeleníti az összes oszlopot és sort
Columns.EntireColumn.Hidden = True
Rows.EntireRow.Hidden = True
End SubEz csak akkor lehet problémás, ha vannak rejtett sorok/oszlopok a munkalapon.
[ Szerkesztve ]
-
spe88
senior tag
válasz Fferi50 #41513 üzenetére
Köszönöm ezzel már működik!
Még annyi kérdés -- hasonlót már kérdeztem --, hogy ha van egy másik fájlba mutató elérési utam egy cellában, azt hogy tudnám megcsinálni, hogy ennek az értékét kiírja egy adott cellába?
INDIREKTTEL és ÉRTÉKKEL próbáltam.
pl.
ez az A1 cellaképletem
="'c:\abc\def\[termeles"&K1&".xls]"&K1&"'!A10"
A K1-ben az adott év szerepel
A1 cella értéke
'c:\abc\def\[termeles2019.xls]2019'!A10
Meg lehet valahogy oldani, hogy kiírja ezen elérési úton található A10-es cella értékét?
Köszönöm
Spóroljunk! Kerül, amibe kerül!
-
Louro
őstag
Szia,
ha jól értem itt annyiról lenne szó, hogy adott egy "fájlom.xlsx" állomány, aminek van egy "2019" nevű munkalapja és onnan az egyik - példa kedvéért A1 - cella tartalmát akarod behivatkozni.
Erre vagy azt szokták csinálni, hogy megnyitják a két állományt és a célfájlban kiválasztják a célcellát, majd = és utána átmennek a forrásállományba, ahol rákattintanak a forráscellára.
Ha pötyögős vagy, mint én, akkor =[fájlom.xlsx]2019!A1
Ha változóval akarod megoldani a hivatkozott munkalapot, akkor szerintem(!) a makró elkerülhetetlen.
Mess with the best / Die like the rest
-
spe88
senior tag
utóbbi a helyzet!
A fájlnévben is benne van az adott évszám és a munkalapnévben is.
Évente egyszer elég lenne megcsinálni azt amit írsz, de lesznek más fájlok is, amik hetente, havonta változnak. Meg sok fájlból húzza így is a dolgokat.
Szóval akkor ezek szerint erre makró kéne. Arra van valami ötlet?
Spóroljunk! Kerül, amibe kerül!
-
Fferi50
őstag
Szia!
Makróval direktbe beleírod a képletet abba a cellába, ahol szükséges:
pl.Range("A1").Formula="='c:\abc\def\[termeles" & Range("K1").Value & ".xls]" & Range("K1").Value & "'!A10"
Amikor a K1 cella értéke változik, akkor megismétled a képlet beírást - pl. a Worksheet_Change eseménykezelő segítségével.
Üdv. -
spe88
senior tag
válasz Fferi50 #41518 üzenetére
No ez az, hogy ezeket én még tudnám változtatgatni, de teljesen automatizáltan kéne megoldanom. Az itt lévő kollégák nálam is jóval topábbak az Excelhez. Esély nincs arra, hogy ezt-azt ne kelljen futtatgatni manuálisan, amikor változik a cella?
Kb. 15 kül. fájlból vesz adatokat -- egyelőre -- és több 100 cellába másolja.
Spóroljunk! Kerül, amibe kerül!
-
Fferi50
őstag
Szia!
"Esély nincs arra, hogy ezt-azt ne kelljen futtatgatni manuálisan, amikor változik a cella?"
Erre való az eseménykezelés:Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("K1")) Is Nothing then
Application.EnableEvents = False
Range("A1").Formula="='c:\abc\def\[termeles" & Range("K1").Value & ".xls]" & Range("K1").Value & "'!A10"
Application.EnableEvents = True
End If
End Sub
Ezt annak a munkalapnak a kódlapjára kell bemásolni, ahol változtatni szeretnéd az adatokat.
Természetesen a többi cellára is meg kell ezt csinálni.
Ha felteszel valahova egy mintát, akkor megnézem, hogyan lehetne egyszerűbben, mert ha ugyanazok a fájlok változnak, akkor egy Csere - képletben makróval is meg lehet tenni a változtatást, ha előtte már megvannak a képletek normálisan. Csak azt kell tudni, hogy mit - mire kell változtatni.Üdv.
-
spe88
senior tag
válasz Fferi50 #41520 üzenetére
Hogy nekem mindig valami olyan funkció kell, amit nem tud az Excel csak valami irgalmatlan hekkeléssel.
Szerintem akkor hagyjuk. Megpróbálom elmagyarázni nekik, hogy hogy kell kicserélni heti rendszerességgel az elérési utat aztán, majd lehúzzák maguknak a képletet.
Beírni egy makróba több 100, de később több 1000 sort csak egy ilyen miatt, hát nem tudom...
Spóroljunk! Kerül, amibe kerül!
-
Fferi50
őstag
Szia!
Ez nem hekkelés, ez normális automatizálási lehetőség!
Első körben egyszer beírod a képleteket a cellákba. Megjegyzed, hogy mit kell kicserélni. Aztán kiderül, hogy mire. Ez 1 azaz egy db makró sor!!!
Szóval semmi esetre sem kell kicseréltetni az elérési utat kézzel.
Nem tudom, hogyan derül ki, melyik fájlból kell az adatokat beszívni, de arra is vannak jó módszerek.
Üdv.
(Privi is ment.) -
ace05
senior tag
Üdv!
Olyat lehet csinálni, hogy keressen meg bizonyos szöveget és írja be egy cellába, hogy mennyiszer találta meg ?
-
bozsozso
őstag
Sziasztok,
Létezik arra valami fügvény, hogy a cella tartalma egész szám-e? Feltételes formázással szeretném azt megoldni, hogy ha tizedesre végződik a tartalma csak akkor használjon tizedes kimutatást.
Pl.: 6,5-öt írja ki viszont a 2-őt csak így simán és ne 2,0-nak.
Alapból egy tizedes van beállítva, hogy annyi látható.
-
Triathlete
senior tag
Sziasztok!
Van egy excel fájlom ami az asztali számítógépeken tökéletesen működik, de ha használni szeretném ugyanezt a fájlt android rendszeren vagy feltöltöm google drive-ba a kitevő függvény nem működik benne, ami a lelke az egésznek számomra.
pl:
=$D957*(1-ATL_exp)+E956*ATL_exp
Létezik valami beállítás amellyel működésre tudom bírni más platoformon is? Köszönöm előre is a választ!
KovacsK85 / Kovács Krisztián
-
Fferi50
őstag
válasz Triathlete #41529 üzenetére
Szia!
Mi az ATL_exp ?
Üdv. -
Sutyi73
csendes tag
Üdv! Segítséget szeretnék kérni.
Adott egy könyvtár, amiben xlsx fileok vannak. Egy táblázatban kellene összesíteni ezeknek a fileoknak adatait. Ezt hogyan lehet kivitelezni. Az A oszlopban levő számok egy egy embert jelentenek, a G oszlopban levők pedig munkaórákat. A cél, hogy egy táblázatban ezeket összesítsük. A könyvtárban az xlsx állományok 2019.08.04 N, 2019.08.04 É, 2019.08.05 N stb. elnevezésűek. Kérlek ha tudtok segítsetek. -
Louro
őstag
válasz Sutyi73 #41533 üzenetére
Nem teszteltem, de valahogy így
A célmunkalapra a fejlécet azért átmásolnám első körben és utána futtatnám.Sub GetInfo()
Dim wb As Workbook
Set wb = Activeworkbook
Path = "C:\Temp\"
Filename = Dir(Path & "*.xlsx")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
Range("A2:G"&Activesheet.Usedrange.Rows.Count).Copy _
Destination:=wb.Worksheets("Célmunkalap").Range("A" & wb.Worksheets("Célmunkalap").Usedrange.Rows.Count + 1)
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub[ Szerkesztve ]
Mess with the best / Die like the rest
-
Louro
őstag
válasz TheSaint #41535 üzenetére
Lehet gagyi lesz, de 10 másodperc alatt azt mondanám, hogy F oszlopba egy sorszám, ami így nézne ki:
F1: 1
F2 és alatta: =IF(E2=E1;F1;F1+1)Majd erre dobnék egy feltételes formázást úgy, hogy a sorokat színezze aszerint, hogy páros vagy páratlan szám van az F oszlopban.
A feltételes formázásnál saját képletet használnék: =MOD(F1;2)=0, a formátumnál meg a színt kiválasztanám.
[ Szerkesztve ]
Mess with the best / Die like the rest
-
TheSaint
aktív tag
Köszi, hasonlóval próbálkoztam, de mint a példán is látható egy "/" jellel kezdődik minden érték (ami a valóságban hipertitkos vállalati kódolást takar, ami így néz ki: pl.: BZ19/0473 , stb...) tehát nem tudtam egy ilyen egyszerűbb képletre redukálni a tartalmat, amit könnyebb már kezelni.
Azért várok minden ötletet. -
Louro
őstag
válasz TheSaint #41541 üzenetére
A vezérhangya nem hagyott békén, így lett egy kicsit igényesebbnek tűnő megoldás.
Jelöld ki azt a tartományt, amit színezni szeretnél az első sort kihagyva. Az marad fehér.
Feltételes formázás (conditional formatting), majd a legalsó és New Rule és legalsót válaszd.A képlet: =OR(AND($E1=$E2;CELL("color";$E1)=1);AND($E1<>$E2);CELL("color";$E1)=0))
Majd válasz egy színt a Format alatt lévő Fill fül alatt. Végén maradnak az Ok-Ok.
Mit is csinál a képlet:
Amennyiben megegyezik a két azonosító és az első formázott (színezett), akkor beszínezi. Ha nem egyezik meg az előtte lévővel és az előtte lévő nincs színezve, beszínezi.Így segédoszlop nélkül megúszható Kipróbáltam is.
Mess with the best / Die like the rest
-
dm1970
tag
Üdv Uraim!
Valamikor régen sikerült megszülnöm egy képletet, ami így néz ki:
VKERES(H1;A1:$G$8;H1), amely másolva van I1-I7-ig.
Mint látszik a táblázaton, annyit csinál, hogy megadja, melyik sor hányadik oszlopába került szám. Most próbálom újra megfejteni a működését, mert felmerült egy olyan gondom, hogy nem csak szám kerülne a sorba, viszont ebben az esetben "hiányzik" hibát ad. Természetesen minden sorba csak egyszer kerülne valami. Miért csak akkor működik a képlet, ha számot
írok be? Valami okosság, hogy hogyan oldjam meg?
A B C D E F G H I
Köszi dm
-
Louro
őstag
válasz dm1970 #41543 üzenetére
Szia,
lehet tömbfüggvénnyel oldanám meg.
A képlet így nézne ki:
=MATCH(FALSE;ISBLANK(A1:H1);0)
Majd nem Enter, hanem CTRL+Shift+Enter. Ezt a képletet pedig lefelé tudod másolniHa magyarul kell, akkor
=HOL.VAN(HAMIS;ÜRES(A1:H1);0)Tök mindegy mivel van feltöltve, visszadja, hogy hol van az első feltöltött cella a sorban.
A VKERES-sel szerintem az volt a baj, hogy eleve megadtál neki egy segédoszlopot a 8. sorban. Na meg a H oszlopban nem tudom mi az a szám, de ahhoz közelítő értéket keres. Mivel nem adtad meg az utolsó paramétert, megközelítő számot keres. Mivel betű van ott, ezért kaptál hibát. A korábbi megoldás elég nyakatekert megoldás volt (számomra).
[ Szerkesztve ]
Mess with the best / Die like the rest
-
dm1970
tag
Először a vkeres. Igen az utolsó sorban levő számok alapján adta meg az oszlop sorszámát, a H oszlop is segéd volt, ami a képlet másolás miatt kellett, az első képletnél még a 8. volt a segédsor, az utolsónál a 2. Igen, ha beírtam a szokásos "hamis"-t a képletbe, akkor "hiányzik" lett a vége, de mivel működött, nem foglalkoztam vele. Pont az a gondom, hogy kitalálok valamit, aztán még valamit, s a végére kijön egy elég összevissza képlet. S egyszer eljutok odáig, hogy ha bele kell módosítani, már nem tudok mert nem értem, nem tudom mit miért írtam bele.
A képlet viszont OK, köszönöm, remélem tudom alkalmazni az eredeti táblázatban, mert a csatolt csak egy egyszerűsített verzió.Kipróbáltam, sajna nem megy. Kevés volt az egyszerűsített tábla.
Két kérdés még:
Gondolom nem gond, hogy nem A1:H1 hanem pl A20:A50?
Akkor is megtalálja, hogy hányadik oszlop, ha azok képlet alapján töltődnek?
Hogy érthetőbb legyek, az előző táblázatban A1:G7-ben végig képletek vannak, s csak bizonyos feltételek teljesülésekor kerül a cellákba valami.[ Szerkesztve ]
-
Mutt
aktív tag
válasz dm1970 #41543 üzenetére
Szia,
Jöttek már tömbfüggvényes változatok, de itt van pár változat sima függvénnyel:
=SZORZATÖSSZEG((HOSSZ(A1:G1)>0)*($A$8:$G$8))
=HAHIBA(HOL.VAN(SOKSZOR("Z";255);A1:G1);HOL.VAN(2^99;A1:G1))
=KERES(2;1/(A1:G1<>"");$A$8:$G$8)
Az elsőnél hibás lesz az eredmény, ha egy soron belül több találat is lehetséges.
A másik kettőnél pedig nem a legelső találatot adja vissza, hanem a legutolsót így megint hibás lehet az eredmény ha egy soron belül több találat van.üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
bozsozso
őstag
Sziasztok,
Egyszerűen nem tudom mi lehet a probléma. Egy cellába idő formátumból a perceket akarom kiíratni a PERCEK fügvénnyel. Ezzel nincs is gond. Formátumnak beállítottam, hogy "pp", mert 2 karakteren szretném mindenképpen még a "00"-át is megjeleníteni. Ez működik is addig amig el nem mentem. Kilépek újraindítom a táblázatot és akkor már minden esetben "01"-et ír a cellába, megnézem a formátum beállítást és nem a pp van az adott cellára hanem "hh". Ha nem is ezzel a módszerrel, de hogyan tudom megvalósítani, hogy a perceket 2 karakteren jelenítse meg? Bár nem értem mi a gond. 2010-es és 2016-os excelben is ezt csinálja.
Új hozzászólás Aktív témák
- Motorola Moto G24 Power - hol van az erő?
- Elektromos rásegítésű kerékpárok
- Milyen TV-t vegyek?
- Milyen egeret válasszak?
- Garmin Forerunner 165 - alapozó edzés
- Na, még egyszer, csak ezúttal OnePlus Open néven
- Amazon Kindle
- Kamionok, fuvarozás, logisztika topik
- Amlogic S905, S912 processzoros készülékek
- Nyíregyháza és környéke adok-veszek-beszélgetek
- További aktív témák...