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.
Gyorskeresés
Legfrissebb anyagok
- Bemutató Spyra: akkus, nagynyomású, automata vízipuska
- Bemutató Route 66 Chicagotól Los Angelesig 2. rész
- Helyszíni riport Alfa Giulia Q-val a Balaton Park Circiut-en
- Bemutató A használt VGA piac kincsei - Július I
- Bemutató Bakancslista: Route 66 Chicagotól Los Angelesig
Általános témák
LOGOUT.hu témák
- [Re:] [Luck Dragon:] Asszociációs játék. :)
- [Re:] [bb0t:] Gyilkos szénhidrátok, avagy hogyan fogytam önsanyargatás nélkül 16 kg-ot
- [Re:] [sziku69:] Szólánc.
- [Re:] [sziku69:] Fűzzük össze a szavakat :)
- [Re:] [gban:] Ingyen kellene, de tegnapra
- [Re:] [antikomcsi:] Való Világ: A piszkos 12 - VV12 - Való Világ 12
- [Re:] [D1Rect:] Nagy "hülyétkapokazapróktól" topik
- [Re:] [Mr Dini:] Hálózati problémából kiber-versenyfeladat!
- [Re:] [bitpork:] Bú. Boci bú- a bornyú kétszer pusztul
- [Re:] [DraXoN:] Netfix lemondva
Szakmai témák
PROHARDVER! témák
Mobilarena témák
IT café témák
Téma összefoglaló
- Utoljára frissítve: 2023-11-13 08:31:56
LOGOUT.hu
Hozzászólások
Fferi50
őstag
Szia!
" ha az f mezőbe beírok valamit, akkor a d mezőbe beírja az aktuális dátumot, és időt."
Remélem oszlopra gondoltál...
If Not Intersect(Target, Range("F:F")) Is Nothing Then
For Each cl In Intersect(Target, Range("F:F")).Cells
Cells(cl.Row, "D").Value = Now()
Next
End If
Üdv.
(Elkerülheted a "hangulatjeleket", ha használod az alul levő programkód gombot.)
Louro
őstag
Akkor egy segédmunkalapon felírnám a munkalapokat egymás alá. X-et tetetnék, amibe kell másolni. Majd szűrő az X-re, a megmaradt neveket tömbbe gyűjteném majd ciklussal a megfelelő munkalapokra másolnám. Ne bonyolítsuk, hogy munkalaponként máshová
Szűréshez kulcssszó:autofilter
...
Szanaszét kommentelten. Fáradtan ez lett.....valószínűleg a topiktulaj tud majd szebbet is.
Sub Munkalapozó()
Dim MunkalapTomb As Variant
Dim WS As String
Dim lastrow As Integer
'Segéd sheet-en a munkalapok nevei. x-szel kell jelölni, hogy mi kell
Sheets("Segéd").Range("A1:B200").AutoFilter Field:=2, Criteria1:="x"
Range("A2:A" & ActiveSheet.UsedRange.Rows.Count).SpecialCells(xlCellTypeVisible).Select
'mennyi munkalapról van szó. Mekkora lesz a tömb
lastrow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Rows.Count
'másolás
Selection.Copy
'beillesztés egy segédoszlopba
Range("E1").PasteSpecial xlPasteValues
'tömbbe másolás
MunkalapTomb = Sheets("Segéd").Range("E1:E" & lastrow).Value
'segédoszlop törlése
Range("E1:E" & lastrow).Clear
'ciklus amekkora a tömb mérete
For i = 1 To UBound(MunkalapTomb)
'vegye ki a tömb soron következő elemét
WS = MunkalapTomb(i, 1)
'itt kell megadni, hogy mit akarsz másolni
Sheets("Segéd").Range("A1:A10").Select
'vágólapra tegye ki
Selection.Copy
'a megfelelő munkalapra illessze be az A1-től.
Sheets(WS).Range("A1").PasteSpecial xlPasteValues
Next
'Szűrő kikapcsolása
Sheets("Segéd").AutoFilterMode = False
End Sub
[ Szerkesztve ]
Mess with the best / Die like the rest
Locsi
senior tag
Köszi.
cellpeti
veterán
mit és hova írok? hogy jutok oda, ahova ezt be kell írnom?
Tigris, tigris, csóvafény...
cellpeti
veterán
nem vágom nagyon a programozás részét
Tigris, tigris, csóvafény...
Fferi50
őstag
Szia!
Át kell menni a VBA ablakba. Alt+F11 billentyű.
Itt látod a VBA projektet (ha nem látod, akkor menüben view - Project explorer).
Abban van egy Thisworkbook nevű elem, ha rákattintasz kettőt, akkor megjelenik a kódlapja.
A bal oldali lenyílóból válaszd ki a Workbook -ot. Megjelenik egy
Private Sub Workbook_Open()
End Sub
kódkeret.
Ide kell bemásolnod amit írtam a korábbi hsz-ban.
Üdv.
Delila_1
Topikgazda
A lenti makró bekéri a keresendő szöveget, és az összes lapon kipirosítja ezeknek a hátterét.
Sub Piros()
Dim lap As Integer, ter As Range, keres As String
Dim CV As Object
keres = Application.InputBox(prompt:="Kérem a keresendő szöveget", Type:=2)
For lap = 1 To Worksheets.Count
Sheets(lap).Activate
Set ter = Range(Cells(1, 1), Cells(ActiveSheet.UsedRange.Rows.Count, _
ActiveSheet.UsedRange.Columns.Count))
For Each CV In ter
If CV = keres Then Range(CV.Address).Interior.ColorIndex = 3
Next
Next
End Sub
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Locsi
senior tag
Még egy kérdésem lenne. Hogy lehetne ennél azt megcsinálni, hogy a két kitöltött oszlopból (D-C) kiszámolja a az eltelt időkülönbséget (2015.03.20 8:55:35 - 2015.03.20 8:54:33) azt beírja a G oszlopba, és ezt elossza az F oszlopban lévő értékkel, az meg beírja a H oszlopba. A segítséget köszönöm.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lrow As Single
Dim AStr As String
Dim Value As Variant
If Not Intersect(Target, Range("A:B")) Is Nothing Then
For Each Value In Target
If Value <> "" Then
Range("C" & Value.Row).Value = Now
End If
Next Value
End If
If Not Intersect(Target, Range("E:F")) Is Nothing Then
For Each cl In Intersect(Target, Range("E:F")).Cells
Cells(cl.Row, "D").Value = Now()
Next
End If
End Sub
Louro
őstag
EGy próbát megér, ha jól értem a feladatot.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Lrow As Single
Dim AStr As String
Dim Value As Variant
If Not Intersect(Target, Range("A:B")) Is Nothing Then
For Each Value In Target
If Value <> "" Then
Range("C" & Value.Row).Value = Now
End If
Next Value
End If
If Not Intersect(Target, Range("E:F")) Is Nothing Then
For Each cl In Intersect(Target, Range("E:F")).Cells
Cells(cl.Row, "D").Value = Now()
Next
End If
Range("G1:G"&ActiveSheet.Usedrange.Rows.Count) = "=D1-C1"
Range("H1:H"&ActiveSheet.Usedrange.Rows.Count) = "=HAHIBA(F1/G1,"""")" 'Angol excel esetén "=IFERROR(F1/G1,"""")"
End Sub
[ Szerkesztve ]
Mess with the best / Die like the rest
Locsi
senior tag
Köszi, majdnem jó. Végtelen ciklusba ugrik, az A oszlop kitöltése után, mert a D,E,F oszlopnak nincs értéke. Ha kell feltöltöm valahova.
[ Szerkesztve ]
hhheni
tag
sziasztok!
megint a kritériumtáblával szívok
több más feltétel között szerepel az is, hogy a pasi fizetése (ami a D oszlopban található) az átlagosnál nagyobb legyen
én ezt csak úgy tudom megoldani, hogy beírok egy fiktív, "számolás" nevű mezőt a kritériumtáblába, és alá ezt a képletet: =D2>ÁTLAG($D$2:$D$190), és így működik is
nem tudja valaki ezt a feltételt közvetlenül a D (fizetés) oszlopra megfogalmazni, hogy ne kelljen új mezőt bevezetnem?
köszi minden ötletet!
heni
Delila_1
Topikgazda
Nem írhatsz fiktív címet a kritérium táblába, csakis olyant, ami a vizsgálandó táblában van.
Beírod címnek a fizetéseket tartalmazó oszlop címét, alá pedig =">"& ÁTLAG(D:D)
A beírás után a képletet tartalmazó mezőben azonnal az átlag jelenik meg.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Louro
őstag
Akkor csalok - sajnos letölteni nem tudom a csatolmányt.
Szerk.: Nincs is ciklus az én kiegészítésemben. Én csak a ciklus után tettem be két sort. Nem kellene ettől bergadnia.
Range("G1:G65535") = "=HA(D1="""","""",D1-C1)" 'Angol excelben =IF(.....) Itt csak annyit vizsgálok, hogy D üres -e.
Range("H1:H65535") = "=HAHIBA(F1/G1,"""")" 'Angol excel esetén "=IFERROR(F1/G1,"""")"
[ Szerkesztve ]
Mess with the best / Die like the rest
Delila_1
Topikgazda
"Ez a számla nyilvános linkeket generál túl nagy a forgalom, és ideiglenesen nem elérhető!"
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Delila_1
Topikgazda
Bocsi, ez a 65535. sorig beírt képlet szörnyen megterheli a fájlt. Érdemes lenne kikeresni az utolsó sort, és csak addig beírni.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Louro
őstag
Úgy csináltam, de úgy beragadt
Mess with the best / Die like the rest
Delila_1
Topikgazda
usor=range("g" & rows.count).end(xlup).row
range("g1:g" & usor)= "= ...
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
bara17
tag
Lehet nagyon láma kérdést teszek fel, de létezik ki olyan függvény ami kiírja egy cellába egy adott oszlop leggyakoribb szövegét. pl. A oszlopban vannak a győztesek nevei és ki nyerte a legtöbbet?
A problémát meg tudom oldani darabteli, max és match/index függvényekkel, de lehet én nem tudom az egyszerűbb megoldást...(bár ez sem annyira bonyoltult).
Louro
őstag
Gugli ezt dobta
[link]
De én lehet egy pivotot dobnék rá és gyorsan megvan
Mess with the best / Die like the rest
hhheni
tag
köszönöm szépen, a megoldásod teljesen jó, csak annyit kellett rajta módosítanom, hogy a D : D-t D1 : D190-re javítottam, mert ami táblázatot kaptam, abban lejjebb másféle adatok vannak
a fiktív mező viszont adott esetben kell a kritériumtáblába, én legalább is nem tudom megkerülni
pl. van egy ilyen kérdés is: kik kaptak a havi fizetésüknél (D oszlop) több prémiumot (K oszlop)
ezt én csak úgy tudtam megoldani, hogy fölvettem egy "többet" nevű fiktív mezőt, alá d2<k2, és tökéletesen működik
vagy tudsz erre is jobbat?
köszi előre is!
[ Szerkesztve ]
bara17
tag
kb ugyanezt csináltam, csak az A oszlop mellé darabteli függvénnyel megszámoltam, hogy az adott elem hányszor van benne a tartományban majd a max függvényel a max értéket kikerestem és index/hol.van-nal az értékhez tartozó elemet megkerestem
Csak azt hittem van más megoldás
Ja és köszönöm
Delila_1
Topikgazda
Teljesen jó a megoldásod.
Fiktív mezőnek nevezed, ami félreérthető. Ha felvetted ezt az oszlopot, akkor valóságos, segédoszlopnak hívják, és ugyanúgy lehet rá hivatkozni, mint a többire.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
hhheni
tag
nem veszem fel sehová, ez csak a kritériumtáblában létezik, ezért voltam bátor fiktívnek nevezni
(persze nem én találtam ki, még középsuliban mutatta az infotanárom, viszont másképp nem tudom megcsinálni az ilyen feladatokat)
Delila_1
Topikgazda
A 26112-es hsz szerint mégis meg lehet oldani a táblázat saját mezőivel.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
hhheni
tag
én nyilván nem vagyok olyan képzett, mint te, de azt hiszem, most félreértettél valamit: én arról nem állítottam, hogy nem lehet másképp megoldani, csak annyit, hogy én nem találtam meg, éppen ezért kértem segítséget (amit ismételten köszönök)
én a 26121-esben szereplő kérdésről írtam, hogy másképp nem tudom megcsinálni, mégpedig azért nem, mert egyszerre két mezőt (pontosabban azok viszonyát) kellene vizsgálnia, ezért nem hasonlítható össze a 26112-es és a 26121-es kérdése
viszont rögtön meggyőzöl, ha erre, a 26121-esben szereplő kérdésre is mutatsz egy megoldást, ami csak a táblázat saját mezőit használja: kik kaptak a havi fizetésüknél (D oszlop) több prémiumot (K oszlop)?
én nagyon megköszönném...
[ Szerkesztve ]
Delila_1
Topikgazda
Az úgy jó, ahogy csináltad.
Az sem fiktív, hanem segédoszlop.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
hhheni
tag
én nem szeretném, ha a beszélgetésünk "csajos marakodássá" fajulna, annál ismeretlenül is sokkal jobban tisztellek a tudásodért meg a sok száz itteni fórumozónak nyújtott folyamatos segítségedért, de nagyon nem értem az "A 26112-es hsz szerint mégis meg lehet oldani a táblázat saját mezőivel." szövegedet...
de ha ezt nem vonatkoztattad a "fiktív mezős" esetre, akkor már csöndben is maradtam, csak így nem igazán értem :-(
a szerkesztett részedhez: bizony fiktív, mert az adatbázisnak nincs ilyen nevű mezője, tehát segédoszlopról sem beszélhetünk
[ Szerkesztve ]
Delila_1
Topikgazda
Fiktívnek azt nevezném, amit beírsz a kritériumtáblába, de az eredeti táblában nem szerepel. Erre nem tud szűrni az irányított-, vagy speciális szűrő.
Ha az eredeti táblába veszel fel egy új oszlopot, ahol bizonyos számításokat, összehasonlításokat végzel, az egy segédoszlop, része lesz a táblázatodnak, lehet rá szűrni.
Csakis a fiktív elnevezéssel nem értek egyet.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
hhheni
tag
nahát, akkor csak közeledünk az egyetértés felé...
ez a "többet" ugyanis pontosan ilyen mező: beírtam a kritériumtáblába, de az eredeti táblában nem szerepelt, viszont pontosan erre szűr az irányított-, vagy speciális szűrő, ahogy az általad is jónak ítélt megoldásban hibátlanul működik
úgy látszik, átsiklottál a 26124-esben írott szövegen: nem veszem fel sehová, ez csak a kritériumtáblában létezik, ezért voltam bátor fiktívnek nevezni
de ha csupán az én bölcsészagyammal van a baj, akkor csak szólj...
Delila_1
Topikgazda
Feltennél egy képet róla?
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Locsi
senior tag
Hogy érthetőbb legyen, amit evvel "Hogy lehetne ennél azt megcsinálni, hogy a két kitöltött oszlopból (D-C) kiszámolja a az eltelt időkülönbséget (2015.03.20 8:55:35 - 2015.03.20 8:54:33) azt beírja a G oszlopba, és ezt elossza az F oszlopban lévő értékkel, az meg beírja a H oszlopba." akarok, megpróbálom egy képpel érthetővé tenni. Amúgy melóhelyen lenne a termelést követő gépnapló, a papírt elkerülendő.
[ Szerkesztve ]
hhheni
tag
Louro
őstag
Hát erre jó az én részem. De mondjuk lehet annyit változtatnék, hogy a makrót betenném gyorsbillentyűre vagy egy gombot tennék ki a munkalapra, ami által újra számolná a sorokat.
Jah és Delila megoldása pedig elegánsabb. Szóval jónak kell lennie. Hisz összidőre egyszerű különbségképzéssel, az egy darabra jutó átlagidő pedig osztással.
De lehet ebéd utána kóma miatt félreértettem, de majd jönnek még páran és segítenek.
[ Szerkesztve ]
Mess with the best / Die like the rest
Delila_1
Topikgazda
{=DARAB(HA((C2:C11)>(B2:B11);C2:C11))}
Ezzel a tömbfüggvénnyel megadható. Nálam az AB-s nem jött össze.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
hhheni
tag
így van, önmagában ez egy jó megoldás, de ha ez egy összetettebb feltételrendszer része, akkor már nem igazán használható
pedig a szűrés is ugyanígy működik, azt függvénnyel elég körülményes megoldani
az eredeti kérdésre adott válaszodat mindenesetre még egyszer köszönöm, sokat segítettél vele!
[ Szerkesztve ]
Delila_1
Topikgazda
Melyik verzióban dolgozol? Nálam nem ír ki semmit.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Delila_1
Topikgazda
Induljunk el a kályhától.
Mikor mit csináljon a makró?
Beírod a rendelés számát, majd a rajzszámot. Ekkor írja be a kezdés idejét a C-be?
Mikor írja be a befejezés idejét a D-be? Mikor az F-ben megadod a legyártott darabok számát?
A G2 képlete =D2-C2 legyen, percben megadva, és ebből számolja ki a H a darabidőt? Ezt a darabszám megadásakor (F) végezheti.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Locsi
senior tag
Akkor induljunk. A, vagy B oszlop kitöltésekor a C oszlopba kerüljön be a kezdési idő, dátum, óra, perc. Ekkor elindul a az alkatrész gyártása, és ha elkészült, akkor a E, vagy F oszlop kitöltésekor kerüljön be a D oszlopba befejezési idő, dátum, óra, perc. A D oszlop, és a C oszlop különbsége kerüljön be G oszlopba óra, perc, másodperc pontossággal, a H oszlopba pedig kerüljön be a G oszlop osztva F oszlop, szintén óra, perc, másodperc pontossággal, és ezt a műveletet végezze el minden sor kitöltésekor. Remélem érthető voltam. Köszönöm a segítséget.
[ Szerkesztve ]
Delila_1
Topikgazda
A kezdés idejét a rajzszám beírásához rendeltem. Ha az A-hoz is beírnám, akkor eltelik némi idő (pláne, ha közben az adatrögzítő megiszik egy kávét) a rendelés bevitele után, és úgyis felülírná az egyszer már beírt kezdést.
A D, G, és H oszlop megadását is csak az F-hez kötöttem, nincs értelme az E-hez is megadni.
A G és H oszlop formátuma p:mm, jobbra behúzva, behúzás 1.
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Count > 1 Then Exit Sub
If Target.Value = "" Then Exit Sub
If Target.Column = 2 Then Cells(Target.Row, "C") = Now
If Target.Column = 6 Then
Cells(Target.Row, "D") = Now
Cells(Target.Row, "G") = Cells(Target.Row, "D") - Cells(Target.Row, "C")
Cells(Target.Row, "H") = Cells(Target.Row, "G") / Cells(Target.Row, "F")
End If
End Sub
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
hhheni
tag
ez most 2013-as, de amikor tanultam (de rég volt!), akkor még 2003-ason használtam, tökéletesen működött akkor is
Delila_1
Topikgazda
Nem tudom, mi lehet nálam a bibi, de fő, hogy Neked összejön.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
hhheni
tag
sajnálom
ettől függetlenül még egyszer köszönöm a segítségedet!
Delila_1
Topikgazda
Nagyon szívesen.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Delila_1
Topikgazda
Rosszul írtam a két oszlop formátumát.
A G és H oszlop formátuma
(p):mm, jobbra behúzva, behúzás 1.
A szögletes zárójelek nélkül nem mutatná az eltelt órákat a két időpont között. Ezzel igen, percbe átszámolva.
Szerk.: a szögletes zárójelet a fórummotor lekerekíti, de a szögletes kell.
[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Locsi
senior tag
Köszönöm.
Delila_1
Topikgazda
Kipróbáltad?
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Locsi
senior tag
Igen, tökéletesen megfelel.
Delila_1
Topikgazda
Örülök neki, szívesen.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Fferi50
őstag
Szia!
A kép szerinti felállásban nálam sem müxik (2010-es excel). Szerintem olyan mezőre, ami nincs az adott "táblázatban" (azért idézőjel, mert 2003-ban tudomásom szerint nincs is ilyen eszköz), nem lehet szűrést kezdeményezni.
Üdv.
Mai Hardverapró hirdetések
prémium kategóriában
- Lenovo Legion 7, 16,0"WQXGA, Ryzen 9 6900HX, 32 GB DDR5, RX6850M XT 12 GB, 1TB SSD, 1,5+ év garancia
- Corsair RM850e 850W Gold Moduláris Tápegység
- Samsung Odyssey Neo G9 Super Ultrawide Gamer Monitor!49"/Mini LED/5120x1440/240hz/1ms/+Ajándék
- Apple Macbook Pro 16" 2019 i7-9th 6Magos 32/512 -75% Touch Bar HUN Radeon Pro 5300M 4GB 3K Retina
- Apple Mac mini M2 2023 8GB 256GB + Xiaomi Mi Desktop 27"-os FullHD monitor egyben