- Samsung Galaxy S25 Ultra - titán keret, acélos teljesítmény
- Samsung Galaxy A34 - plus size modell
- Új térképfunkciók érkeztek az Amazfit T-Rex 3-ba
- Google Pixel topik
- One mobilszolgáltatások
- Nem várt platformon a OnePlus Nord 5
- Google Pixel 9 Pro XL - hét szűk esztendő
- Milyen okostelefont vegyek?
- Elkészült és telepíthető az Android 16
- Xiaomi 14T Pro - teljes a család?
-
Mobilarena
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
-
Mutt
senior tag
válasz
andreas49 #54482 üzenetére
Szia.
A képletból hiányzik a megfelelő helyről zárójel.
Az első JOBB után 2 db záró-zárójel kell, az egyik zárja a jobb oldali csonkolást, a második pedig létrehozza a dátumot az adott év, hónap és nap alapján.
A helyes számításhoz a legelső Dátum elé kell még egy nyitó-zárójel, mert előbb a különbséget akarjuk kiszámolni, majd azt 365-el elosztani.Sortörésekkel ez a helyes formátum. Excelben sortörések nélkül kell majd neked.
=KEREKÍTÉS(
(DÁTUM(BAL(H2;4);
KÖZÉP(H2;5;2);
JOBB(H2;2))
-
DÁTUM(BAL(XKERES(K2;ALAP!AB:AB;ALAP!AF:AF);4);
KÖZÉP(XKERES(K2;ALAP!AB:AB;ALAP!AF:AF);5;2);
JOBB(XKERES(K2;ALAP!AB:AB;ALAP!AF:AF);2)
)
)
/365;0)
Három kérdés/észrevétel:
1. Excel 2021-től lehet használni a LET függvényt, amivel az ismétlődő részeket lehet egyszerűsíteni illetve felgyorsítani. pl. 3x keresed ki ugyanazt az értéket, ezt lehet rövidíteni, vagy akár a dátumra alakítást.=LET(adat1;H2;
adat2;XKERES(K2;ALAP!AB:AB;ALAP!AF:AF);
atalakit;LAMBDA(x;DÁTUM(BAL(x;4);KÖZÉP(x;5;2);JOBB(x;2)));
eredmeny;KEREKÍTÉS((atalakit(adat1)-atalakit(adat2))/365;0);
eredmeny)
2. Van vmilyen indoka, hogy a dátumok nem értékként hanem szövegként vannak tárolva? Ha csak megjelenítésről van szó, akkor cella számformátummal meg lehet oldani. Ezzel a szöveges változattal csak hátrány van, nem tudsz pl. kimutatásban csoportosítani.
3. Kipróbálhatod, hátha a DÁTUMÉRTÉK függvény a H és az AF oszlopon is megfelelő.üdv
-
andreas49
senior tag
Sziasztok,
Szeretném megállapítani az adatbázisomban szereplő neveknek egy adott dátumhoz tartozó életkorát.
Konkrét elrendezés: Aktuális munkalapon adott dátum ’H’ oszlop. ’Nevek’ ’K’ oszlop
’ALAP’ munkalapon ’Nevek’ ’AB’ oszlop, ugyanitt névhez tartozó születési idő: ’AF’ oszlop
A dátumok jelenlegi formátuma minden munkalapon: ’ÉÉÉÉHHNN’
Jelenleg ezt a képletet alkalmazom, de a táblázat ~2/3-tól téves számítási eredményeket ad. (táblázat 115 ezer sor
=KEREKÍTÉS(DÁTUM(BAL(H2;4);KÖZÉP(H2;5;2);JOBB(H2;2)-DÁTUM(BAL(XKERES(K2;ALAP!AB:AB;ALAP!AF:AF);4);KÖZÉP(XKERES(K2;ALAP!AB:AB;ALAP!AF:AF);5;2);JOBB(XKERES(K2;ALAP!AB:AB;ALAP!AF:AF);2)))/365;0)
Köszi a segítséget előre is. -
Mutt
senior tag
Szia,
Power Query-ben megadhatsz nyelvterületet adatkonverziókor. Az oszlop bal felső sarkában az adattípus megadásakor a legutolsó opció ez, válaszd ki a megfelelő formátumot.
Ha ezt sokszor kellene megcsinálni, akkor érdemes alapértelmezetté tenni. Power Query-ben Fájl -> Lehetőségek és beállítások -> Lekérdezés beállításai. Alul az aktuális munkafüzetre tudsz adni egy területi beállítást.
üdv
-
Fferi50
Topikgazda
Szia!
A fájl beolvasása előtt próbáld meg a következőt:
Fájl - Beállítások - Speciális - Rendszerbeállítások szerinti elválasztók használata jelölőből vedd ki a pipát - majd a tizedesjel kockájába írd be a pontot, majd OK.
Ezután beolvasod a fájlt. A beolvasás után visszaállíthatod a tizedesjelet a rendszerbeállítások szerintire.
Üdv. -
VGYke
addikt
Sziasztok! Van egy adat.txt fájlom, benne vesszővel elválasztott adatok.
Ezt adatlekérdezéssel (Adatok-Szövegből vagy CSV-fájlból) lekérdezem és átalakítom.
Viszont, problémákba ütközöm a száformátumokkal.
Van olyan oszlop, ahol a 12.2 érték az 12.2 és van olyan oszlop, ahol a 12.2 érték 2025.12.02 dátum!
Az a probléma, hogy a txt-ben a tizedeshely az nem vessző, hanem pont.
Tudtok megoldást javasolni, hogy ami a txt-ben 12.2, az ne dátum legyen, hanem 12.2?
-
Mutt
senior tag
válasz
pruzsi #54473 üzenetére
Szia,
Megint az adatbázis függvényeket nyomatják, miközben a valós életben teljesen feleslegesek. No mindegy.
Az eredeti fájl itt van: https://www.nkp.hu/tananyag/75215118658/download/T%C3%A1bl%C3%A1zatkezel%C3%A9s/felveteli.xlsx
Csókoltatjuk aki
1) felesleges szóközöket hagyott pár cellában (pl. F6, F12, F30).
2) nem egyértelműen fogalmazta meg a kérdést.Kérdés:
1) Példánkban az AB.MEZŐ alkalmazásánál miért nem elegendő csak a szóbeli pontszámot megadni, miért kell azzal az eredeti kritériumot bővíteni?
A képlet hibát jelez, ha nincs az adott feltételnek megfelelő érték, vagy több ilyen is van.
Azonban ilyen esetben is lehet több egyező érték (a mintában "véletlenül" nem ez az eset), ezért célszerübb előbb egy AB.DARAB-al lekérdezni a találatok számát és az alapján vagy üzenetet vagy az eredményt megjeleníteni. pl.=ÁTVÁLT(AB.DARAB2(A1:J151;"Név";N1:Q3);0;"Nincs találat";1;AB.MEZŐ(A1:J151;"Név";N1:Q3);"Több találat van")
2) Vajon mi történik, ha a kritériumtartomány üres sort tartalmaz? Válaszunkat indokoljuk!
Ahol nincs kereső kifejezés ott a teljes tartományt kapjuk vissza. Ha a kritérium teljesen üres, akkor az egész adatbázisból kapjuk meg az eredményt.3) Fejezzük be a feladatot a P7:Q10 tartományba írt képletek megadásával! Itt már elegendőek ugyan a „HATÖBB” függvények, de a feladatot oldjuk meg nemcsak azokkal, hanem az „AB” függvények alkalmazásával is!
Ha itt a "teljes tagozat" a választott nyelvtől függetlenül "reál" tagozatos iskolásokat jelenti, akkor a Nyelv1 és Nyelv2 kritérium felesleges (ki is hagyható a kijelölésből, vagy üresen kell hagyni).
P7-ben a képlet
=AB.DARAB($A$1:$J$151;"Kód";$R$1:$R$2)
A többi képlet látható fent.Bónusz: a feladatot oldjuk meg NE csak AB függvényekkel.
a) HATÖBB-el.=DARABHATÖBB(D2:D151;"reál")
=ÁTLAGHATÖBB(G2:G151;D2:D151;"reál")
=MAXHA(G2:G151;D2:D151;"reál")
=MINHA(G2:G151;D2:D151;"reál")
b) SZŰRŐ-vel
=DARAB(SZŰRŐ(A2:A151;D2:D151="reál"))
=ÁTLAG(SZŰRŐ(G2:G151;D2:D151="reál"))
=MAX(SZŰRŐ(G2:G151;D2:D151="reál"))
=MIN(SZŰRŐ(G2:G151;D2:D151="reál"))
Ha több feltétel alapján kell szűrni, akkor már bonyolultabb a dolog (pl. az eredeti kérdésben reál tagozat és német nyelv1 vagy nyelv2-ben). Itt felesleges szóköz miatt inkább KIMETSZ-be tettem mindent:
=DARAB(SZŰRŐ(A2:A151;(KIMETSZ(D2:D151)="reál")*ELŐJEL((KIMETSZ(E2:E151)="német")+(KIMETSZ(F2:F151)="német"))))
c) újabb függvény a CSOPORTOSÍTÁS.ALAP.SZERINT (GROUPBY), ahol 1 képlettel mind a 4 eredmény megkapható:
A képlet pedig:
=CSOPORTOSÍTÁS.ALAP.SZERINT(D1:D151;G1:G151;VÍZSZ.HALMOZÁS(DARAB;ÁTLAG;MAX;MIN);1;0;;D1:D151="reál")
4) Csoportmunkában, a táblázatkezelő program alkalmazásával oldjuk meg a következő problémákat!
a) válasz NEM, mivel LATIN nyelv esetén nincs meg az induló létszám.
Ezt egy Kimutatás vagy az új Csoportosítás.alap.szerint tud segíteni.
b) NEM, ha itt is 8 a minimum fő.
Itt a képlet hosszú 3 indok miatt: 1) felesleges szóköz néha, 2) néha üres a nyelv2, 3) néha ugyanaz van a nyelv2-ben mint nyelv1-ben. Ezeket szűrtem ki, de KOREÁT nem változtatja meg.
=CSOPORTOSÍTÁS.ALAP.SZERINT(KIMETSZ(F1:F151);KIMETSZ(F1:F151);DARAB2;3;0;2;(F1:F151<>"")*(KIMETSZ(E1:E151)<>KIMETSZ(F1:F151)))c) Amennyiben az iskolának takarékoskodnia kell, akkor milyen beosztásban indítható el a legkevesebb nyelvi csoport, ha a maximális csoportlétszám 24 fő?
Ehhez vagy fáradt vagyok, vagy túlegyszerűsítem.
Az a) kérdésben megnéztük hogy adott nyelv hányszor fordul elő elsődlegesen.
7 nyelv van, van ahol csak 3 fő van van ahol több mint 24. Ha nincs induló létszám limit, akkor 10 csoport jön ki.
üdv
-
pruzsi
őstag
Üdv.
https://www.nkp.hu/tankonyv/digitalis-kultura-11-nat2020/lecke_02_011
Tananyag végén lévő feladatokból válasz egyet és küld el nekem a megoldást
Szomszéd kislány kapott ilyen feladatot de én nem vagyok excel szakértő mindig is utáltam , tudnátok értelmezni mit szeretne a kedves Tanár tőle.
-
Mutt
senior tag
válasz
MCMLXXXII #54467 üzenetére
Szia,
Kaptál választ, de azért bedobok egy másikat is ami MS365 esetén használható.
Tudunk olyan saját függvényt létrehozni, amivel egy cellából a számokat tartalmazó részt ki tudunk szedni. A REDUCE függvény tud segíteni.Ha A1-ben van az eredeti szöveg, akkor B1-ben a képlet megadja az eredményt:
=REDUCE("";SORSZÁMLISTA(HOSSZ(A1));LAMBDA(a;c;a&HA(SZÁM(SZÖVEG.TALÁL(KÖZÉP(A1;c;1);"0123456789"));KÖZÉP(A1;c;1);"")))
Egy kicsit rugalmassabbá lehet tenni, ha egy LAMBDA függvényt csinálunk. Ekkor a Névkezelőben kell elmenteni én a KINYER nevet adtam neki:
=LAMBDA(
bemenet;
csak_szamok;
kiegeszito;
LET(h;HOSSZ(bemenet);
formula;HA(csak_szamok;ELŐJEL;NEM);
lista;"0123456789"&kiegeszito;
r;REDUCE("";SORSZÁMLISTA(h);LAMBDA(a;c;a&HA(formula(SZÁM(SZÖVEG.TALÁL(KÖZÉP(bemenet;c;1);lista)));KÖZÉP(bemenet;c;1);"")));
HAHIBA(r+0;r)
))
3 paramétere van: az első az eredeti szöveget tartalmazó cella, a második egy 0 vagy 1 attól függően hogy a számok vagy a szöveg kell nekünk a cellából. A harmadik pedig egy karakter lista, amit a számokhoz fel akarunk pluszban venni (pl. tizedesvessző).
A haladó Exceleseknek is szerintem rejt érdekességet a képlet.
üdv
-
Fferi50
Topikgazda
válasz
MCMLXXXII #54469 üzenetére
Szia!
Szabályok nélkül sajnos nem lehet általános megoldást adni. Amennyiben nem túl sok tétel van, érdemes manuálisan végigmenni a sorokon és a tételnév után tenni egy "elválasztójelet" , pl. pontosvesszőt. Ezután lehet alkalmazni rá az Adatok - Szövegből oszlopok menüpontot, elválasztójeles szövegre, érdemes ránézned, hogyan működik.
Üdv. -
huan
őstag
-
Fferi50
Topikgazda
Szia!
Szerintem nem sokra mennél a legördülő menüvel - 1100-sort átlátnál? -. Helyette javaslom a feltételes formázást - Cellakiemelési szabályok - ismétlődő értékek beállítását az adott oszlopra. Így amennyiben olyan számot írsz be, amely már létezik az előtte levő sorokban, a színezésből azonnal látod.
(Ráadásul úgy gondolom, ezeket "számokat" csak szövegként tudod bevinni, mert az Excel 15 számjegynél többet nem tud kezelni.)
Üdv. -
MCMLXXXII
tag
Sziasztok!
Szerintetek melyik képlettel lehetne egy ár ajánlatos excel t szét bontani több oszlopra mert csak egy ből áll ? -
huan
őstag
Sziasztok,
Azt az "egyszerű" feladatot hogyan tudnám megcsinálni, hogy egy táblában, mondjuk a B-oszlopban vannak ilyen számok: 2400914530300191I2151087 -jelenleg 1100db, aminek az utolsó 4 karaktere változik, ....51086,....51080...stb. random, nem sorrendben, de mindegyikből egy darab van a listában.
Amikor 1101-ik sorba írnék be újat, akkor egy legördülő menü jelenne meg a már beírtakkal és ha ismétlődés lenne, akkor csak az az egy gördülne le, jelezve, hogy már van a listában. (remélem érthető)
Köszönöm előre is! -
Fferi50
Topikgazda
válasz
Rodzser Mór #54456 üzenetére
Szia!
A Hiperhivatkozás függvénnyel próbálkozhatsz, az ha jól állítottad be, akkor húzható lefelé. A függvényt a mellette levő cellába tedd.
Üdv. -
Fferi50
Topikgazda
válasz
Geryson #54457 üzenetére
Szia!
A 2020.01.15 szöveg szerintem és nem dátum. Nem elég a cella formátumát dátumra állítani, ettől a benne levő érték marad szöveg. Dátummá kell alakítani valamelyik dátum függvénnyel, pl. Dátum(bal(A1;4);közép(A1;6;2);jobb(A1;2)).
Ekkor lesz valóban dátum az adott cellában.
Üdv. -
Rodzser Mór
senior tag
Sziasztok!
Excel tábla celláiban vannak weboldalak linkjei. De nem kattinthatók. Nem csinál semmit, nincs mögötte kivatkozás. Nem szeretném egyesével beszerkeszteni.
Hogyan lehet kattinthatóvá tenni egyszerűen?Próbáltam html-ként elmenteni, úgy nem lett belőle még link.
-
Geryson
addikt
Ha van egy cellám, amiben egy dátum van (egy programból kiimportált adat DE már átállítottam a cellaformátumot dátumra, abból is többet kipróbáltam). A mellette lévő cellában az =ÉV() ezt az eredményt hozza: 1905.07.12
A forráscella dátuma a következő: 2020.01.15.
Miért?
-
Geryson
addikt
Van egy viszonylag egyszerű képletem:
=HA(K2="HUF";L2;L2*1)
A képlet azt csinálná, hogy ha a K2 eredménye más, mint HUF, akkor kiszorozza az L2 cellát az aktuális árfolyammal. Igen ám, de gondoltam, hogy 5 év adatait (2020-2024) vetném össze, és így 5 külöböző árfolyamot kellene nézni. A dátumot tartalmazó cella a H2, ide már kihoztam egy ÉV képlettel az értéket (pl. 2020, 2021, stb.). Hogyan nézne ki egy ilyen egymásba illesztett HA-HA-HA fügvény? Kérhetek egy kis segítséget?
-
DasBoot
aktív tag
válasz
Fferi50 #54442 üzenetére
Persze, de csak otthonról. Addig is az U105-be írva =szum(S105:T105;$D$105). Az S és T oszlopok növekednek,106,107.... A D105 rögzítve. Nem túl bonyolult.Aztán a dollárt kivettem, manuálisan írtam be a D105 címett .Így nem változott. Igen, lehet sima összeadás is, nem kell a tartomány, de most már érdekelne a megoldás, talán egy bonyolultabb előfordulásnál fogom tudni, mi a teendő.
-
Mutt
senior tag
válasz
DasBoot #54438 üzenetére
Szia,
Nem hinném hogy tud segíteni, de ez a makró megnézi a képleteket tartalmazó cellákat és próbál bennük hibát találni. Az eredményt az immediate ablakba írja ki.
A CheckFormula függvényben 4 általános hiba ellenőrzés van:
1) a képlet nem megfelelően kezdődik
2) zárójelek nincsenek párban
3) körkörös hivatkozás van a cellában
4) a fájl hívatkozás érvénytelenSub ListFormulas()
Dim wsCurrent As Worksheet
Dim rngFormula As Range
For Each wsCurrent In ThisWorkbook.Worksheets
With wsCurrent
'nézzük elöször hogy van-e hibát tartalmazó cellát
On Error Resume Next
Set rngFormula = .Cells.SpecialCells(xlCellTypeFormulas, 16)
On Error GoTo 0
If Not rngFormula Is Nothing Then
Call PrintFormulas(rngFormula, 100)
End If
'nézzük a nem hibát tartalamazó cellákat
On Error Resume Next
Set rngFormula = .Cells.SpecialCells(xlCellTypeFormulas, 7)
On Error GoTo 0
If Not rngFormula Is Nothing Then
Call PrintFormulas(rngFormula, 100)
End If
End With
Next wsCurrent
End Sub
Sub PrintFormulas(rng As Range, counter As Long)
Dim r As Range, c As Long
Dim keplet As String, hiba As String
c = 1
For Each r In rng
keplet = r.Formula2
hiba = CheckFormula(keplet, r.Address)
If hiba <> "" Then
Debug.Print "Hely: " & r.Parent.Name & r.Address & ", Hiba: " & hiba & ", Képlet: " & keplet
End If
c = c + 1
If c > counter Then Exit For
Next r
End Sub
Function CheckFormula(str As String, loc As String) As String
CheckFormula = ""
'nézzük hogy mivel kezdõdik a képlet
If InStr(1, "=+-@", Left(str, 1)) = 0 Then CheckFormula = "Elsõ karakter hibás"
'képletben párosával kell lennie a zárójeleknek
Dim leftBracket
leftBracket = Len(str) - Len(Replace(str, "(", ""))
If Len(str) - Len(Replace(str, ")", "")) <> leftBracket Then CheckFormula = "Zárójel nincs párban"
'körkörös hivatkozás: képletben saját cella hivatkozás nem lehet
'hivatkozás lehet: A1, $A$1 formátumban, töröljük a $ jeleket az ellenõrzéshez
If InStr(1, Replace(str, "$", ""), Replace(loc, "$", "")) > 0 Then CheckFormula = "Körkörös hivatkozás"
'keressünk fájl hivatkozást a képletben
Dim filePath As String
If InStr(1, str, "[") > 0 Then
filePath = Mid(str, 2, InStr(1, str, "]") - 1)
'töröljük a [ ] ' jeleket
filePath = Replace(Replace(Replace(filePath, "[", ""), "]", ""), "'", "")
'létezik a fájl?
If Len(filePath) > 0 Then
If (Dir(filePath) = "") Then CheckFormula = "Fájl nem létezik"
End If
End If
End Function
-
DasBoot
aktív tag
válasz
Fferi50 #54437 üzenetére
Jó szerencsét!
A kérdésekre válaszolván! Mind a 7 munkalapon egyesével nézem végig a cellákat. Igen, mindegyiknél az az üzenet. Erről írtam lappy-nak. #Hibaüzenet-et egyelőre sehol nem látok, még a kiszélesített oszlopokban sem. A képletkiértékelőt éppen most alkalmazom, eddig az még nem volt. Az a baj, hogy egyik cella sem gyanús. igen, minden munkalapnál ez a probléma, de más táblázatoknál nem, nyilván. Egyébként ez a probléma azóta van, hogy számolásnál, ami 3 cella értékét adja össze, amikből az egyiket rögzítettem.
-
Fferi50
Topikgazda
válasz
DasBoot #54436 üzenetére
Szia!
Ha ez az üzenet, akkor bizony még van valahol valami, - esetleg rejtett - hiba. Próbálj olyan cellákat keresni, amelyekben #Hibaüzenet jelenik meg az eredmény helyén.
A gyanús képleteknél használhatod a Képletkiértékelő lehetőséget.
Lehetséges, hogy olyan munkalapra, fájlra hivatkozol ami korábban helyesen benne volt a képletben, de közben eltávolították vagy áthelyezték, más útvonalon lenne elérhető.
Minden munkalapnál ezt a hibaüzenetet kapod vagy csak egynél?
Üdv.
Ps. Ilyenkor sajnos csak sziszifuszi munkával határolható be a hiba helye. -
Fferi50
Topikgazda
Szia!
Amennyiben a munkafüzet nyitva van, az Application.Ontime metódussal beállíthatsz időzítést egy adott makróra. Itt [link] találod a Helpet hozzá. Itt csak tárgynapi időpontot tudsz megadni, más napokra nem, de amikor a munkafüzet nyitva van, minden nap működik az adott időpontban.
Ha a munkafüzet nincs nyitva a kívánt mentéskor, akkor a Windows feladat ütemezőben tudod beállítani a megnyitást és utána a makró lefutást egy eseménykezelőben, pl. Open eseményre, majd nyilván vissza is kell zárni a fájlt.
Munka közben szerintem az Ontime jó lehet számodra. (Persze nem árt, ha a felhasználó is tud róla, ne lepődjön meg, ha rövid időre "néma" lesz a fájl.)
Üdv. -
huan
őstag
válasz
Fferi50 #54354 üzenetére
Sziasztok,
Működik szépen a munkalap tartományának mentése képként egy elhelyezett gomb megnyomásakor.
Azt szeretném kérdezni, hogy egy beállított időben (pl. péntekenként 13:30-kor, esetleg több megjelölt időben) automatikusan meg tud történni ez a mentés? Tehát nem gombnyomásra.
Köszönöm előre is! -
DasBoot
aktív tag
Jó szerencsét! A bemásolt képen található problémára keresek megoldást. Hogyan tudom megkeresni, hogy melyik cellában van a hibás képlet? Köszönöm a választ. Üdv. Joe [kép]
-
bpmcwap
senior tag
magát az excelt mentettem le jelszóval és találtam egy ilyen kódot, amit meg naplózáshoz fogok használni... még nem próbáltam, de elvileg ez működik - ennyire nem értek hozzá
Private Sub Workbook_Open()
Dim logSheet As Worksheet
Dim nextRow As Long
Dim userName As String
Dim timeStamp As String
Const LOG_SHEET_NAME As String = "Napló" ' A napló munkalap neve
On Error Resume Next
Set logSheet = ThisWorkbook.Sheets(LOG_SHEET_NAME)
' Ha nincs ilyen lap, létrehozza és nagyon elrejti
If logSheet Is Nothing Then
Application.ScreenUpdating = False
Set logSheet = ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count))
logSheet.Name = LOG_SHEET_NAME
logSheet.Cells(1, 1).Value = "Időbélyeg"
logSheet.Cells(1, 2).Value = "Felhasználó"
logSheet.Cells(1, 3).Value = "Esemény"
logSheet.Visible = xlSheetVeryHidden ' Nagyon rejtett!
Application.ScreenUpdating = True
End If
If logSheet Is Nothing Then Exit Sub ' Hiba esetén kilép
On Error GoTo 0 ' Visszaállítjuk a normál hibafigyelést a lapkezelés után
On Error Resume Next ' Újra bekapcsoljuk az általános hibaátugrást az íráshoz
userName = Environ("USERNAME") ' Windows felhasználónév
If userName = "" Then userName = "Ismeretlen"
timeStamp = Format(Now(), "yyyy-mm-dd hh:nn:ss")
' Következő üres sor keresése (rejtett lapon is működik)
nextRow = logSheet.Cells(logSheet.Rows.Count, "A").End(xlUp).Row + 1
If nextRow < 2 Then nextRow = 2
' Adatok írása
logSheet.Cells(nextRow, 1).Value = timeStamp
logSheet.Cells(nextRow, 2).Value = userName
logSheet.Cells(nextRow, 3).Value = "Megnyitva"
' Nem mentjük automatikusan a munkafüzetet itt!
On Error GoTo 0
End Sub -
Mutt
senior tag
válasz
bpmcwap #54426 üzenetére
Szia,
A számítógépbe belépett felhasználót le lehet kérdezni ezekkel a módokkal:
Application.UserName()
Environ("USERNAME")
A számítógép azonosítóját pedig így:
Environ("COMPUTERNAME")Azonban ezek után is a jelszó ellenőrzés a nehezebb dolog. Excelben ezeket tárolni nem biztonságos.
üdv
-
bpmcwap
senior tag
ez jó ötlet, köszönöm! Más lehetőség jól sejtem hogy nincs? Olyan ami fölött én vagyok a "rendszergazda"?
-
bpmcwap
senior tag
Beszaladtam az erdőbe
HELP ME!
Adott egy vállalati hálózat ( vpn, citrix ) amiben létre kellett hozni egy Excel táblázatot (win11), amihez nem férhet hozzá bárki. A jelszó védelem nem játszik, mert akinek meg van a jelszó, az ugye hozzáférhet – nem bízok meg mindenkiben, simán lehet, hogy elterjed a jelszó… Külső tárhelyre (googledrive, saját szerver, nextcloud) nem lehet feltenni, mert érzékeny adatok és háklisak rá… A kérdés, hogy megtudom-e úgy osztani a táblázatot, hogy ne csak jelszót kelljen megadni, hanem pl e-mail-címet is, vagy emailben küldött jelszó, „neadjisten” ipcím/idő/felhasználó naplózása…
Van erre WIN11-en valami megoldás belső hálózaton? -
-
Mutt
senior tag
Szia,
Nem írtál Excel verzió számot.
1) MS365 vagy Excel 2021/24 esetén van SZŰRŐ/XKERES és egy segédoszlop kell.
Egy lapon mutatom, de nyugodtan lehet a cég/alkalmazott list a másik lapon.
a) A céget adatérvényesítéssel megcsinálod.
b) Ezek után N2-es cellába egy képlettel kiszűrjük, a dolgozók nevét a választott cég alapján a SZŰRŐ (angolul FILTER) függvénnyel. A képlet:=SZŰRŐ(I1:L7;H1:H7=$B$8)
c) A dolgozó kiválasztása megint adatérvényesítéssel fog menni, aminek a képlete:=INDEX($N$2#;0;1)
Itt az N2-es cellára hivatkozunk ahova az előző lépésben a neveket már kikerestük. A hashtag a cellahivatkozás végén azt jelenti, hogy az N2-ben található képlet összes eredményét (legyen az 1 vagy 100) adja vissza. Az INDEX azért kell mert csak az első oszlop kell onnan.
d) A dolgozó adatait egy XKERES-sel írjuk ki. Ennek a képlete:=HA($B$10="";"";XKERES($B$10;$N:$N;$O:$Q;""))
2) Ha Excel 2021 előtt vagy akkor használjuk a régi logikát, vagyis tartományokat hozunk létre amelyek tartalmazzák cégenként a választható listát. Ehhez viszont a mostani formátum nem jó. Inkább vmi ilyen kellene:
Tehát cégenként vannak felsorolva a személyek.
a) A cégenkénti tartományoknak adjunk nevet, ami a cégneve. Itt jön a gondod, hogy szóköz nem lehet a tartomány nevében. Ezért hagyd ki a szóközt (vagy használj mást, pl. aláhúzást). Én szököz mentesen csináltam három tartományt. A névkezelőben így néznek ki (lehet dinamikus hivatkozást is csinálni az ELTOLÁS függvénnyel, ha nem akarod a tartományt kézzel módosítani amikor egy új dolgozót veszel fel a céghez).
b) A cég kiválasztását adatérvényesítéssel megcsinálod.
c) A dolgozónál a trükk pedig, hogy a cégnévben cseréled a szóközt arra amit az a) lépésben tettél. Én töröltem, így a dolgozó adatérvényesítésének képlete ez:=INDEX(INDIREKT(HELYETTE($B$8;" ";""));0;1)
Az INDEX megint azért kell, mert csak az első oszlop, a dolgozó nevek kellenek most.
d) A dolgozók adatait már egy FKERES-sel ki tudjuk keresni. Az első adathoz:=HAHIBA(FKERES($B$10;INDIREKT(HELYETTE($B$8;" ";""));2;0);"")
A második és harmadikhoz a 2-est 3 és 4-re kell cserélni.üdv
-
Fferi50
Topikgazda
válasz
Talala #54413 üzenetére
Szia!
Mivel nálam értesítés is van, ha nem számot ír be a felhasználó, ezért az üres cella vizsgálatot külön kell elvégezni (a félkövér sorok az újak):Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Cells.Count = 1 Then
If Not Intersect(Target, Range("B4:K500")) Is Nothing Then
If Target.Value <> "" Then
If IsNumeric(Target.Value) Then
' B-K oszlopok 4-500 sora, ha többet szeretnél változtasd a sorok számát, a kezdő sor legyen nagyobb, mint az alapérték sora
Target.Value = Cells(3, Target.Column) + Target.Value / 1000
' 3 annak a sornak a száma, ahonnan az alapértéket vesszük - ha ez más, akkor ide a sor számát írd
Else
MsgBox "Nem számot írtál be!"
Application.Undo
End If
End If
End If
Else
MsgBox "Nem egy cellát változtattál!"
Application.Undo
End If
Application.EnableEvents = True
End Sub
Üdv. -
-
Talala
senior tag
válasz
Fferi50 #54408 üzenetére
Köszönöm, remekül müködik.
#54409 Mutt, neked is köszönöm.Annyi változtatást szeretnék kérni, hogy törölhetö legyen a cellák tartalma. Ezt elfelejtettem említeni.
Jelenleg adatbevitel, majd törlés után a 3. sorban szereplő érték jelenik meg üres cella helyett.
Elöre is köszönöm. -
Attas
aktív tag
Sziasztok! Legördülő listával van gondom. Olvastam itt a témában, amit találtam az nem müködik nekem, mert a cella tartományt nem engedi elnevezni szóközt tartalmazó névvel, jelen esetben pl "példa kft"
Van egy muinkalap B3 cellája ahol legördülő listában a cégeket szeretném kiválasztani, amit figyelembe véve a B5 cellában csak az kiválasztott cég dolgozóit lehessen szintén legördülő listában kiválasztani és valasztás után a C5, D5, E5... cellákban a dolgozóhoz rendelt adatok jelenjenek meg. Csatoltam egy képet hogy érthetőbb legyen. Nagyon köszönöm a segedelmet. Ha meg lehet oldani makró nélkül az is jó, de a makrós megoldásnak is nagyon örülnék. -
Mutt
senior tag
válasz
Talala #54407 üzenetére
Szia,
FFeri már adott egy változatot.
Itt az enyém, amely képes egyszerre több cellát is kezelni, illetve az eseménykezelőt én
máshogy állítom le. Szintén a munkalap kódjára kell betenni.Dim EventStop As Boolean
Private Sub Worksheet_Change(ByVal Target As Range)
Dim cellInput As Range, cell As Range
If EventStop Then Exit Sub 'megakadályozzuk a körkörös meghívását az eseménynek
Set cellInput = Intersect(Target, Range("B4:K100")) 'csak a megadott tartomány érdekel minket
If Not cellInput Is Nothing Then
EventStop = True
For Each cell In cellInput 'végigmegyünk az értintett cellákon és ha szám akkor hozzáadjuk a 3-as sorban lévõ értéket
If IsNumeric(cell.Value) Then cell.Value = cell.Value / 1000 + Cells(3, cell.Column)
Next cell
EventStop = False
End If
End Sub
üdv
-
Fferi50
Topikgazda
válasz
Talala #54407 üzenetére
Szia!
Ezt a makrót másold be a munkalap kódlapjára:Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
If Target.Cells.Count = 1 Then
If Not Intersect(Target, Range("B4:K500")) Is Nothing Then
' B-K oszlopok 4-500 sora, ha többet szeretnél változtasd a sorok számát, a kezdő sor legyen nagyobb, mint az alapérték sora
If IsNumeric(Target.Value) Then
Target.Value = Cells(3, Target.Column) + Target.Value / 1000
' 3 annak a sornak a száma, ahonnan az alapértéket vesszük - ha ez más, akkor ide a sor számát írd
Else
MsgBox "Nem számot írtál be!"
Application.Undo
End IfEnd If
Else
MsgBox "Nem egy cellát változtattál!"
Application.Undo
End If
Application.EnableEvents = True
End Sub
Amikor változtatod a B4-K500 cellák valamelyikét, a makró lefut és az alap (3.sorban levő cella) értéket módosítja a beírt szám/1000 -nek megfelelően. Természetesen nem csak egyjegyű lehet a beírt szám. Ha nem számot írtál be véletlenül, akkor üzenetet kapsz.
Ha lenne kérdésed, írj bátran.
Üdv. -
Fferi50
Topikgazda
válasz
Talala #54405 üzenetére
Szia!
Ha jól értem, akkor pl a B3 cellában jelenleg 4,6 van, de te szeretnéd, ha 4,603 lenne benne és ezt úgy szeretnéd elérni, hogy a B3 cellába beleírsz egy 3 -ast.
Valamint hasonlóan a többi cellánál is ezt szeretnéd?
Vagy valamit félreértek?
Szóval jó lenne, ha pontosan fogalmaznál, milyen állapotból milyen állapotot szeretnél, egyébként honnan tudja a makró, mit kellene csinálnia?
Üdv. -
-
Mutt
senior tag
válasz
Talala #54401 üzenetére
Szia,
Milyen logika alapján kerül a másik szám kiválasztásra?
Oszloponként más az alapérték vagy a bevitt számtól függ?
Lehet az eredményt másik cellába írni, vagy az eredetiben kell?Valószínű kell egy segéd tábla amiben a kombinációk vannak, egy XKERESsel megoldható.
Üdv
-
Talala
senior tag
Sziasztok!
Szeretném azt megoldani, ha egy cellába beírok egy számot (ami mikronban értendő), akkor ott a szám + egy adott érték jelenjen meg.
pl.: B3-ba beírom hogy 3, akkor a B3-ba az jelenjen meg, hogy 4,603.
Ezt több oszlopban szeretném kivitelezni más más értékekkel.
pl.: C3-ba beírom, hogy 2, akkor a megjelenített érték az legyen 5,002.
Tudtok ebben a makróban segíteni?
Új hozzászólás Aktív témák
Hirdetés
- Autóhifi
- Milyen egeret válasszak?
- BestBuy topik
- Házimozi haladó szinten
- Automata kávégépek
- Vezetékes FEJhallgatók
- Külföldi rendelések: boltok, fizetés, postázás
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Luck Dragon: Asszociációs játék. :)
- Marcona Socket AM5-ös deszka érkezik a Maxsun gondozásában
- További aktív témák...
- Antivírus szoftverek, VPN
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Adobe Előfizetések - Adobe Creative Cloud All Apps - 12 Hónap - NYÁRI AKCIÓ!
- Eladó Steam kulcsok kedvező áron!
- Telefon felvásárlás!! iPhone 12 Mini/iPhone 12/iPhone 12 Pro/iPhone 12 Pro Max
- Eredeti Lenovo USB-C 65W töltő
- Csere-Beszámítás! Prémium vizhűtéses számítógép! I9 11900K / RTX 3090 / 64GB DDR4 / 1TB SSD
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 16GB RAM 512GB SSD garanciával hibátlan működéssel
- ÁRGARANCIA! Épített KomPhone Ryzen 7 9800X3D 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
Állásajánlatok
Cég: Liszt Ferenc Zeneművészeti Egyetem
Város: Budapest
Cég: PC Trade Systems Kft.
Város: Szeged