Telefonszámunk: 1-472-0679

Hozzászólások

3 bejegyzés megtekintése - 1-3 / 3
  • Szerző
    Bejegyzés
  • DebSanyi
    Felhasználó

      Szia Imre

      köszönöm szépen az ötletet.

      nem lehet nevek alapján állítani, mert az adatszerkezete változik, attól függően, hogy melyik oldalt nyitom meg. egy csonkolt listát adtam meg, ennél több oszlopból áll az adathalmaz, és lehetnek benne ismeretlen minták is. ezekre felkészülve keresek, kerestem dinamikus megoldást.

      tehát az aapl/finance adatszerkezete más lehet mint a ko/finance mert nem konszolidált beszámolókat adnak meg a cégek, üres sorokkal ahol nincs érték, hanem egyszerűen nem adják meg az üres sort kompletten.

      időközben találtam egy megoldást.

      létrehozok egy másolatot az adott lekérdezésről, (előtte törölve a típus módosítva sort) letisztítom 2 sorra, majd feltételes oszlopot adok hozzá és listává alakítom

      a DataType lekérdezés kódja:

      let

      Data0 = Forrás{0}[Data],
      #”Lefokozott fejlécek” = Table.DemoteHeaders(Data0),
      #”Tábla transzponálva” = Table.Transpose(#”Lefokozott fejlécek”),
      #”ezres elválasztó cseréje” = Table.ReplaceValue(#”Tábla transzponálva”, „,”, „”, Replacer.ReplaceText, Table.ColumnNames(#”Tábla transzponálva”)),
      #”Utolsó sorok eltávolítva” = Table.RemoveLastN(#”ezres elválasztó cseréje”, 1),
      #”Érték felülírva1″ = Table.ReplaceValue(#”Utolsó sorok eltávolítva”, „.”, „,”, Replacer.ReplaceText, Table.ColumnNames(#”Utolsó sorok eltávolítva”)),
      #”Előléptetett fejlécek” = Table.PromoteHeaders(#”Érték felülírva1″, [PromoteAllScalars=true]),
      Egyéni1 = Table.FirstN(#”Előléptetett fejlécek”,1),
      #”Lefokozott fejlécek2” = Table.DemoteHeaders(Egyéni1),
      Egyéni2 = Table.Transpose(#”Lefokozott fejlécek2”),
      #”Feltételes oszlop hozzáadva” = Table.AddColumn(Egyéni2, „Egyéni”, each if Text.Contains([Column2], „%”) then Percentage.Type else Int64.Type),
      #”Oszlopok eltávolítva” = Table.RemoveColumns(#”Feltételes oszlop hozzáadva”,{„Column2″}),
      Egyéni3 = Table.Transpose( #”Oszlopok eltávolítva”),
      Egyéni4 = Table.ToColumns(Egyéni3)
      in
      Egyéni4

      majd a donor lekérdezésben, egyszerűen, erre a lekérdezésre hivatkozok:


      #”Előléptetett fejlécek” = Table.PromoteHeaders(#”Érték felülírva1″, [PromoteAllScalars=true]),
      #”Típus módosítva” = Table.TransformColumnTypes(#”Előléptetett fejlécek”,income_10k_DataType)
      in
      #”Típus módosítva”
      így működik jelenleg, de tesztelem még, hogy hiba nélkül abszolválja-e a feladatot vagy sem

      DebSanyi
      Felhasználó

        Köszi Imre,

        valóban az, de ez még közel sem horrorisztikus 😀 az ellenőrző képlet, amit ehhez a munkához írtam, szerintem sokkal durvább 😀
        Nekem személy szerint nagyon bejöttek az új 365 fv-ek, nagyon nagy mértékben lerövidítik a megoldási időket. személyes kedvenc a let, amit szinten mindenhez is használok, és a lambda, valamint az azt kísérő, támogató fv-ek

        köszi még egyszer hogy időt szántatok rá.

        DebSanyi
        Felhasználó

          Sziasztok, pontosítanám Laci kérdését, kérését, és egyúttal meg is osztanám a megoldásom….

          Egy olyan képletet kerestem (időközben meg is találtam) ami xl 2010ben működik, és két szöveges cella/avagy tömb különbségét veszi
          Az hogy a keresett érték hol található irreleváns, a lényeg hogy a különbséget adja vissza.
          A1: alma körte banán
          A2: alma banán
          az eredemény cella értéke körte kell hogy legyen

          nem volt egyszerű, de végül csak összeguberáltam a komponenseket hozzá
          amit tudtam, hogy ezt csak tömbbel lehet megoldani, ezért tömbbé kellett alakítsam a szavakat:

          =KIMETSZ(KÖZÉP(
          HELYETTE(A$1;” „;SOKSZOR(” „;HOSSZ(A$1)));
          (c2-1)*HOSSZ(A$1)+1;
          HOSSZ(A$1)))

          a képlet egy segédoszlopot feltételez (c2től), ami mutatja a szavak számát, de ez kiváltható képlettel is

          a c2-1 értéke 0, ezt a sor fv-el is el lehet érni, úgy hogy az aktuális sor számából kivonjuk az első sor rögzített számát.

          ebbe a képletbe szúrtam be, az index fv-el történő hivatkozást, amit az excel-bazis oldaláról tanultam (ezúttal is köszönöm Imre :D)
          https://excel-bazis.hu/tutorial/az-index-fuggveny-titkai-profiknak

          A1:INDEX(A:A;4) ugyanaz mint az a1:a4

          a szám helyére beillesztettem azt a képletet, ami megszámolja a szóközök számát az A1 cellában és hozzáadtam egyet, mert a szavak száma eggyel több mint a szóközök száma. Mivel nem csak az A1-be lehet keresni a szöveget, ezért úgy gondoltam, hogy célszerűbb erre a hozzáadásra is a vizsgált szöveget tartalmazó sor számával hivatkozni

          HOSSZ(KIMETSZ(A$1))-HOSSZ(HELYETTE(A$1;” „;””))+1

          +1 helyett: Sor(A1)

          és mindezeket beillesztettem az alábbi index hol.van fv-be, ami visszaadja az első tömb azon első értékét, ami nem szerepel a második tömbben

          =HAHIBA(INDEX(A2#;HOL.VAN(0;HA(SZÁM(HOL.VAN(A2#;B2#;0));1;0);0));””)

          és a képlet végül így néz ki (egy kicsit széttördeltem a jobb olvashatóságért…):
          =HAHIBA(
          INDEX(

          KIMETSZ(KÖZÉP(
          HELYETTE(A2;” „;SOKSZOR(” „;HOSSZ(A2)));
          (SOR(A2:INDEX(A:A;HOSSZ(KIMETSZ(A2))-HOSSZ(HELYETTE(A2;” „;””))+1+1))-SOR(A2))*HOSSZ(A2)+1;
          HOSSZ(A2)));

          HOL.VAN(0;

          HA(SZÁM(
          HOL.VAN(
          KIMETSZ(KÖZÉP(
          HELYETTE(A2;” „;SOKSZOR(” „;HOSSZ(A2)));
          (SOR(A2:INDEX(A:A;HOSSZ(KIMETSZ(A2))-HOSSZ(HELYETTE(A2;” „;””))+1+1))-SOR(A2))*HOSSZ(A2)+1;
          HOSSZ(A2)));

          KIMETSZ(KÖZÉP(
          HELYETTE(B2;” „;SOKSZOR(” „;HOSSZ(B2)));
          (SOR(B2:INDEX(B:B;HOSSZ(KIMETSZ(B2))-HOSSZ(HELYETTE(B2;” „;””))+1+1))-SOR(B2))*HOSSZ(B2)+1;
          HOSSZ(B2)));0));
          1;0);
          0));
          „”)

          és h mennyivel egyszerűbb a helyzet MS365 esetén? Sokkal 😀

          tömb:
          =SZÖVEGFELOSZTÁS(A1;;” „)

          különbség fv:
          =XKERES(IGAZ;NINCS(HOL.VAN(A2#;B2#;0));A2#;””)

          és végül a behelyettesített eredmény fv:
          =XKERES(IGAZ;NINCS(HOL.VAN(
          SZÖVEGFELOSZTÁS(A2;;” „);
          SZÖVEGFELOSZTÁS(B2;;” „);
          0));
          SZÖVEGFELOSZTÁS(A2;;” „);
          „”)

          és természetesen ott van még a filter fv, hogy az összes szót listázza ki. Bár nem néztem, de ugyanaz mint Imre képlete, annyi különbséggel, hogy a HIBÁS fv helyett én a NINCS fv-t alkalmaztam:
          =SZŰRŐ(
          SZÖVEGFELOSZTÁS(A2;;” „);
          NINCS(HOL.VAN(
          SZÖVEGFELOSZTÁS(A2;;” „);
          SZÖVEGFELOSZTÁS(B2;;” „);
          0)))

          köszi az együttgondolkodást, használjátok ti is, ha arra kerül a sor 😀

          Attachments:
          You must be logged in to view attached files.
        3 bejegyzés megtekintése - 1-3 / 3