- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Andras-G: Az internet veszélyei [2. rész] - Facebook Marketpalce
- Luck Dragon: Alza kuponok – aktuális kedvezmények, tippek és tapasztalatok (külön igényre)
- mefistofeles: Az elhízás nem akaratgyengeség! 2 Ahogy én csinálom.......
-
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
-
Delila_1
veterán
válasz
m.zmrzlina
#10421
üzenetére
Private Sub Worksheet_Change(ByVal Target As Range)
'A B.xls füzetből indulunk. A munkalaphoz rendelt eseménykezelő
'csak a saját munkalapján tud dolgozni, ezért innen indítunk
'olyan makrókat, amik nincsenek munkalaphoz rendelve.
Application.EnableEvents = False 'Eseménykezelés letiltása
Dim utvonal, Érték, sor%
sor% = Target.Row 'Adatbevitel sora
utvonal = Cells(sor%, 1) 'Az A oszlopba bevitt érték
If Target.Column = 1 Then 'Ha az A oszlopba vittél be adatot,
Darabteli utvonal, sor% 'meghívom a Darabteli makrót, átadva a 2 változót
End If
If Target.Column = 2 Then 'Ha a B oszlopba írsz értéket,
Érték = Cells(sor%, 2) 'az Érték változó vegye fel a bevitt értéket
Beír Érték 'Beír makró meghívása, az Érték változó átadásával
End If
Application.EnableEvents = True 'Eseménykezelés engedélyezése
End SubSub Darabteli(utvonal, sor%)
'Ez a makró az átvett "utvonal" változót keresi az A.xls Munka1 lapján, a B oszlopban,
'a COUNTIF (darabteli) függvénnyel. A B.xls A oszlopába történt beírás hívja meg a makrót.
Dim ws As Object, usor%
Set ws = Workbooks("A.xls").Sheets("Munka1") 'A ws változó tartalma innen kezdve az egyenlőség jobb oldala
usor% = ws.Range("B1").End(xlDown).Row + 1 'Első üres sor a ws.B oszlopában
If Application.WorksheetFunction.CountIf(ws.Range("B:B"), utvonal) = 0 Then
'Ha a B.xls A oszlopába beírt "utvonal" nem található az A.xls B oszlopában,
'vagyis a darabteli=0
ws.Cells(usor%, 2) = utvonal 'az utvonal változót írja be az ws.B oszlop első üres sorába
Else
'ha van "utvonal" a ws.B oszlopában, keresse meg, és a hozzá tartó H oszlopban lévő értéket
'írja be a kiinduló füzet (B.xls) B oszlopába.
'Itt nem kell a B.xls-re hivatkozni, mert nem léptünk át Select-tel az A.xls-be, csak leskelődtünk.
Cells(sor%, 2) = Application.WorksheetFunction.VLookup(utvonal, ws.Columns("B:H"), 7, 0)
End If
End SubSub Beír(Érték)
'A B.xls B oszlopába történt beírás hívja meg ezt a makrót.
'Akkor írsz értéket a B oszlopba, ha az fkeres nem talált A oszlopbeli útvonalat.
Dim ws As Object, usor%
Set ws = Workbooks("A.xls").Sheets("Munka1") 'Mint fent
usor% = ws.Range("H1").End(xlDown).Row + 1 'Mint fent
ws.Cells(usor%, 8) = Érték 'A ws.H oszlop első üres sorába beírja az értéket
End SubAz eseménykezelés letiltása azért kell a laphoz rendelt makróba, mert a munkalapon történt minden változásra beindul. Próbáld ki az Application.EnableEvents = False sor nélkül lépésenként futtatni, és meglátod, hányszor fut le feleslegesen. A lépésenként futtatáshoz tegyél a makró elejére egy stop-ot, majd írj a B.xls-be egy útvonalat, vagy km-t.
Az end sub előtt vissza kell állítani True értékkel! -
Delila_1
veterán
válasz
m.zmrzlina
#10418
üzenetére
A júzer által használt füzetbe, a munkalaphoz:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Dim utvonal, Érték, sor%
utvonal = Cells(Target.Row, 1)
Érték = Cells(Target.Row, 2)
sor% = Target.Row
If Target.Column = 1 Then
Darabteli utvonal, sor%
End If
If Target.Column = 2 Then
Beír Érték
End If
Application.EnableEvents = True
End SubSzintén abba a füzetbe, modulba:
Sub Darabteli(utvonal, sor%)
Dim ws As Object
Dim usor%
Set ws = Workbooks("A.xls").Sheets("Munka1")
usor% = ws.Range("B1").End(xlDown).Row + 1
If Application.WorksheetFunction.CountIf(ws.Range("B:B"), utvonal) = 0 Then
ws.Cells(usor%, 2) = utvonal
Else
Cells(sor%, 2) = Application.WorksheetFunction.VLookup(utvonal, ws.Columns("B:H"), 7, 0)
End If
End SubSub Beír(Érték)
Dim ws As Object
Dim usor%
Set ws = Workbooks("A.xls").Sheets("Munka1")
usor% = ws.Range("H1").End(xlDown).Row + 1
ws.Cells(usor%, 8) = Érték
End Sub -
Delila_1
veterán
válasz
m.zmrzlina
#10418
üzenetére
Csak este tudok foglalkozni vele, ha addig nem kapsz választ, megpróbálom.
-
Delila_1
veterán
válasz
m.zmrzlina
#10413
üzenetére
-
Delila_1
veterán
válasz
m.zmrzlina
#10413
üzenetére
Ez egy sima fkeres.
=FKERES(A1;[MásikFüzet.xls]MunkalapNeve!$A:$F;6;0)Az A oszlop pedig =[MásikFüzet.xls]MunkalapNeve!$A1
-
Delila_1
veterán
válasz
Fire/SOUL/CD
#10408
üzenetére
Az eddigieket megoldja, a további cellákba be kell írni a képletet.
![;]](//cdn.rios.hu/dl/s/v1.gif)
-
Delila_1
veterán
válasz
Geryson
#10402
üzenetére
=ha(e3="Pénztár";"–";"")
Úgy van, a régi, adatokat tartalmazó cellákba ne másold be a képletet.
Legfeljebb egy kis makróval lehetne megoldani az oszlop felülírását.Sub E_oszlop()
Dim sor%, usor%
usor% = Range("E5000").End(xlUp).Row
For sor% = 3 To usor%
If Cells(sor%, 5) = "Pénztár" Then Cells(sor%, 6) = "–"
Next
End SubEz a kitöltetlen sorok 6. (F) oszlopába ír a Pénztár szót tartalmazó E oszlop mellé hosszú kötjelet, a nem Pénztár-t tartalmazók melletti F cellát békén hagyja. A mostani adatokat rendbe teszi, a további cellákba érdemes beírni a fenti képletet.
-
Delila_1
veterán
válasz
motinka
#10384
üzenetére
Kicsit megvariálva, hogy két oszlop adatait is lehessen szűrni:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Krit
If Target.Address = "$G$1" Then
Krit = Range("G1").Value & "*"
ActiveSheet.Range("$A:$B").AutoFilter Field:=1, Criteria1:=Krit
End If
If Target.Address = "$I$1" Then
Krit = Range("I1").Value & "*"
ActiveSheet.Range("$A:$B").AutoFilter Field:=2, Criteria1:=Krit
End If
End SubA szűrést a G1, ill. az I1 cella adatának törlésével megszüntetheted.
-
Delila_1
veterán
válasz
motinka
#10384
üzenetére
Kiegészítve Fire válaszát:
A szűrésnél a "Szövegszűrők"-et választod, ott pedig a "Kezdete..." almenüt. Ott beírod a keresendő adat kezdetét.
Másik megoldás, hogy a laphoz rendeled a következő makrót:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Krit
If Target.Address = "$F$1" Then
Krit = Range("F1").Value & "*"
ActiveSheet.Range("$A:$A").AutoFilter Field:=1, Criteria1:=Krit
End If
End SubAz F1 cellába beírod a keresendő adat kezdetét. Az Enter leütése után az A oszlopot szűri az F1 cella értéke szerint.
-
Delila_1
veterán
-
Delila_1
veterán
válasz
m.zmrzlina
#10367
üzenetére
Valószínű, hogy az Excel beállítását is figyelembe veszi a területin kívül, ill. ahelyett.
Makrózd le - rögzítéssel - az Excelben való átállást.
Lásd Fire 10321-es hozzászólását. -
Delila_1
veterán
válasz
m.zmrzlina
#10364
üzenetére
Ezt
már elfelejtetted?
Egyébként a Find vagy Instr, és Mid függvénnyel is megoldhatod ciklus nélkül. Az elsővel kikeresed a "(" karaktert, ez+1 lesz a mid középső paramétere, majd a "%"-ot kikeresve meghatározod a 3. paramétert. (Az első a szám változó.) -
Delila_1
veterán
válasz
Fire/SOUL/CD
#10346
üzenetére
Akkor pihent aggyal nézd át a workday függvényt, mert az időt nem hozza, csak a dátumot.
Valami szövegfüggvénnyel biztosan ki lehet egészíteni, hogy azt is mutassa.
-
Delila_1
veterán
válasz
mimi_bacsi
#10334
üzenetére
Szívesen, szólj, ha nem megy.
-
Delila_1
veterán
válasz
m.zmrzlina
#10332
üzenetére
Hát ez az!
Tettek néhány jól alkalmazható funkciót (pl. szumhatöbb) bele, de az ilyen idétlenségek miatt nem tudom megszeretni a 2007-et.
Nekem is sok fejtörést jelentett, amit írtál, de ismerem a régebbi verzióból a feltételes formázás működését, abból rájöttem, hogy itt is úgy működhet, csak szerencsétlen a képletek megjelenítése.
Mondjuk az a rész, ahol módosíthatod a hatókört, könnyebben kezelhető a 2007-ben. -
Delila_1
veterán
válasz
m.zmrzlina
#10330
üzenetére
Nagyon szívesen.
Ezt is elrontották a 2007-ben. A régebbi verzióban ha megadtad a tartományra a képletet, egy másik oszlopra állva a felt. formázásnál már az arra az oszlopra vonatkozót láthattad. Abból világos volt, hogy ugyanúgy változik, mint egy munkalapra bevitt képletnél. -
Delila_1
veterán
válasz
mimi_bacsi
#10327
üzenetére
Az előbb volt szó a relatív, fix, és vegyes hivatkozásról. A feladatodhoz a vegyes, és a fix hivatkozást érdemes megvalósítani.
Az első sorba, vagy ha ez nem lehetséges, akkor a sokadikba (ahol már előreláthatóan nem lesz adatod), felveszel egy sorszámot. Azt a sort, amiben a sorszám van, elrejtheted.Beteszek egy képet, hogy érthetőbb legyen (és hogy kevesebbet kelljen írnom).

A Képletek lap szerkesztőlécén látod a B3 cella képletét, amit le-, és jobbra másolva kapod meg a keresett értékeket. A képletedben a lapnév után nem pontot, hanem felkiáltójelet kell írni.m.zmrzlina
Látod, az FKERES függvényben a keresési értéknél rögzítettem az A oszlopot, mert a C-be másolva enélkül a B3 cellát keresné a másik lap A:D tartományában.
-
Delila_1
veterán
válasz
m.zmrzlina
#10324
üzenetére
Szerintem is gyalázatosan rossz a 2007 súgója, a régebbi változatokét még emberi nyelven írták. Nem is értem, egy ilyen fontos szabályhoz miért nem tudnak egy tisztességes leírást adni! A súgó többi része is hasonló stílusban készült.
A feltételes formázásnál is úgy kell megadni a képletet, ahogy a munkalapon bármelyik másikat.
Nálad az volt a cél, hogy az A és B oszlop celláit a B értékétől függően színezze. A két oszlopra egyszerre bevitt képlet úgy működik, mintha beírtad volna az A oszlopba, majd átmásoltad volna a B-be. Az A oszlopban a B értékére hivatkoztál, ha ezt a képletet a B rögzítése nélkül átmásolod a B oszlopba, ott már a C oszlopra hivatkozol, ahol nem talál megfelelő adatot, ezért nem módosít a formátumon.
Csak annyit kell tudni, hogy az oszlopjelölő elé tett $ jel az oszlopot-, a sorazonosító előtt pedig a sort rögzíti, másoláskor a $ "előjeles" érték nem változik.
Leggyakrabban az FKERES függvénynél alkalmazunk abszolút hivatkozást, ahol fontos, hogy ugyanarra a tartományra hivatkozzon minden képlet. A B1-ben megadott
=FKERES(A1;D10:F20;2;0) képlet a B2 cellába másolva már más (D11:F21) tartományban keresne, és hamis értéket adna. C1-be másolva ugyanez a képlet =FKERES(B1;E10:G20;2;0) -re módosul, ami teljesen elrontja az eredményt.Ha egy táblázat celláiban a címsorra akarunk hivatkozni, akkor a képletben az első sort rögzítjük (=A$1*,9). A képlet lefelé másolásánál minden cella képletében marad az első sor, ám jobbra másolásnál az oszlopjelölő módosul (=B$1*,9), mivel azt nem rögzítettük.
-
Delila_1
veterán
Rákattintasz az (egyik) oszlopra, jobb klikk, Adatsorok formázása, Beállítások fül.
A Köz csökkentésével növelheted a diagramon az oszlopok szélességét.A sorozat létrehozásához elég, ha az első két adatot (1 és 2) beírod. A kettőt együtt kijelölöd, és lehúzod, tudni fogja a lépésközt.
Másik, egyszerűbb megoldás ugyanerre, hogy beírod az 1-est, és a Ctrl billentyű lenyomása mellett másolod húzással. Az alapértelmezés a lépésközre 1, ennyivel növeli majd a sorozatot. Szöveges értéknél éppen fordítva, Ctrl nélkül növel, azzal együtt másol.Az ablaktábla rögzítése úgy történik, hogy ahol állsz, az azelőtti oszlopot, és az afölötti sort rögzíti. Tehát ha a C10-ben állva választod a rögzítést, akkor az A és B oszlop, valamint a felső 9 sor marad fixen a képernyőn.
-
Delila_1
veterán
válasz
copperhead
#10315
üzenetére
A Windowsban a Vezérlőpulton, a Területi és nyelvi beállításoknál, Területi beállítások fülön, Testreszabás, Szám fülön határozhatod meg a tizedesjelet.
Ez a beállítás a gépen futó összes programra érvényes lesz.
-
Delila_1
veterán
válasz
m.zmrzlina
#10306
üzenetére
Szivi.

-
Delila_1
veterán
Ez egy kicsit becsapós kérdés, mert speciális szűrővel lehet megoldani, de a spec.szűrés csak azon a lapon működik, ahol az adatok vannak.
Első lépésként az adatlapon készítsd el a szűrést. A kritérium tartományban az Osztály és a Napilap cím szerepeljen, az első alatt A az érték, a másodiknál Igen.
Egy másik helyen a Név, és a Könyv oldalszám címeket írd be.
Kijelölöd az adattartományt. Behívod az Adatok/Rendezés és szűrés/Speciális menüpontot.
Kapcsold be a "Más helyre másolja" kapcsolót. A Listatartományt automatikusan beírja, Szűrőtartománynak az Osztály, a Napilap, és alattuk az A, és Igen tartományt jelöld be.
A "Hova másolja" rovatba a Név és Könyv oldalszám címeket tartalmazó két cellát jelöld be.Második lépés az adatok átmásolása egy másik lapra. Megteheted másolás-beillesztéssel is, de lehet, hogy képletet szeretnének látni.
Vegyük, hogy a szűréssel a Munka1 lap M1
10 tartományba került a kigyűjtés. A másik lapon az A1 képlete: =Ha(Munka1!M1>"";Munka1!M1;"")
A B2 képlete: =Ha(Munka1!N1>0;Munka1!N1;"") -
Delila_1
veterán
válasz
m.zmrzlina
#10300
üzenetére
A B26 mindkét helyen legyen $B26.
-
-
Delila_1
veterán
válasz
PowerBuldog
#10276
üzenetére
Az adataidat kijelölve – vagy csak valahol benne állva – a Beszúrás, Kimutatás menüvel hozhatod létre.
Elküldöm, amit csináltam. -
Delila_1
veterán
válasz
PowerBuldog
#10271
üzenetére
A kimutatást a legördülőiben szűrheted a szobákra, és a helységre is, a diagram a szűrésnek megfelelően alakul.
-
Delila_1
veterán
válasz
PowerBuldog
#10273
üzenetére
Nosza! Bár arról volt szó, hogy én küldök egy fájlt.

-
Delila_1
veterán
válasz
PowerBuldog
#10271
üzenetére
Jó az itt megadott e-mail címed? Küldenék egy fájlt, ami különböző dinamikus diagramokat tartalmaz.
-
Delila_1
veterán
válasz
PowerBuldog
#10269
üzenetére
Jobb oldalon az Értékeknél ráklikkelsz a Összeg/Szobára, a feljövő gyorsmenüben az Értékmező-beállításokat választod, ott adhatod meg, hogy darabszámot jelenítsen meg.
A diagram kinézetét egyszerűen módosíthatod. Kimutatásdiagram-eszközök, Tervezés, Diagramelrendezések. Igaz, hogy olyan aprók az ábrák, hogy nem sok látszik belőlük, de rájuk klikkelve azonnal felveszi a formát a diagram.
-
Delila_1
veterán
válasz
PowerBuldog
#10267
üzenetére
-
Delila_1
veterán
-
Delila_1
veterán
válasz
macikos
#10259
üzenetére
Számmá alakítani egy tartományt legegyszerűbben úgy lehet, hogy a számjegyeket tartalmazó szöveges értékeket szorzod 1-gyel.
Írd be egy cellába (bárhova): 1. Másold (Ctrl+c), majd jelöld ki az átalakítandó tartományt. Jobb klikk, Irányított beillesztés, Szorzás, OK.
A segédcellából törölheted az 1-est. -
Delila_1
veterán
válasz
PowerBuldog
#10252
üzenetére
A feladat2.xlsx Adatbázis lapján az I4 képletét így adnám meg: =SOKSZOR("|";KEREKÍTÉS(F4/G4;0))
és a feltételes formázásnál is valamelyik feltételhez bevinnék egy = jelet, mert a 4 mFt-os négyzetméterenkénti ár így nem szerepel.
=J4<=4Ha az I oszlopot Wingdins karakterre állítod, csinos kis korongok jelzik majd a milliók számát.
A feltételes formázásnál nézd meg az Adatsávokat, Színskálákat, Ikonkészleteket is.
-
Delila_1
veterán
válasz
PowerBuldog
#10252
üzenetére
-
Delila_1
veterán
válasz
Bluesummers
#10243
üzenetére
Nagyon szívesen, máskor is, csak ennél nehezebb feladatot ne adj.

-
Delila_1
veterán
válasz
ql0qxo
#10232
üzenetére
Ahhoz, hogy a C oszlopban össze tudja hasonlítani a makró az adatokat, a C oszlop szerint kell rendezni a táblázatot. Ha ez nem felel meg, az első üres oszlopba tegyél sorszámot a makró futtatása előtt: az első adat mellé beírsz egy 1-est, és a Ctrl bill. lenyomása mellett lehúzod.
A makró után a sorszámos oszlop szerint visszaállíthatod az eredeti sorrendet.Sub NukuEgyforma()
Dim sor%, usor%
Cells(1).Select 'Rendezés C oszlop szerint
Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortTextAsNumbers
usor% = Range("A10000").End(xlUp).Row
For sor% = usor% To 2 Step -1
If Cells(sor%, 3) = Cells(sor% - 1, 3) Then Rows(sor%).Delete Shift:=xlUp
Next
End Sub -
Delila_1
veterán
válasz
ql0qxo
#10230
üzenetére
Ehhez egy kicsit többet kellene tudni a táblázatodról. Pl. hogy hol van a táblázat, melyik oszlopban, vagy sorban fordulhatnak elő duplán az adatok, és hogy a többször szereplő adatok celláját is törölni kell-e (mint a 10228-as kérdésben), vagy csak üresre kell állítani a cellát.
Legegyszerűbb, ha beteszel egy képet.
-
Delila_1
veterán
válasz
Bluesummers
#10228
üzenetére
Sub Csusztat()
Dim sor%
sor% = 2
Do While Cells(sor, 1) <> ""
If Cells(sor%, 3) + Cells(sor% + 1, 3) = Cells(sor%, 1) And Cells(sor% + 1, 3) > "" Then
Cells(sor%, 3).Delete Shift:=xlUp
Cells(sor%, 3) = Cells(sor%, 1)
End If
sor% = sor% + 1
Loop
End SubA Cells(sor% + 1, 3) > "" feltétel azért kell, mert a példád szerinti C10 cellát törölve az utolsó érték (17. sor) mindkét oszlopban 22, és ebben az esetben az A17=C17+C18, tehát ezt a C22 cellát is törölné.
-
-
Delila_1
veterán
A B3 cellába: {=SZUM((E$3:E$17=A3)*(D$3:D$17>1))}
Ezt úgy tudod létrehozni, hogy beírod a =SZUM((E$3:E$17=A3)*(D$3
$17>1)) képletet, és Shift+Ctrl+Enterrel viszed be. Utána már másolhatod az alatta lévő cellákba.Szerk: a lófogú vigyori figura kettőspont és D betű akar lenni, de ha konvertálatlanra veszem, nem ad félkövér formátumot.

-
Delila_1
veterán
válasz
m.zmrzlina
#10210
üzenetére
Jó ötlet!
Ennyit egyszerűsítenék rajta a feltételnél:
If IsNumeric(Mid(szoveg, i, 1)) Thenés a végén a biztonság kedvéért:
CSAKSZAM = szam*1 -
Delila_1
veterán
válasz
ql0qxo
#10193
üzenetére
Akkor átírjuk a képleteket.
F2:
=HA(INT(DARABTELI($E$2:$E2;$E2)/2)<>DARABTELI($E$2:$E2;$E2)/2;DÁTUM("20"& BAL($C2;2);KÖZÉP($C2;3;2);JOBB($C2;2));"")
G2:
=HA(INT(DARABTELI($E$2:$E2;$E2)/2)=DARABTELI($E$2:$E2;$E2)/2;DÁTUM("20"& BAL($C2;2);KÖZÉP($C2;3;2);JOBB($C2;2));"")
H2:
=HA(INT(DARABTELI($E$2:$E2;$E2)/2)<>DARABTELI($E$2:$E2;$E2)/2;IDŐ(BAL($D2;2);JOBB($D2;2);0);"")
I2:
=HA(INT(DARABTELI($E$2:$E2;$E2)/2)=DARABTELI($E$2:$E2;$E2)/2;IDŐ(BAL($D2;2);JOBB($D2;2);0);"")A J2 marad, ahogy volt, és a J3 üres, szintén, ahogy volt.
-
Delila_1
veterán
válasz
ql0qxo
#10191
üzenetére
Meg lehet adni cellaformázással, hogy csak az órákat mutassa, de az megrövidíti a dolgozót, az 59 percet is elsumákolja. Nem javaslom,
így is kiszolgáltatott az, aki melózik.Csúsztatás: van, ahol 10 órát dolgozik, ezt egyenlíti ki egy másik napon 6 órai melóval. A havi összes óraszám mutatja a valós bent töltött időt.
Egyébként a csúsztatással is veszít, mert a túlórára plusz pénz járna, és nem valószínű, hogy több órát csúsztathat, mint amennyit ledolgozott, 1 óra pluszért nem szoktak 1:15 időt, vagy 1,5 órát adni.
A havi összesítéshez ilyen formátumot javaslok: [ó]:pp.
-
Delila_1
veterán
válasz
ql0qxo
#10185
üzenetére
Fel kell venned néhány oszlopot a csatolt kép szerint.
Az F2 képlete látszik a szerkesztősorban.
G2:
=HA(DARABTELI($E$2:$E2;$E2)=2;DÁTUM("20"& BAL($C2;2);KÖZÉP($C2;3;2);JOBB($C2;2));"")
H2:
=HA(DARABTELI($E$2:$E2;$E2)=1;IDŐ(BAL($D2;2);JOBB($D2;2);0);"")
I2:
=HA(DARABTELI($E$2:$E2;$E2)=2;IDŐ(BAL($D2;2);JOBB($D2;2);0);"")
J2:
=HA(G3=F2;I3-H2;24-H2+I3)
Az F:J oszlopok formátuma idő, óó:pp. A J oszlopnál csak a 2. sorba írd be a képletet, és az J3 (üres) cellával együtt kijelölve húzd (másold) az adataid mellé, mert itt csak minden második sorba kell képlet. A többinél minden sorba kell.
Az utolsó ember adatát átírtam, hogy kipróbáljam az éjszakás műszakot. -
Delila_1
veterán
válasz
Zomb€€
#10180
üzenetére
Kértem, hogy tegyél be képet. Mivel nem tettél, a saját elképzelésem szerint írtam meg a makrót, majd átalakítod kedved (és az adataid) szerint.
Az egyik lap neve Oktatás, ahol az A oszlop tartalmazza a szak kódját, a B oszlop a szakra jelentkező nevét.
A másik lap Jelentkezők névre hallgat, ahol az A oszlopban van a név, a B:F oszlopokban a hozzájuk tartozó többi adat.
A harmadik lap az Összesítés, itt az A oszlopban lesz a kód, B-ben a jelentkező neve, a C:G tartományban a jelentkező többi adata.
Szerencsére azt tudom, hogy a 2007-es verziót használod. Nem mindegy, mert egészen más a rendezés a különböző verziókban.
Sub Adategyesítés()
Dim sorA%, usorA%, sorV%, usorV%, sorO%
Dim kód$, név$, adatSor%
Dim WSJ As Object, WSO As Object
Sheets("Oktatás").Select
usorA% = Range("A60000").End(xlUp).Row
'"A" oszlop rendezése
usorA% = Range("A60000").End(xlUp).Row
ActiveWorkbook.Worksheets("Oktatás").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Oktatás").Sort.SortFields.Add Key:=Range("A2"), _
SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Oktatás").Sort
.SetRange Range("A2:B" & usorA%)
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Egyedi rekordok szűrése a V oszlopba
Range("A1:A" & usorA%).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"V1"), Unique:=True
Set WSJ = Sheets("Jelentkezők")
Set WSO = Sheets("Összesítés")
usorV% = Range("V60000").End(xlUp).Row
sorO% = 2
For sorV% = 2 To usorV%
kód$ = Cells(sorV%, 22)
For sorA% = 2 To usorA%
If Cells(sorA%, 1) = kód$ Then
név$ = Cells(sorA%, 2)
WSO.Cells(sorO%, 1) = kód$
adatSor% = WSJ.Range("A:A").Find(név$).Row
WSO.Cells(sorO%, 2) = WSJ.Cells(adatSor%, 1)
WSO.Cells(sorO%, 3) = WSJ.Cells(adatSor%, 2)
WSO.Cells(sorO%, 4) = WSJ.Cells(adatSor%, 3)
WSO.Cells(sorO%, 5) = WSJ.Cells(adatSor%, 4)
WSO.Cells(sorO%, 6) = WSJ.Cells(adatSor%, 5)
WSO.Cells(sorO%, 7) = WSJ.Cells(adatSor%, 6)
sorO% = sorO% + 1
End If
Next
Next sorV%
End Sub -
Delila_1
veterán
Látom, értékeket illesztettél be a table lapra. Ha ez nem fontos, fel lehet gyorsítani azzal, hogy kihagyjuk a Select-eket.
Sub Masol()
Dim sor%, sor_1%
Sheets("make").Select
sor_1% = 1
For sor% = 1 To 111
If Cells(sor%, 1) > "" Then
Sheets("table").Cells(sor_1%, 1).EntireRow.Insert
Range("A" & sor% & ":I" & sor%).Copy Sheets("table").Cells(sor_1%, 1)
sor_1% = sor_1% + 1
End If
Next
End SubHa mégis az értékek beillesztése kell, holnap megírom.
Szerk.: ez az A1-től másol, az A11-től való másolásnál a For-Next ciklust 11-től kell indítani.
A makródban nem látom a sorok beszúrását (EntireRow.Insert). -
Delila_1
veterán
válasz
m.zmrzlina
#10164
üzenetére

-
Delila_1
veterán
válasz
m.zmrzlina
#10161
üzenetére
A B2 cella érvényesítésébe kellene beírni a HA függvényt a Forrás-hoz.
=HA(A1="fizetések";G1:G4;H1:H4)
-
Delila_1
veterán
válasz
Geryson
#10159
üzenetére
A különböző tartományoknak nevet adsz.
Az A1:A2 nálam a Kategórianévre hallgat.
Fontos, hogy az allisták azt a nevet kapják, amelyik főlista-beli kategóriába tartoznak. Az E1:E13 tartomány neve Kategória_1, az F1:F11-é Kategória_2.
Az első érvényesítés az A13 cellában van, a lista forrása: =Kategória
A B13-as érvényesítésnél a forrás: =INDIREKT(A13)Szerk.:
A Kategória egyes elemeinek a nevében nem lehet szóköz, és nem szerepelhet önállóan számjegy. -
Delila_1
veterán
válasz
Fire/SOUL/CD
#10141
üzenetére
Igaz, remélem nem beszélnek ennyit
.Vizes Tomi
Szívesen. -
Delila_1
veterán
válasz
basaharc502
#10131
üzenetére
Csinálsz a 2 adatsorból oszlopdiagramot. Kijelölöd azt az oszlopsort, amelyiket vonallá akarod alakítani. Jobb klikk, Minták, itt kiválasztod a vonalat.
-
Delila_1
veterán
válasz
Vizes Tomi
#10136
üzenetére
A SZUM függvény simán összeadja a két időpontot, csak az összegző cella is olyan formátumú legyen, mint az összeadandók (ó:pp:mm).
A felszorzás, ha a 14,30 a H1 cellában van, az idő pedig az E1-ben:
=ÓRA(E1)*60*H1+PERC(E1)*H1+MPERC(E1)*H1/60 , ez 2620 Ft. -
Delila_1
veterán
válasz
Vizes Tomi
#10113
üzenetére
Küldd el a fájlt, így nehéz követni.
A J1 megfelelője a cells(1,10). Itt előbb a sort, majd az oszlop sorszámát kell megadni.
-
Delila_1
veterán
válasz
Vizes Tomi
#10108
üzenetére
Cells(cseresor%, 5) = PercDij! helyett Cells(cseresor%, 6) = PercDij! legyen, mert a hatodik (F) oszlopba kell beírni a jelenlegi percdíjat.
A keresendő szöveg is más. A Szoveg$ = "Hálózaton belüli hívások" sorban írd át arra a szövegre, amit a számlán találsz.
-
Delila_1
veterán
válasz
peeter81
#10109
üzenetére
Function AverageColor(Mintacella As Range, Tartomany As Range)
Dim rngCell As Range
nColor = Mintacella.Font.Color
nDb = 0: nSum = 0
For Each rngCell In Tartomany
If rngCell.Font.Color = nColor Then
nDb = nDb + 1
nSum = nSum + rngCell
End If
Next rngCell
AverageColor = nSum / nDb
End FunctionVidd be ezt a makrót a füzeted VB szerkesztőjébe. Ugyanúgy használhatod majd, mint bármelyik másik függvényt.
Pl. az A1:B20 tartomány azon részének az átlagát szeretnéd megkapni, ahol a karakter kék színű. A Mintacella paraméternél add meg (rákattintással) egy olyan cella címét, ahol kék a karakter. Legyen ez pl. a B6, a függvényed a területen kívül egy cellában:
=AverageColor(B6;A1:B20) -
Delila_1
veterán
-
Delila_1
veterán
válasz
Vizes Tomi
#10102
üzenetére
A Cells(1,10) helyére írd be a makróban. PercDij=16
Akkor a J1 cellába nem kell beírnod. -
Delila_1
veterán
válasz
Vizes Tomi
#10097
üzenetére
Feltételezve (mivel nem írtad meg), hogy a "Hálózaton belüli hívások" szöveg az A oszlopban szerepel, és a hozzá tartozó egységár az E oszlopban van a kép szerint, itt a makró, ami beírja a J1 cellában általad megadott percdíjat a sárga hátterű cellákba:
Sub PercDij()
Dim Szoveg$, cseresor%, PercDij!
Szoveg$ = "Hálózaton belüli hívások"
PercDij = Cells(1, 10) 'ide fixen is beírhatod az összeget
cseresor% = Range("A:A").Find(Szoveg$).Row + 1
Do While Cells(cseresor%, 1) = ""
Cells(cseresor%, 5) = PercDij!
cseresor% = cseresor% + 1
Loop
End SubHa az adatok a "Hálózaton belüli hívások" címmel azonos sorban kezdődnek, akkor a
cseresor% = Range("A:A").Find(Szoveg$).Row + 1 sor végéről töröld a +1 -et. -
Delila_1
veterán
válasz
artiny
#10095
üzenetére
Kijelölöd a dátumokat tartalmazó területet.
A Kezdőlap - Stílusok közül a Feltételes formázást választod. Új szabály - A formázandó cellák kijelölése képlettel.
Az 'Értékek formázása, ha ez a képlet igaz' mezőbe ezt írod:
=MA()-A1>80
(ez arra az esetre vonatkozik, ha a dátumot tartalmazó adataid az A1 cellában kezdődnek, és azokat a cellákat akarod színezni, ahol a dátum több, mint 80 nappal előbbi, mint az aktuális dátum)A 'Formátum...' menüben kiválasztasz egy szimpatikus formátumot.
-
Delila_1
veterán
válasz
zsotesz81
#10077
üzenetére
Kétféle megoldás is van (és biztosan több is).
1. Kijelölöd a neveket tartalmazó területet. Adatok - Szövegből oszlopok. Követed a varázslót, Határoló jelnek az Egyéb kategóriában a / jelet adod meg. Ez a módszer 3 cellába szedi szét az adataidat.
2. Kétfelé szedéshez 2 új oszlopba viszed be az alábbi képleteket:
=BAL(E1;SZÖVEG.KERES("/";E1)-1)
=JOBB(E1;HOSSZ(E1)-SZÖVEG.KERES("/";E1)) -
Delila_1
veterán
válasz
m.zmrzlina
#10070
üzenetére
Azért az nem megy a fejembe, hogy ha a 10061-es hsz szerint a leírások az R57:S70 területen vannak, és minden betű egyszer szerepel, hogy jön ki összesen 4 karakterre? Hiszen ez 14 cella!
-
Delila_1
veterán
válasz
m.zmrzlina
#10070
üzenetére
Ezt a max. 4 karaktert nem vettem észre, igazad van.
A hosszú képletedhez csak annyit, hogy az ÖSSZEFŰZ függvényt egyszerűsíteni lehet.
Az =ÖSSZEFŰZ(A1;B1;C1) egyszerűbben =A1&B1&C1.
Persze a lényegen ez nem változtat. -
Delila_1
veterán
válasz
Delila_1
#10067
üzenetére
Egy kicsit átláthatóbban az előbbi makró:
Sub Leiras()
Dim sor%, oszlop%, betu%, nev$, cnev As Range
Range("K57:K75,M57:M75,P57:P75").ClearContents
For sor% = 57 To 75
oszlop% = 10: GoSub Beir
oszlop% = 12: GoSub Beir
oszlop% = 15: GoSub Beir
Next
Exit Sub
Beir:
nev$ = Cells(sor%, oszlop%)
Set cnev = Cells(sor%, oszlop% + 1)
For betu% = 1 To Len(nev$)
cnev = cnev & Application.VLookup(Mid(nev, betu%, 1), Range("R57:S70"), 2, 0) & " "
Next
cnev = Left(cnev, Len(cnev) - 1)
Return
End Sub
Új hozzászólás Aktív témák
- Apple iPhone 12 Mini 64GB,Újszerű,Adatkabel,12 hónap garanciával
- Lenovo magyar laptop billentyűzetre van szükséged? Akármelyik verzióban segítünk!
- HP Elitebook 840 G4,14",HD,i5-7300U,8GB DDR4,256GB SSD,WIN11
- HP ProDesk 600 G5 i5-9500 8GB 256GB 1 év garancia
- Apple iPhone 15 256GB,Átlagos,Adatkabel,12 hónap garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest


![;]](http://cdn.rios.hu/dl/s/v1.gif)

10 tartományba került a kigyűjtés. A másik lapon az A1 képlete: =Ha(Munka1!M1>"";Munka1!M1;"")



így is kiszolgáltatott az, aki melózik.
Fferi50