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

  • Mutt

    senior tag

    Sziasztok,

    A másik fórumon felmerült egy probléma, amelynél egy "kódolt" szövegsorból kell számtartományokat előállítani.

    A példa szerint a "30000000+34000000+341-34100099+348-341003+3401" karaktersort az alábbiak szerint kell értelmezni:
    1. A számok 8 értékes jegy hosszúságú tartományokat jelölnek. Ahol mind a 8 karakter megvan ott a tartomány alsó és felső értéke azonos, a többi esetben pedig az tartomány kezdőértékét a megfelelő számú nullák hozzáadásával lehet elérni. A felső értéket pedig a megfelelő számú kilencesekekkel.
    Így lesz a 341-ből 34100000 - 34199999 tartomány.
    2. Ha a szám előtt minusz van, akkor az abból készült tartományt ki kell majd a végeredményből zárni. A többi esetben kell a tartomány.

    A feladat, hogy az így megadott kódsorból állítsuk elő a használható számtartományokat.

    Ebben a feladatban lehet használni pár képességét a Power Query-nek:

    1. A kódolt számsort fel lehet darabolni a +/- jelek alapján, hogy külön lehessen őket kezelni.

    2. A nem 8 hosszúságú számokkból lehet alsó és felsőértéket előállítani a Text.PadEnd függvénnyel.

    3. Lehet előállítani egy számsort adott két szám között a list operátorral (kapcsos zárójel).

    4. Lekérdezések segítségével ki lehet zárni a nem kívánt számokat a végerdményből.

    5. Lehet csoportosítgatni, hogy megkapjuk hogy mely számtartományokról van szó.

    A nem tökéletes változat letölthető innen

    Az eredmény nem hibás, csak lehetne jobban is összevonni a tartományokat illetve brute forceként minden számot létrehoz majd szűrőget, így lassú tud lenni nagy számok esetén.

    üdv

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

Hirdetés