-
GAMEPOD.hu
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
Topikgazda
válasz alfa20 #15605 üzenetére
Meghatározod az utolsó sort, például az usor=Cells(Rows.Count, "A").End(xlUp).Row -val.
Range("I2:T2").Select helyett Range("I2:T" & usor).Select-et írj.
A beillesztésnél a Selection.PasteSpecial Paste:=xlFormulas forma illeszti be a képletet, az xlValues az értéket másolja.
A képleteket egyszerre is megadhatod külön másolás nélkül az összes sorba
Range("T2:T" & usor)= "=Range(A2*10)" formában.
Az Excel tudja, hogy a T3-ba már =A3*10-et írjon.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
válasz alfa20 #17611 üzenetére
2. kérdés
Sub Keplet()
Dim usor%
usor% = Range("F2").End(xlDown).Row
Range("G2:G" & usor%).FormulaR1C1 = "=RC[1]/RC[-1]"
Range("G:G").Select: Selection.Copy
Selection.PasteSpecial Paste:=xlValues
Range("H2:H" & usor%).FormulaR1C1 = "=RC[-2]*RC[-1]"
'********************************************
Range("H:H").Select: Selection.Copy
Selection.PasteSpecial Paste:=xlValues
'********************************************
Application.CutCopyMode = False
End SubA csillagos sorok közötti rész nem kell, ha a H oszlop képleteit nem kell felülírni az értékeivel.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
wjani
tag
válasz alfa20 #17656 üzenetére
Szia!
Én is így kezdtem. Aztán következett a sok-sok súgó, meg a sok-sok apró kis program összerakása.
Tudod ezután jön meg az ember étvágya. Ha már ezt és ezt megtudtam csinálni, akkor jó enne még ez is, így szép lassan az agy rááll az excel makró készítésére.Én az excel 5 makrózással kezdtem. Az egy elég vastag fekete könyv. De mióta lézetik a barátunk. (Google), azóta nem biztos, hogy szükséges a könyv.
A másik dolog, hogy apránként kell haladni. Mindig egy kicsit tanulj meg és azt gyakorold. Aztán próbálj kitalálni valami egyszerű kis programot, amit megtudnál csinálni excelben. Stb.Üdv.
WjaniCoViA Online könyvkereskedés,
-
Mutt
aktív tag
válasz alfa20 #17656 üzenetére
Hello,
Makró tanuláshoz (alapoktól) milyen tudnátok könyvet ajánlani?
Mr. Excel - VBA and Macros: Microsoft Excel 2010 (ISBN 978-0-7897-4314-5)
John Walkenbach - Excel 2007 VBA Programming For Dummies (ISBN 978-0-470-04674-6)Online pedig: http://www.functionx.com/vbaexcel/index.htm
illetve számos fórumot: prohardvare, ozgrid, mrexcel stb.Amit tanácsolnék, hogy jól ismerd meg a függvényeket, mivel előfordulhat, hogy egy létező függvény is megoldja a problémádat.
Erre a legjobb fórum természetesen itt van, meg Chandoo-nál.
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Delila_1
Topikgazda
válasz alfa20 #17719 üzenetére
=HA(HIBÁS(SZÖVEG.TALÁL("T";G8));"HAMIS";"IGAZ")
Ennek alapján már össze tudod hozni a több karakterre történő keresést. Jó hosszú képlet lesz belőle.
=HA(NEM(HIBÁS(SZÖVEG.KERES("T";A1)));1;HA(NEM(HIBÁS(SZÖVEG.KERES("A";A1)));2;HA(NEM(HIBÁS(SZÖVEG.KERES("P";A1)));3;HA(NEM(HIBÁS(SZÖVEG.KERES("M";A1)));4;HA(NEM(HIBÁS(SZÖVEG.KERES("B";A1)));0;"")))))
[ 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.
-
Delila_1
Topikgazda
válasz alfa20 #17811 üzenetére
Itt legalább látszik a makróban a tagolás.
A ciklust a 2. sortól indítottam, feltételezve, hogy van címsorod.Sub Valami()
Dim sor%, usor%, szoveg$, f As Boolean
usor% = Range("A" & Rows.Count).End(xlUp).Row
For sor% = 2 To usor%
If InStr(Cells(sor%, 1), "alma") And _
InStr(Cells(sor%, 1), "körte") Then
szoveg$ = "Van almád és körtéd"
f = True: GoTo Kiiras
End If
If InStr(Cells(sor%, 1), "alma") Then
szoveg$ = "Van almád"
f = True: GoTo Kiiras
End If
If InStr(Cells(sor%, 1), "körte") Then
szoveg$ = "Van körtéd"
f = True: GoTo Kiiras
End If
Kiiras:
If f Then
MsgBox szoveg$
Else
MsgBox "Semmid sincs"
End If
szoveg$ = "": f = False
Next
End SubProgramozó: 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
válasz alfa20 #17815 üzenetére
Talán így megfelel.
Sub Valami()
Dim sor%, usor%, szoveg$
Dim alma%, korte%
usor% = Range("A" & Rows.Count).End(xlUp).Row
For sor% = 2 To usor%
If InStr(Cells(sor%, 1), "alma") Then alma% = alma% + 1
If InStr(Cells(sor%, 1), "körte") Then korte% = korte% + 1
Next
If alma% > 0 And korte% > 0 Then szoveg$ = "Van " & alma% & " db almád és " _
& korte% & " db körtéd."
If alma% > 0 And korte% = 0 Then szoveg$ = "Van " & korte% & " db körtéd."
If alma% = 0 And korte% = 0 Then szoveg$ = "Nincs semmid."
MsgBox szoveg$
End Sub[ 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.
-
Delila_1
Topikgazda
válasz alfa20 #17828 üzenetére
Az én makrómban 1× szerepelt a Dim sorban az usor%, amit Te végül nem dimenzionáltál.
Az utolsó sor (usor) értékét a
usor = Range("U" & Rows.Count).End(xlUp).Row
sor szerint a lap U oszlopából veszed az A helyett. Ha az U oszlopban nincs adat, vagy nem annyi van, mint az A-ban, hibásan működik a makró.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
hallgat
csendes tag
-
Mutt
aktív tag
válasz alfa20 #18967 üzenetére
Szia,
G2: =SZUM(E2-D2-F2) - (ledolgozott órák száma eredmény:8:00)
Ezen képlet helyett inkább használd ezt:
=MARADÉK(E2-D2;1)-F2Ez helyesen kezeli az esti műszakos ledolgozott időt is (pl. este 10 és reggel 6 közötti órákra is megy).
üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
válasz alfa20 #19042 üzenetére
Hello,
Több feltételes keresésre az alábbi megoldások műkődnek (A és B-oszlopokban a kulcsmezők, C-ben pedig a visszatérési érték:
1. SZORZATÖSSZEG (SUMPRODUCT).
Ha számot akarsz visszakapni, akkor az alábbi formátumban tudod használni.
=SZORZATÖSSZEG(--(A:A=feltetel1);--(B:B=feltétel2);C:C)Ha szöveget, akkor pedig használd így:
=INDEX(C:C;SZORZATÖSSZEG((A:A=feltetel1)*(B:B=feltetel2)*SOR(C:C)))2. KERES (LOOKUP)
=KERES(2;1/(A:A=feltetel1)/(B:B=feltetel2);C:C)3. HOL.VAN (MATCH)
Ez egy tömb függvény, vagyis kapcsos zárójelek nélkül kell bevinni és a bevitel végén Ctrl+Shift+Enter-t kell nyomni.
{=INDEX(C:C;HOL.VAN(feltetel1&feltetel2;A:A&B:B;0))}üdv.
[ Szerkesztve ]
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Mutt
aktív tag
válasz alfa20 #19053 üzenetére
Szia,
Nem jó képletet használsz, FKERES-el nem fog menni.
H3-ban ez a képlet legyen (csak 100 sort néz a képlet):
=SZORZATÖSSZEG(--($B$3:$B$100=F3);--($C$3:$C$100=G3);$D$3:$D$100)Vagy ez a CSE függvény:
{=INDEX($D$3:$D$100;HOL.VAN(F3&G3;$B$3:$B$100&$C$3:$C$100;0))}Vagy simán KERES-el:
=KERES(2;1/($B$3:$B$100=F3)/($C$3:$C$100=G3);$D$3:$D$100)üdv.
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Delila_1
Topikgazda
válasz alfa20 #19272 üzenetére
Igazad van, nem figyeltem az A1 teljes szövegét.
Legjobb, ha a "Szövegből oszlopok" funkciót használod, ahol határoló jeleknek a szóközt, és az Egyéb kategóriában a kötjelet adod meg. Ez oszlopokba írja át a szövegedet, onnan már tudsz a cellákra hivatkozni.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Mutt
aktív tag
válasz alfa20 #19266 üzenetére
Hello,
olyat tudok, hogy van egy szövegem amiben van két szám amire szükségem lenne számoláshoz?
A1: rendelhető 10-10 kg, ill. dinnye, kókusz, 3-3 db-ot.
B1: 10
C1: 3Előre szólok, hogy csúnya lesz a képlet és csak 2007-es vagy újabban működik!
Kell segédoszlop, ez D és E nálam.
D-be ez a CSE képlet kell:
{=ÖSSZESÍT(15;6;HOL.VAN(SOR($A$1:$A$10)-1;--(KÖZÉP(A1;SOR(INDIREKT("A$1:A"&HOSSZ(A1)));1));0);1)}
E-be pedig ez:
{=ÖSSZESÍT(15;6;HOL.VAN(SOR($A$1:$A$10)-1;--(KÖZÉP(A1;SOR(INDIREKT("A"&SZÖVEG.KERES(",";A1)&":A"&HOSSZ(A1)));1));0);1)}A segéd képletek megadják, hogy honnan kezdődik a keresett szám első számjegye.
A második számnál valójában az első vessző utáni pozícíót kapjuk meg.Hogy meddig tart a szám az pedig a kötőjelekből tudható meg.
B1-be ez a képlet menjen:
=KÖZÉP(A1;D1;SZÖVEG.KERES("-";A1)-D1)
C1-be pedig ez:
=KÖZÉP(A1;E1+SZÖVEG.KERES(",";A1)-1;SZÖVEG.KERES("-";KÖZÉP(A1;E1+SZÖVEG.KERES(",";A1)-1;HOSSZ(A1)))-1)Ha kell elmagyarázom, hogyan működik azonban itt inkább javaslok egy UDF-et, amely átláthatóbban adja vissza a kért számokat.
A függvény végigmegy a cella tartalmán és a nem-összefüggő számokat megjegyzi, és a kért számot kiírja.
B1-be ez mehet:
=SzamokSzovegben(A1;1)
C1-be ez:
=SzamokSzovegben(A1;3)A függvény kódja pedig:
Function SzamokSzovegben(be As Range, ki As Integer)
Dim c As Long, i As Long 'általános változók számláláshoz
Dim arrySzamok() 'átmeneti tömb az eredmények tárolására
Dim blnSzam As Boolean 'logikai változó hogy tudjuk mikor váltunk szám és betű között
i = 1
blnSzam = False
'elkezdjük karakterenként feldolgozni a szöveget
For c = 1 To Len(be)
Select Case Mid(be, c, 1)
Case 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
'ha számot találunk, akkor megjegyezzük és a tömbhöz hozzáfűzzük
blnSzam = True
ReDim Preserve arrySzamok(1 to i)
arrySzamok(i) = arrySzamok(i) + Mid(be, c, 1)
Case Else
'ha eddig szám volt és most nem számot látunk, akkor növeljük a tömböt
'hogy egy újabb számot külön rögzítsünk
If blnSzam Then
i = i + 1
blnSzam = False
End If
End Select
Next c
'kiírjuk a kért értéket
SzamokSzovegben = arrySzamok(ki) * 1
End Functionüdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Delila_1
Topikgazda
válasz alfa20 #20587 üzenetére
A fül meghatározása:
Right("0" & Month(Date),2) & Right("0" & Day(Date),2) & ".49_RND"
A Right függvényre azért van szükség, mert egy számjegyű hónapnál és napnál elé kell tenni egy nullát.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Mutt
aktív tag
válasz alfa20 #20630 üzenetére
Hi,
...az adattáblát tudom használni másik munkafüzetben is vagy csak abban amiben létrehozom az adattáblát?
Hasonló módon működik mint az INDIREKT függvény, vagyis ha megvan nyitva a fájl akkor lehet rá hivatkozni
[Fájlneve.xlsx]Munkalap!Táblázatneve[Mezőnév] formában. Azonban, ha bezárod akkor #HIV hibát fogsz kapni.Ergo nem célszerű munkafüzeten kívül használni.
üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Delila_1
Topikgazda
válasz alfa20 #20779 üzenetére
Igen, annyi különbséggel, hogy a Dim sorokat a makró elejére szoktuk bevinni, hogy később könnyebben megtaláljuk.
Dim tbl1_fulnev As WorkSheet, tbl2_fulnev As WorkSheet, tbl3_fulnev As WorkSheet
Alá már jöhetnek az értéket adó Set sorok.A Dim változónév As Típus helyet foglal a memóriában a változónak. Ennek az az előnye, hogy ha a makró írása közben elgépeled egy változó nevét, aminek helyet foglaltál, már az indításkor rád kiabál, hogy nincs dimenzionálva egy változó. Ha ezt a lehetőséget kihagyod, nehezebben találod meg a hibát, ami abból adódhat, hogy 1-1 karakter eltéréssel írtad be a változót több helyre. Érdemes hozzászokni a dimenzionáláshoz.
Példa:
Szoveg="Ez itt egy szöveg"
Range("A10")=Szöveg
Ha nem deklaráltad a Szoveg változót, az A10 üres lesz, mert a Szöveg változó üres string, nem adtál neki értéket. Az is lehet, hogy nulla lesz az A10, mert nem közölted a VBA-val, hogy a Szöveg milyen típusú (szöveg, dátum, szám, logikai, stb.) változó legyen. Keresheted a hibát, és könnyű átsiklani 1 betű eltérésen. Ha viszont foglaltál neki helyet, indításkor jön az üzenet, hogy nincs Szöveg változód.A VBE Tools | Option menü Editor fülén jelöld be a Require Variable Declaration négyzetet. Ettől kezdve a moduljaid tetején automatikusan megjelenik az Option Explicit felirat, ami kötelezővé teszi a változók deklarálását, futtatáskor azonnal figyelmeztet a hiányra.
Szerk.: a helyfoglaláskor ne hagyd ki a típus megadását sem, akkor egy dátumot váró változónak nem adhatsz véletlenül szöveg típusú értéket. Előfordulhat, hogy 1-1 változóhoz változó típusú adatot kellene rendelned, ilyenkor a típust elhagyhatod, vagy Variant-ra állítod.
[ 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.
-
Delila_1
Topikgazda
válasz alfa20 #20790 üzenetére
Betettem a felsorolt számokat a H1:H12 tartományba.
A cella képlete, ahol le akarod kérdezni, hogy az A2 szerepel-e a listában:=HA(HIBÁS(FKERES(A2;H1:H12;1;0));C2;B2)
Ha 2003-asnál magasabb verziót használsz, a fenti helyett a HAHIBA függvényt is alkalmazhatod.
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
válasz alfa20 #20794 üzenetére
Akkor egy másik megoldás:
=HA(HIBÁS(FKERES(A2;{130;131;132;133;160;161;170;171;190;191;375;376};1;0));C2;B2)
{ Bal Alt, + a számbillentyűzeten 0123
} Bal Alt, + a számbillentyűzeten 0125[ 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.
-
-
-
Delila_1
Topikgazda
válasz alfa20 #20877 üzenetére
A látható sorokat töröljük, majd a végén a többi sort láthatóvá tesszük a szűrő feltétel kihagyásával.
Sub szur()
Dim usor As Long
usor = Range("A" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("$A$1:$V$" & usor).AutoFilter Field:=2, Criteria1:="*alma*"
ActiveSheet.Rows("2:" & usor).SpecialCells(xlCellTypeVisible).Delete
ActiveSheet.Range("$A$1:$V$" & usor).AutoFilter Field:=2
End SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Mutt
aktív tag
válasz alfa20 #20934 üzenetére
Hello,
Olyan makrót tudok készíteni ami megkérdezi melyik oszlop(ok)ból szeretném törölni a nullákat és szépen kitörli?
Ezt tudod használni, csak a kijelölt cellában/oszlopban/sorban töröl:
Sub NullaTorles()
Dim rngTartomany As Range
Dim rngAdatok As Range
On Error GoTo NullaTorles_Error
'kérjük be a tartományt
Set rngTartomany = Application.InputBox("Honnan szeretnéd törőlni a nullákat?", "Választás", , , , , , 8)
'szűkítsük csak a használatban lévő részre
Set rngAdatok = Intersect(rngTartomany, ActiveSheet.UsedRange)
If Not rngAdatok Is Nothing Then
Application.ScreenUpdating = False
rngAdatok.Replace What:="0", Replacement:="", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False
Application.ScreenUpdating = True
End If
On Error GoTo 0
Exit Sub
NullaTorles_Error:
MsgBox "Kilépés"
End SubHa további nullákat akarsz keresni, akkor esetleg nézd meg így:
WorksheetFunction.CountIf(ActiveSheet.UsedRange, "=0")üdv
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
Új hozzászólás Aktív témák
- Hálózati / IP kamera
- Filmvilág
- Redmi Note 13 5G - fogyókúra után
- exHWSW - Értünk mindenhez IS
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Politika
- Hobby elektronika
- Intel Core i5 / i7 / i9 "Alder Lake-Raptor Lake/Refresh" (LGA1700)
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Tippmix
- További aktív témák...