-
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
Topikgazda
válasz elmouse #17657 üzenetére
A makró a C1 cellába beírja a képletet, ami a mindenkori utolsó 50 tétel átlagát számolja ki.
Sub utolso_50()
Dim ucso%
ucso% = Range("A" & Rows.Count).End(xlUp).Row
Cells(1, "C") = "=AVERAGE(A" & ucso% - 49 & ":A" & ucso% & ")"
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 elmouse #17657 üzenetére
Hi,
...hogyan lehet az utolsó 50-ből számolni, ha mindig máshol van ez az utolsó 50?
m.zmrzlina tökéletes megoldása mellett itt egy másik is.
=ÁTLAG(ELTOLÁS(A1;DARAB2(A:A)-1;0;-50))Ez az ELTOLÁS (OFFSET) függvényt használja, az A1 cellából indulva elmegyünk a végéig és onnan 50-et visszalépve létrehozzuk a tartományt amelyen az ÁTLAG függvény tud számolni.
ü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 elmouse #17845 üzenetére
Sub atlag_50()
Dim sor As Long, usor As Long, oszlop%, uoszlop%, atlag!
Dim WF As WorksheetFunction
Set WF = WorksheetFunction
uoszlop% = Cells(1, Columns.Count).End(xlToLeft).Column
For oszlop% = 1 To uoszlop%
usor = Cells(1, oszlop%).End(xlDown).Row
atlag! = WF.Average(Range(Cells(usor - 49, oszlop%), Cells(usor, oszlop%)))
Cells(usor + 2, oszlop%) = atlag!
Cells(usor + 2, oszlop%).Font.ColorIndex = 3
Next
End SubMost a különböző hosszúságú oszlopoknál az utolsó érték alá 2 cellával írja be az átlagot piros színnel.
Ha van egy fix sorod, ahol már biztosan nincs adat, akkor a Next előtti 2 sorban az usor+2 helyett ezt a sorszámot add meg, akkor az átlagok azonos sorban jelennek 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.
-
Mutt
aktív tag
válasz elmouse #17845 üzenetére
Hi,
Makró nélküli változat (ha 50-él kevesebb érték van az oszlopban, akkor is műxik):
=ÁTLAG(ELTOLÁS(A$1;DARAB2(A:A)-1;0;-MIN(50;DARAB2(A:A))))Még több hibakezeléssel pedig ez megy:
=ÖSSZESÍT(1;6;ELTOLÁS(A$1;DARAB2(A:A)-1;0;-MIN(50;DARAB2(A:A))))Illetve m.zmrzlina függvénye is jó.
ü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 elmouse #17852 üzenetére
Igaza Van Muttnak a hibakezelést illetően a 17853-as hozzászólásban. Pótoltam a hiányt.
Sub atlag_50()
Dim sor As Long, usor As Long, oszlop%, uoszlop%, atlag!
Dim WF As WorksheetFunction
Set WF = WorksheetFunction
uoszlop% = Cells(1, Columns.Count).End(xlToLeft).Column
For oszlop% = 1 To uoszlop%
usor = Cells(1, oszlop%).End(xlDown).Row
If usor - 49 > 2 Then
atlag! = WF.Average(Range(Cells(usor - 49, oszlop%), Cells(usor, oszlop%)))
Cells(usor + 2, oszlop%) = atlag!
Else
Cells(usor + 2, oszlop%) = "Kevesebb, mint 50 tétel"
End If
Cells(usor + 2, oszlop%).Font.ColorIndex = 3
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 elmouse #17874 üzenetére
Szívesen.
A változóknak igyekszem olyan neveket adni, ami utal a tartalmukra, ez biztosan segít a megértésben.
A változó végén lévő % jel azt jelenti, hogy -32768 és 32768 közötti egész számot fogadhat, a !-es végű törtet, jó nagy tartományban. A Long típusú változó is egész számokat fogad, szintén nagy tartományban.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
Új hozzászólás Aktív témák
Állásajánlatok
Cég: Ozeki Kft.
Város: Debrecen
Cég: Alpha Laptopszerviz Kft.
Város: Pécs