Kezdőlap › Fórumok › Excel témák › [Resolved] 3D hivatkozás dinamikusan több munkalapon át 1-n-ig
- This topic has 7 hozzászólás, 3 résztvevő, and was last updated 3 years telt el by horvimi.
-
SzerzőBejegyzés
-
2021-11-11-19:24 #8784
Kedves Imre!
Arra van megoldásod képlettel, hogy
=MAX(1!A:A)+MAX(2!A:A)+MAX(3!A:A)….2-es lapon csak max(1!A:A), utána mindig hozzáadja az előző munkalap MAX(A:A) értéket. 1-től n-1-ig
2021-11-11-21:59 #8785Szia!
Erre nincsen képletes megoldás.
Makróval, felhasználói függvényt (UDF) lehet írni rá.
Csináltan egy gördülő összegző függvényt, amit egy kicsit módosítva a saját problémádat is megoldhatja.
Cserébe viszont makrós lesz a fájl.Szóval a szóban forgó fájlba a makró szerkesztővel beszúrsz egy új modult, majd abba bemásolod ezt:
Function RunningTotalSheets(source As Range) As Double Dim sourceAddress As String Dim i As Integer Dim result As Double sourceAddress = source.Address result = 0 For i = 1 To ActiveSheet.Index result = result + WorksheetFunction.Sum(Worksheets(i).Range(sourceAddress)) Next i RunningTotalSheets = result End Function
Azt teszi, hogy a paraméterben kapott tartományt kummulatíve összesíti az elsőtől az aktuális lapig.
Próba:
1. Átmész Excelbe, megcsinálod an N darab lapot az „A” oszlopban az adatokkal.
2. Az első lapon egy üres cellába elkezded írni, hogy „=Runni…”, látod majd, hogy felajánlja az UDF nevét, TAB-al elfogadod, és az egy db paraméterbe bekattintod az egész „A” oszlopot
3. Átmész a 2. lapra és megcsinálod ugyanezt, vagy átmásolod az előző lapról a függvényes cellát. Itt már az első két lap összesenje jön az „A” oszlopokból, stb…Ha az eredeti problémára szeretnél fókuszálni, és az elsőtől az aktuális-1-ig szeretnél Max értékeket összeadni, akkor:
1. A For ciklust Activesheet.Index-1-ig kell futtatni
2. Az összegző sorban a Sum-ot Max-ra változtatodVigyázz, hogy először csak a 2. lapon adható ki, nem tettem bele hibakezelést.
Remélem sikerül,
Imre
2021-11-12-08:15 #8786Jó reggelt!
Egy másik megoldás lehet, hogy minden lapon egy üres cellába (nálam D1) beírom az A oszlop maximumát. Az összegző lapon a képlet
=SZUM(Munka1:Munka3!D1)
A Munka1:Munka3 helyén a képletben az első, és az utolsó lapok neve szerepeljen.Üdv,
delila2021-11-12-09:37 #8787Szia Delila!
A feladat gördülő összegzés készítése valami olyan képlettel, ami automatikusan az előte lévők adott tartományát összegzi.
A te képleted statikus, tehát minden oldalon kézzel módosítani kellene.A feladat nem oldható meg (szerintem) Excel natív képlettel.
Elvileg LAP() és INDIREKT() működne, de kiderült, hogy az INDOREKT nem kezeli a 3D hivatkozásokat.
Azóta utánajártam és valóban nem.Imre
2021-11-12-12:38 #8788Szia Imi!
Valóban a kérdezőnek dinamikus képletre van szüksége.
Azért nem bánom, hogy feltettem ide a lapok egyes celláinak összegzését, mert nem sokan ismerik ezt a megoldást. Ha ide nem is stimmel, máshol (pl. 1 évhez 12 lap, majd ehhez egy összegző lap) alkalmazható.Kati
2021-11-12-12:54 #8789Persze!
Tök rendben van, köszi!
Én is szoktam mindig tanítani haladó tanfolyamokon.Imi
2021-11-12-16:22 #8790Köszönöm, találtam egy hibát.
Ha egy n-k. sorszámú munkalapon frissül az adat, akkor n sorszámú munkalapon beragad az előbbi érték.
pl. 2. munkalapon új adatot vittem fel. 2. munkalapon a gördülő összeg frissül, de a 3. munkalapon egészen addig nem frissül, amíg bele nem kattintok, vagy bármi változás nincs a 3. munkalapon. egyébként működik.
alt+F5 segít?Laci
- A hozzászólás módosításra került: 3 years telt el-Laszlosala.
2021-11-12-19:49 #8792Írd be a Function sor után, az első Dim elé, hogy
Application.Volatile
Ezzel azt kéred, hogy váljék volatil függvénnyé, és bárhol bármi megváltozik, kalkuláljon újra.
Imre
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.