Keresés

Új hozzászólás Aktív témák

  • Mutt

    senior tag

    válasz csabbymtc #51516 üzenetére

    Szia,

    Én másra gondoltam a kérdéseddel kapcsolatban mint a többiek.
    Az én megoldásom pedig MS365-ben így néz ki.

    A LET függvénnyel megússzuk a segédoszlopokat. A függvénnyel egy változóhoz értékeket lehet rendelni, majd a végén ezen változókkal műveletet csinálni. pl. =LET(a;1;a*2) az "a" nevű változónak 1-es értéket ad, majd eredményként a változó dupláját adja vissza.

    Ezekután a teljes képlet:
    =LET(betu;ÖSSZESÍT(15;6;SZÖVEG.KERES({1\2\3\4\5\6\7\8\9};A1);1)-1;
    oszlop;BAL(A1;betu);
    elvalaszto;SZÖVEG.KERES("-";A1);
    start;KÖZÉP(A1;betu+1;elvalaszto-betu-1);
    stop;KÖZÉP(A1;elvalaszto+1;255);
    SZÖVEGÖSSZEFŰZÉS(",";IGAZ;oszlop&SORSZÁMLISTA(stop-start+1;;start)))

    A képletben kikeressük az oszlopazonosítót, ami betü(k)ből áll (példádban az X). Majd kikeressük a kötőjel előtti és utáni számokat (start és stop). A sorszámlista előállítja a két szám közötti számokat, amik elétesszük az oszlopazonosítót és az egészet összefűzzük.

    Ha pedig nem a cellahivatkozásokat, hanem a cellák tartalmát akarod egy cellában látni, akkor a képlet ez (a mintámon az A4-B4 cellákon látod ezt):
    =LET(betu;ÖSSZESÍT(15;6;SZÖVEG.KERES({1\2\3\4\5\6\7\8\9};A4);1)-1;
    oszlop;BAL(A4;betu);
    elvalaszto;SZÖVEG.KERES("-";A4);
    start;KÖZÉP(A4;betu+1;elvalaszto-betu-1);
    stop;KÖZÉP(A4;elvalaszto+1;255);
    SZÖVEGÖSSZEFŰZÉS(",";HAMIS;INDEX(INDIREKT(oszlop&":"&oszlop;IGAZ);SORSZÁMLISTA(stop-start+1;;start))))

    Másik megoldás a Power Query használata, ami Excel 2013-tól van.
    Az M-code ehhez:
    let
    Forrás = Excel.CurrentWorkbook(){[Name="Táblázat1"]}[Content],
    #"Típus módosítva" = Table.TransformColumnTypes(Forrás,{{"Lista", type text}}),
    #"Oszlop megkettőzve" = Table.DuplicateColumn(#"Típus módosítva", "Lista", "Lista - másolat"),
    #"Oszlop felosztása karakterátalakítás alapján" = Table.SplitColumn(#"Oszlop megkettőzve", "Lista - másolat", Splitter.SplitTextByCharacterTransition((c) => not List.Contains({"0".."9"}, c), {"0".."9"}), {"Lista.1", "Lista.2", "Lista.3"}),
    #"Érték felülírva" = Table.ReplaceValue(#"Oszlop felosztása karakterátalakítás alapján","-","",Replacer.ReplaceText,{"Lista.1", "Lista.2", "Lista.3"}),
    #"Egyéni oszlop hozzáadva" = Table.AddColumn(#"Érték felülírva", "Egyéni", each {Number.From([Lista.2])..Number.From([Lista.3])}),
    #"Kibontott Egyéni" = Table.ExpandListColumn(#"Egyéni oszlop hozzáadva", "Egyéni"),
    #"Egyesített oszlop beszúrva" = Table.AddColumn(#"Kibontott Egyéni", "Egyesítve", each Text.Combine({[Lista.1], Text.From([Egyéni], "hu-HU")}, ""), type text),
    #"Sorok csoportosítva" = Table.Group(#"Egyesített oszlop beszúrva", {"Lista"}, {{"Elemszám", each _, type table [Lista.1=nullable text, Lista.2=nullable text, Lista.3=nullable text, Egyéni=number, Egyesítve=text]}}),
    #"Egyéni oszlop hozzáadva1" = Table.AddColumn(#"Sorok csoportosítva", "Egyéni", each [Elemszám][Egyesítve]),
    #"Kinyert értékek" = Table.TransformColumns(#"Egyéni oszlop hozzáadva1", {"Egyéni", each Text.Combine(List.Transform(_, Text.From), ","), type text}),
    #"Oszlopok eltávolítva" = Table.RemoveColumns(#"Kinyert értékek",{"Elemszám"})
    in
    #"Oszlopok eltávolítva"

    üdv

  • Fferi50

    Topikgazda

    válasz csabbymtc #51516 üzenetére

    Szia!
    Esetleg megmutatnád konkrétabban: Melyik cella tartalma X11-15 és hova kerüljön az X11,...X15? A cellák tartalma kell vagy a cellák címe? Egy cellába kerüljön a "kibontás" vagy külön-külön cellákba?
    Üdv.

Új hozzászólás Aktív témák

Hirdetés