Telefonszámunk: 1-472-0679

[Resolved] 3D hivatkozás dinamikusan több munkalapon át 1-n-ig

Kezdőlap Fórumok Excel témák [Resolved] 3D hivatkozás dinamikusan több munkalapon át 1-n-ig

Topic Resolution: Resolved
8 bejegyzés megtekintése - 1-8 / 8
  • Szerző
    Bejegyzés
  • #8784
    Laszlosala
    Felhasználó

    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

    #8785
    horvimi
    Adminisztrátor

    Szia!

    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áltoztatod

    Vigyázz, hogy először csak a 2. lapon adható ki, nem tettem bele hibakezelést.

    Remélem sikerül,

    Imre

    #8786
    delila
    Felhasználó

    Jó 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,
    delila

    #8787
    horvimi
    Adminisztrátor

    Szia 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

    #8788
    delila
    Felhasználó

    Szia 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

    #8789
    horvimi
    Adminisztrátor

    Persze!

    Tök rendben van, köszi!
    Én is szoktam mindig tanítani haladó tanfolyamokon.

    Imi

    #8790
    Laszlosala
    Felhasználó

    Kö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: 2 weeks, 2 days telt el-Laszlosala.
    #8792
    horvimi
    Adminisztrátor

    Í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

8 bejegyzés megtekintése - 1-8 / 8
  • Be kell jelentkezni a hozzászóláshoz.