-
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
-
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 M110 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 -
Delila_1
veterán
válasz
m.zmrzlina #10065 üzenetére
Le a kalappal!
Van egy baj: a lehetséges betűk száma 14, HA függvényből viszont csak hetet lehet egymásba ágyazni. Ez az az eset, mikor makrót kell írni.
Sub Leiras()
Dim sor%, oszlop%, betu%, nev$
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%)
For betu% = 1 To Len(nev$)
Cells(sor%, oszlop% + 1) = Cells(sor%, oszlop% + 1) & Application.VLookup(Mid(nev, betu%, 1), Range("R57:S70"), 2, 0) & " "
Next
Cells(sor%, oszlop% + 1) = Left(Cells(sor%, oszlop% + 1), Len(Cells(sor%, oszlop% + 1)) - 1)
Return
End Sub -
Delila_1
veterán
válasz
MIFtIli #10054 üzenetére
A helyére nem, de mellé az FKERES függvénnyel beírhatod a leírást.
Kicsit összetettebb a feladat, ha egy cellában pl. acd szerepel, és ahhoz 3 leírás tartozik.
Add meg pontosan, hol szerepelnek a betűk, és hol van a hozzájuk tartozó leírás.Valaki biztosan segít, én kikapcsolok, dörög, villámlik, és nincs villámvédelmem.
-
Delila_1
veterán
válasz
zsotesz81 #10058 üzenetére
Nem értem, miért ragaszkodsz a makróhoz, mikor egyszerű képlettel meg lehet oldani.
Tulajdonképpen az érdekel, hogy a Sheet1 lapon szerepel-e mindenkinek a neve, akinek a címe megvan a Sheet2-n.Az F1-be tedd be ezt a képletet:
=HA(HIBÁS(FKERES(Sheet2!B1&"*";E:E;1;0));"Nincs a Sheet1 lapon";"X") ,majd a cella jobb alsó sarkában lévő kis fekete négyzetre duplaklikk, és már le is másolta addig, ameddig az E oszlopban talál adatot.
-
Delila_1
veterán
válasz
zsotesz81 #10055 üzenetére
Eszerint megint átrendezted az adataidat.
Ha az Excelben szúrsz be egy oszlopot, vagy sort, avagy törölsz, akkor a képletek automatikusan átíródnak. A makrónál nem ez a helyzet. Ha ott azt írod, hogy az ötödik oszlop adatával csináljon valamit (van is a képletben ilyen hivatkozás: C5), akkor azt csinálja. Ha ott nem azt az adatot találja, ami a beszúrás-törlés előtt volt, akkor hibás eredményt kapsz.
A makrót arra az esetre írtam, mikor az elrendezésed a 10051 hsz. szerinti volt.Itt le is tettem a lantot. Még annyit segítek, hogy a 10048-as hsz-ban megadott képleteket alakítsd át a jelenlegi elrendezésre – majd 5 percenként az újabbakra –, indíts makrórögzítést, enterezd le a két képletet, és a rögzített sorokat másold be a Range("F1:F" & usor).FormulaR1C1 = _, és a Range("G1:G" & usor).FormulaR1C1 = _ sorokhoz.
-
Delila_1
veterán
válasz
zsotesz81 #10051 üzenetére
Tényleg prérifarkas vagy, az első kérdésedben más volt az elrendezés. A válaszom emiatt adott #NAME eredményt.
A pontatlanságoddal – hogy ne írjak hebehurgyaságot – megdolgoztatod azokat, akiknek a segítségét kéred.A ciklusok hosszú időd vesznek igénybe, pláne, ha 2 különálló táblázaton kell végig futniuk. Sokkal gyorsabb és egyszerűbb 1-1 lépésben megadni a képleteket, majd ezek helyére beilleszteni az értéküket.
A jelenlegi felállásra:
Sub X_ek()
Dim usor%
Sheets("Sheet1").Select
usor = Range("E6000").End(xlUp).Row
Range("F1:F" & usor).FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(Sheet2!RC2&""*"",C5,1,0)),""nincs"",IF(RIGHT(VLOOKUP(Sheet2!RC2& ""*"",C5,1,0),9)=""Contr/IBM"",""X"",""""))"
Range("G1:G" & usor).FormulaR1C1 = _
"=IF(ISERROR(VLOOKUP(Sheet2!RC2&""*"",C5,1,0)),""nincs"",IF(RIGHT(VLOOKUP(Sheet2!RC2& ""*"",C5,1,0),9)=""vakia/IBM"",""X"",""""))"
Columns("F:G").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Application.CutCopyMode = False
Range("F1").Select
End Sub -
Delila_1
veterán
válasz
zsotesz81 #10045 üzenetére
Akkor kell bele egy hibaelhárítás is.
D1:
=HA(HIBÁS(FKERES($A1&"*";Sheet2!$E:$E;1;0));"";HA(JOBB(FKERES($A1& "*";Sheet2!$E:$E;1;0);9)="Contr/IBM";"X";""))E1:
=HA(HIBÁS(FKERES($A1&"*";Sheet2!$E:$E;1;0));"";HA(JOBB(FKERES($A1& "*";Sheet2!$E:$E;1;0);9)="vakia/IBM";"X";""))
Új hozzászólás Aktív témák
Hirdetés
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Windows 10/11 Home/Pro , Office 2024 kulcsok
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- Vírusirtó, Antivirus, VPN kulcsok
- Kaspersky, McAfee, Norton, Avast és egyéb vírusírtó licencek a legolcsóbban, egyenesen a gyártóktól!
- Lejárt a gyártói garancia? Mi tovább támogatjuk az IT infrádat!
- BESZÁMÍTÁS! Lenovo ThinkPad T14 Gen 4 üzleti notebook - i7 1360P 24GB DDR5 RAM 512GB SSD Iris Xe W11
- ÁRGARANCIA!Épített KomPhone i5 13400F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! Gigabyte A620M R5 7500F 32GB DDR5 512GB SSD RTX3070 8GB ZALMAN S2 TG Enermax 750W
- BESZÁMÍTÁS! MSI B450M R5 5500 32GB DDR4 512GB SSD RTX 3060 12GB Rampage SHIVA Chieftec 600W
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: Promenade Publishing House Kft.
Város: Budapest