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

  • Mutt
    senior tag

    Szia! Most reggel össze dobtam gyorsan egy teljes értékű DEMO excel filet, hogy minden 100%-ban tiszta legyen. Mivel nem vagyok túl jártas Excel VBA-ban, ezért formulával oldottam meg, előre is elnézést ha orbitális hülyeséget csináltam. :C

    Szóval a működése annyi, hogy
    A: csomagok száma
    B: csomagokban lévő alkatrészek cikkszámai
    C: darabszám a csomagban
    D: Ahol 0 van az a sor kell nekem mert előtte filterrel kivettem a pipákat az elöl a cikkszám elöl amire nincs szükségem, szóval ami kell nekem az eltűnt filterezéskor a sorokból, és ezt a listát másoltam át az I,J,K oszlopokba.
    F: összefűzi a csomagokat, igazából ha ismétlődik akkor az L betű lesz, első helyre pedig a csomag számát írja ki, így könnyen eltűntethetőek ha dupplikálva vannak a csomagszámok.
    G: összesített darabszám csomagok alapján. Mostanra jöttem rá, hogy a darabszámra is szükségem van.
    I,J,K-ról pedig már beszéltem.

    Szóval jelenleg bedobom az összes csomagszámot,cikkszámmal és darabszámmal az A,B,C oszlopokba. Erre nyomok egy filtert, kiszedem a pipákat onnan amelyik cikkszámot megszeretném kapni a végén. És ezt a listát átmásolom az I,J,K-ba. Tehát ott lesz az a lista ami NEM tartalmazza azokat a cikkszámokat amire szükségem van a végén.

    D oszlopban kiválasztom filterrel, hogy csak azokat a sorokat mutassa ahol 0 van, vagyis nincs egyezés az I,J,K oszlopban lévőkkel.

    Ezután filterezem az F oszlopot, és eltűntetem az összes L betűvel ellátott sort.

    Ekkor már megvan oldva hogy csak a bizonyos cikkszámok ellátott csomagokat dobja ki nekem, és szépen tudom szűrni darabszám alapján is a G oszlopban.

    Eléggé megszenvedtem vele, főleg a logikai lépésekkel, de soknak érzem ezeket a filterezéseket, főleg ha van mondjuk 40ezer sorom.

    Lehetséges megoldani ezt az egészet úgy, hogy van egy Sheet1, Sheet2 lapom az excel fileban. A sheet2-re beírom a cikkszámokat mondjuk A oszlopba, a sheet1-en pedig lenne két gomb. Az egyikkel importálom a bizonyos 3 oszlopot a másik excel fileból. A másik gombbal pedig megcsinálja ezt a sok filterezést amit manuálisan kell most csinálnom.

    Amire szükségem van az az, hogy egy csomag szám csak egyszer szerepeljen. A kiválasztott cikkszámok alapján jelenjenek meg a csomagok, de ha valami mást is tartalmaz akkor az ne legyen ott.
    Illetve az összesített darabszám legyen a csomag számok mellett, hogy darabszám alapján is lehessen szűrni.

    Vagy inkább hagyjam így az egészet és ne foglalkozzak vele többet? :C

    És itt elérhetitek a DEMO filet:

    [link]

    Szia,

    Ha Excel 2010 vagy újabbad van akkor van Power Query, amivel megoldható a dolog.
    (Excel 2010-hez külön kell telepíteni az MS oldaláról.)

    Lépések:
    1. Az első munkalapon a rendelés listát táblázattá alakítottam (előnye, hogy a mérete automatikusan változik amikor bemásolod a csomag adatokat). Én ezt a táblát "orders"-nek neveztem el, de nincs jelentősége.

    2. A második munkalapon az A1 celléba beírtam a vesszővel felsorolt alkatrész listá és a cellának adtam egy nevet ("parts").

    3. Maradj ezen a cellán és Data fülön "From table/range" (magyarul Adatok->Táblázatból/tartományból) opcióval megfog nyilni a Power Query szerkesztő.

    4. Jobb oldalt az Applied Steps (Alkalamazott lépések) alatt lesznek felesleges lépések, töröld ki őket, csak a Source maradjon.

    5. Transform -> Split column -> By delimiter-t (Átalakítás->Oszlop felosztása->Elválasztó alapján) indítsd el

    6.Állítsd be, hogy vessző alapján szedje szét az adatokat és hogy sorokba tegye őket.

    7. Home -> Close & Load -> Close & Load to .. (Kezdőlap->Bezárás&betöltés->..adott helyre) parancsot használd és a megjelenő ablakbak az Only create connection-t (Csak kapcsolat létrehozása).

    8. Menj át az első lapra, ahol a csomag adatok vannak és állj rá az adatsorra, majd Data -> From table/range-t (Adatok->Táblázatból/tartományból) indítsd.

    9. Home -> Merge queries -> Merge queries (Kezdőlap->Lekérdezések egyesítése) parancsot indítsd. Ez fel fog dobni egy ablakot, ahol látni fogod a csomagok listáját, alatt lesz egy legördülő listából válaszd ki a korábbi lépésekben létrehozott listát. A két listában a közös elem az alkatrészek, ezeket az oszlopokat jelöld ki. Majd alul a kapcsolat típusánál Inner Join (Belső) legyen. Ezt kellene látnod.

    OK-t nyomva megkapod az első lapon lévő listából azokoat a sorokat, amelyek a második lapon szerepelnek.Már csak ki kell venni a duplikációkat.

    10. Jelöld ki az "order number" oszlopot és Home -> Group by-t (Kezdőlap->Csoportosítási szempont) indítsd el. Majd állítsd be így.

    A Count - All Rows páros csak akkor kell, ha érdekel a következő lépés amiben kiíratjuk hogy az adott csomagból téged mely alkatrészek érdekelnek.

    11. Add column -> Custom column-t (Oszlop hozzáadása->Egyéni oszlop) indítsd el és töltsd ki így:

    A képlet =[Count][SKU] azt mondja meg a Power Querynek, hogy a Count nevezetű táblából (ezt az előző lépéssel hoztuk létre az SKU fejlécű oszlop adatati írja be az új oszlopba).

    12. Az újonnan létrehozott oszlopban jobb felső sarkában lévő gombra kattints és használd az Extract Values-t (Értékek kinyerése), majd válaszd ki hogy mi legyen az elválasztó elem a felsorolások között.

    13. Töröld a Count oszlopot.

    14. Home -> Close & Load -> Close & Load to .. jön megint, de most válaszd a Table opciót és add meg hogy hova töltödjön a végeredmény.

    A sok lépés azért volt, mert ha módosítod bármelyik adatsort, akkor elég csak a Data -> Refresh all (Adatok->Összes frissítése) gombra kattintanod és előáll az új listád makrómentesen.

    üdv

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