Excel - adatkezelés dummy változók mentén
2010-01-12T11:47:55+01:00
2010-01-12T15:38:38+01:00
2022-07-24T19:10:32+02:00
sagfer
Sziasztok!

Az alábbi problémában szeretnék segítséget kérni, gondolom sokaknak egyszerű lesz a megoldás - sajnos nekem nem az.

Adott A oszlopban egy x (jó sok) elemű számsor. B oszlopban a számsorunk mentén bizonyos cellákat 1-sel jelöltem. Az 1-sek elhelyezkedésében nincs rendszerszerűség (pl. nem minden második, hetedik, kilencvenkilencedik cellában van 1-es, hanem véletlenszerűen helyezkednek el)

Egy olyan képletre lenne szükségem, amely akkor, ha a B oszlopban 1-est lát, akkor az A oszlop azonos sorához tartozó értéket összeadja az előző 1-eshez tartozó, A oszlopban található értékkel. Ahol nem lát egyest, ott simán az A oszlopban található számot kell vennie. A lényeg az lenne, hogy mindig csak két számot adjon össze, az aktuális egyeshez tartozót és az előtte álló 1-eshez tartozó értéket.

Próbálkoztam már if(and) és vlookup kombinációjával, de sehogy akar összejönni a dolog.

Köszi előre is!
Mutasd a teljes hozzászólást!
Egy nagyon bonyolult megoldást sikerült csak kitalálnom.

Nincs fejlécem és az első sort kihagytam:
A oszlop: számok
B oszlop: 1-es vagy üres
C oszlop, C1-es cella (másolandó lefelé):
=IF(B1=1;ROW(B1);0)
D oszlop, D2-cella (másolandó lefelé):
=MAX($C$1:C1)
E oszlop, E2 cella (másolandó lefelé):
=IF(AND(B2=1;D2<>0);A2+OFFSET($A$1;D2-1;0);A2)

D és E oszlopok összevonhatóak, ekkor D oszlopbna:
=IF(AND(B2=1;MAX($C$1:C1)<>0);A2+OFFSET($A$1;MAX($C$1:C1)-1;0);A2)
Sajna C oszlopot nem sikerült kihagynom és begyúrnom a képletbe.

Ennél egyszerűbb megoldás selod által javasolt manuális módszer vagy egy saját függvény VBA-ban.
Mutasd a teljes hozzászólást!

  • Szia.
    A B oszlop szerint rendezve egymás alá kerülnek az 1-ek.
    Ekkor már egyszerűbb a képlet, nem?
    Vagy rosszul értem a kérdést?
    Mutasd a teljes hozzászólást!
  • Egy nagyon bonyolult megoldást sikerült csak kitalálnom.

    Nincs fejlécem és az első sort kihagytam:
    A oszlop: számok
    B oszlop: 1-es vagy üres
    C oszlop, C1-es cella (másolandó lefelé):
    =IF(B1=1;ROW(B1);0)
    D oszlop, D2-cella (másolandó lefelé):
    =MAX($C$1:C1)
    E oszlop, E2 cella (másolandó lefelé):
    =IF(AND(B2=1;D2<>0);A2+OFFSET($A$1;D2-1;0);A2)

    D és E oszlopok összevonhatóak, ekkor D oszlopbna:
    =IF(AND(B2=1;MAX($C$1:C1)<>0);A2+OFFSET($A$1;MAX($C$1:C1)-1;0);A2)
    Sajna C oszlopot nem sikerült kihagynom és begyúrnom a képletbe.

    Ennél egyszerűbb megoldás selod által javasolt manuális módszer vagy egy saját függvény VBA-ban.
    Mutasd a teljes hozzászólást!
  • Köszi a válaszokat! Én tettem rosszul fel a kérdést.

    selod: Az a baj, hogy folyamatosan bővülő idősorom van, vagyis a cellák helyzete adott. Természetesen így rendben lenne egy sima összeadással, viszont abban a pillanatban, hogy az adatsorom bővül (nagyon gyakran) újra meg kéne csinálnom manuálisan az egész műveletet, a cél az lenne, hogy automatikus rendszerszerűséget kapjak.

    stl_: köszi, kipróbálom.
    Mutasd a teljes hozzászólást!
abcd