Keresés

Részletes keresés

Jozsef Creative Commons License 2012.06.19 0 0 18044

Függeltlenül a problémától

0.  Elég jól tudok VBA-ban (is) programozni, tehát nem azért mondom :)

1.  Szinte soha nem írok makrót, ha valamit meg lehet sima Excel fügvényekkel is  oldani. (és főleg nem javaslok mások használatára ilyen megoldás :) ) 

Fő indokok, amik hosszú évek alatt ülepedtek:

  • Kompatibiltás, Excel verziók két-három évente jönnek-mennek, ugyanaz a VBA-kód akár Visual Basic, akár komponensek, akár biztonsági változások miatt nem marad működőképes
  • Mellékhatások lekezelése, a példában pl. megváltozik a valamelyik munkalap neve. Ilyen esetben VBA csak akkor működik rendesen, ha programozó erre odafigyelt, pl. a függvény kódjában szerepel az Application.Volatile sor. A hibakezeléstől kezdve elég sok ilyen példát lehet mondani.
  • Sajnos, a Visual Basic nyelv elég "pongyola", előnye, hogy  gyorsan lehet benne programot írni csekély programozási tudással, de a rendesen működő kód előállítása nagy figyelmet igényel 

3. VBA programozásnak ott van értelme

  • Nincs rá beépített Excel módszer, vagy függvény
  • Automatizálni kell (példádban pl. egyszerre végigmenni az összes fájlodon, megcsinálni rá az összesítő munkalapot, és így visszamenteni)

4. A kész megoldást lemásolni, akár ha VBA kódot, akár munkalapot másolod le, ugyanannyi idő. De rajtad múlik, hogy a különböző megoldásokból mit hasznosítasz a későbbiekben. A topik "törzslakói" nem azért írunk be ilyen-olyan megoldásokat, hogy kötelezően azt kelljen használni, és csak az az egyetlen jó megoldás, hanem a különböző problémákból, megoldásokból lehessen tanulni.

 

5. Ha azonban csak a Ctrl+C- Ctrl+V esett le, akkor legtisztább az lenne, ha Jimmy-nek küldesz egy sört, vagy más általa kedvelt italt. Amerikai freelancer portálokon ilyen mélységű feladatokért 10-20 dollárt szoktak fizetni.

Előzmény: ND7000 (18040)
Törölt nick Creative Commons License 2012.06.19 0 0 18043

indirekt függvény

Előzmény: ZolKa (18039)
Törölt nick Creative Commons License 2012.06.19 0 0 18042

"ctrl+c , ctrl v"  

Igen, így könnyű ;)

Előzmény: ND7000 (18040)
Törölt nick Creative Commons License 2012.06.19 0 0 18041

Tetszik. 2010-ben megnéztem, működik. Jók ezek a makrólap-függvények sok mindenre....

Hasonló lenne a =CELLA("cím";Munka1!A1) is, amiből szövegkonverziós fgvekkel ki lehet szedni a munkalapnevet.

 

Előzmény: Jozsef (18038)
ND7000 Creative Commons License 2012.06.19 0 0 18040

:) nagyon köszönöm , hogy foglalkoztál a kérésemmel !

 

A makróval ugyenez:

 

1 kattintás VB

ctrl+c  ,  ctrl v  (összesen 11 sor)

1 kattintás : run

 

5 másodperc volt az egész...

te melyiket használnád ?

Mégegyszer köszönet Jimmynek !

Előzmény: Jozsef (18038)
ZolKa Creative Commons License 2012.06.19 0 0 18039

Sziasztok!

 

Egy üzletnek van egy excel táblája amiben az összes árú rögzítve különböző adatival (besz ár, eladási ár, utolsó vásárlás, stb). Ebből a táblázatból szeretnék csinálni egy leltározásra alkalmas táblázatot úgy hogy rögzítek egy makrót ami átvariálja az oszlopokat, kitöröl néhány a leltár szempontából felesleges munkalapot stb, majd mentem mondjuk letrá_datum.xls néven. Viszont ahhoz hogy a leltárt ki tudja számolni hivatkozni kellene az előző leltárkor készített ugyanilyen leltár táblázatára (ami egy külön file -ba lenne).

 

A kérdésem az, hogy meg lehet e valahogy oldani hogy egy mezőbe beírom az előző leltár file nevét és azt a megfelelő cellákban lévő hivatkozások file részébe behelyetesítené. Pl: =[leltár_elozo.xls]Aru!$B$17 hivatkozásnál magától behelyetesítse a "leltár_elozo.xls" file nevet.

 

Remélem valamennyire érthetően le tudtam írni.

 

Előre is kösznöm szépen a segítséget!

 

 

Jozsef Creative Commons License 2012.06.19 0 0 18038

Pedig biza működik makró nélkül is : (Excel 2007-ben csináltam, de a régebbi verziókban is mennie kell, az Excel 2010-re kérem, tesztelje le valaki)

A munkalapnevek összeszedéséhez az alapötlet innen van:

http://www.excelfox.com/forum/f13/list-all-worksheet-names-using-formula-119/

1. Egy új munkafüzetben hozz létre egy Összesítő nevű munkalapot.

2. Hozd be a névkezelőt pl. Ctrl+F3 és add hozza egy új nevet pl. Munkalapnevek, a hatókörhöz az Összesítő munkalapot, a hivatkozáshoz a következő képletet:

=CSERE(MUNKAFÜZETET.VESZ(1);1;SZÖVEG.TALÁL("]";MUNKAFÜZETET.VESZ(1));"")

 

Ez a Munkalapnevek fogja tartalmazni az munkafüzet összes munkalapjának a nevét.

3. Az Összesítő munkalapon létrehozod a képleteket a következő cellákban:

A2:=HA(SOROK($A$2:A2)<=DARAB2(Munkalapnevek);INDEX(Munkalapnevek;SOROK($A$2:A2)*KEREK.FEL(VÉL();0));"")

B3:=DARAB2(INDIREKT(ÖSSZEFŰZ(A3;"!$A:$A")))

A2-t lehúzod annyi sorra lefelé, amennyi munkalapod van, ugyanígy a B3 cellát is.

A 2. sor ami Összesítő munkalapnevet tartalmazza, akár el is rejtheted, ha akarod.

Egy érdekes trükk a VÉL() függvény,  a VÉL() minden változásra frissül, így ha átneveznek egy munkalapot, akkor azonnal az új név jelenik meg a cellában.

4. Mentse le a munkafüzetet mondjuk ÖsszesítőAlap.xls névvel.

 

Használata:

 

1. Megnyitod ÖsszesítőAlap.xls és az a fájl, ahová összesítést akarsz

2. Az ÖsszesítőAlap.xls jobb egérgomb az Összesítő munkalapfülre Másolás vagy áthelyezés menüpont

A melyik munkafüzetbe kiválasztod a célt, az első munkalap elé legyen beillesztve és Legyen másolat legyen bepipálva

3. Az új helyen az aktulális munkalapnevek jelennek meg a darabszámokkal, esetleg a képletet itt még utána kell húzni fel, vagy lefelé. De ez már csak pár másodperc.:)

 

Előzmény: ND7000 (18021)
ND7000 Creative Commons License 2012.06.19 0 0 18037

Jimmy: Te vagy a király ! :)

Tökéletesen működik !

Köszönöm szépen !

Előzmény: Törölt nick (18029)
ND7000 Creative Commons License 2012.06.19 0 0 18036

A pivot még ezt is tudja :) húzd bele a cikkszám listát az érték területre a kimutatásban.

Ha esetleg nem darabszámot számolna (hanem pl összeget ) akkor gördítsd le a kis nyilat a listád mellett és a mezőbeállításokban válaszd ki a darab függvényt, és máris mutatja a darabszámot :)

Előzmény: djmorphy (18035)
djmorphy Creative Commons License 2012.06.19 0 0 18035

Ezer hála! Ez nagyon egyszerű és nagyon jó is! :)
Még egy olyan kérdésem lenne, hogy esetleg ezeket meg lehetne számolni a cikkszámokat hogy naponta mennyi készült el belőle mert már most pár ezer sorbol áll amit nem szívesen számolok meg egyessével! :D

Előzmény: ND7000 (18020)
yxc432 Creative Commons License 2012.06.19 0 0 18034

Amint írtam, én "3d-ben" gondolkodom, míg az excel 2d-s.;)

Ilyen feladatra a lookup-os megoldást ismerem, de nem tudom, itt alkalmazható-e.

 

A példa bemenő adatai részletesen:

 

1.bolt

hé 8-20

ke-cs 9-16

pé 10-16

szo 10-13

vas 8-12

 

2.bolt

hé,sze,p 8-16

ke,cs 13-20

szo 8-16

vas 10-14

 

módosító adatok:

munkanap áthelyezések jogszabály szerinti napokon, adott évre. (többnyire szo-hé csere)

tulajdonos döntése, mely napokra rendel el zárva tartást (leltár, vagy más ok, stb.)

 

A végeredmény egy lista, hogy adott hónapra melyik boltnál melyik napon mi a nyitvatartási idő.

Előzmény: Törölt nick (18031)
yxc432 Creative Commons License 2012.06.19 0 0 18033

Yess:-))

Előzmény: tbando (18027)
_Nyuszi Creative Commons License 2012.06.19 0 0 18032

Dettó. Sztem elfelejtődött a beszúrás.

:(

Előzmény: Törölt nick (18030)
Törölt nick Creative Commons License 2012.06.19 0 0 18031

Rákerestem az Excel topikba írt hozzászólásaidban az "sql" karaktersorozatra, és csak abban az egyben fordul elő, amire most épp válaszolok. Lehet, hogy leírtad valahol, hogy sql-ben dolgozol, de nem ebben a topikban, és nem ehhez a feladathoz kapcsolódva. Igaz, egy 15 hónappal ezelőtti hozzászólásodban írtad, hogy "adatbáziskezelésben gondolkoztam", de ezt valamiért nem jutott eszembe összekapcsolni a jelenlegi kérdéseddel.

 

A kérdéseddel pedig az a gondom, hogy pongyolán fogalmazol. Te érted, hogy mit akarsz, és azt gondolod, hogy mindenki érti, pedig nem. Ott van pl. a 17980-as, az indító felvetés. Nincs benne leírva, hogy mit is szeretnél pontosan. Csak annyi, hogy "kezelni a problémát", amit az ünnepnapok okoznak. Azt én kapásból félreértettem, mert azt hittem, hogy pusztán munkanapokat és munkaszüneti napokat kell megkülönböztetni, és erre van egy jól bevált módszerem. Akkor te kijavítottál, hogy nem ez kell, de továbbra sem írtad le, hogy mi.

 

Most azt gondolom, hogy talán egy adott napra vonatkozó nyitvatartási időt akarod visszakapni, figyelembe véve az esetleges munkanap-áthelyezéseket és ünnepnapokat. Ez mondjuk logikus lenne, sőt, talán ez az egyetlen logikus kimenete az általad csepegtetett információnak, de szerintem célravezetőbb lenne a kérdéseket explicit módon leírni, és nem ránk bízni, hogy rakjuk össze, ahogy tudjuk.

 

Aztán leírtad, hogy egy lista kell, amelyben ki vannak gyűjtve a problémás napok, és mellettük (gondolom) az aznapra érvényes nyitvatartási rend.

Mi kell ennél több? Ez gyakorlatilag megoldás, már csak implementálni kell. Vagy mi hiányzik még?

 

 

Előzmény: yxc432 (18022)
Törölt nick Creative Commons License 2012.06.19 0 0 18030

Sokat segítene, ha látnám a képet, de nem megy. Látja valaki?

Előzmény: trakz (18011)
Törölt nick Creative Commons License 2012.06.19 0 0 18029

Sub izé()
    Dim ws As Worksheet, newWs As Worksheet, rng As Range
    Set newWs = ThisWorkbook.Worksheets.Add
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> newWs.Name Then
            Set rng = newWs.Range("A" & Rows.Count).End(xlUp).Offset(1)
            rng = ws.Name
            rng.Offset(, 1) = Application.WorksheetFunction.CountA(ws.Range("A:A")) - 1
        End If
    Next
End Sub

Előzmény: ND7000 (18015)
Törölt nick Creative Commons License 2012.06.19 0 0 18028

If Range("A1").NumberFormat = "#,##0.00 $" Then
    MsgBox "Forint"
ElseIf Range("A1").NumberFormat = "General" Then
    MsgBox "általános"
End If

Előzmény: lacid90 (18013)
tbando Creative Commons License 2012.06.19 0 0 18027

Nem értem miért probléma a 40 lap. Kijelölöd mind a 40-et, és az egyikbe beirod a képletet. És akkor ott lesz mindegyiken. Majd kreálsz egy összesítö képletet és bemásolod valamelyik cellába. És kész.

 

 

Előzmény: ND7000 (18026)
ND7000 Creative Commons License 2012.06.19 0 0 18026

Tényleg nem akarom már többször leírni...

van egy file amiben van a 40 lap, te azt tennéd, hogy egyesével becopyzgatod a számolást, utána,  egyesével belinkelgetnéd a 40 féle nevű lapról a cellahivatkozást ?

vagy lenne egy makród, amit a file ba bemásolsz és kész ?

3 ilyen filet kapok egy héten, KÉRLEK HIDD EL, hogy így sokkal egyszerűbb lenne.

Köszönöm az eddigi hozzászólásaidat. (kérlek ne ird le mégegyszer, hogy egyesével kéne ezt megoldani, köszi) :)

 

 

Előzmény: yxc432 (18025)
yxc432 Creative Commons License 2012.06.19 0 0 18025

Szerintem nem lassú, és makróval nem is próbálkoznék.

Amúgy most is kénytelen vagy egyesével megnyitni, ha tudni akarod, hány sor van benük, nem? Messze gyorsabb összesítéssel megcsinálni, de ezek szerint valami más is van a háttérben.

Előzmény: ND7000 (18024)
ND7000 Creative Commons License 2012.06.19 0 0 18024

Tehát akkor nem oldható meg makróval az alábbi probléma ?!

ezt a módszert én is tudom, de ez nem jó megoldás, mert nagyon lassú ezért szeretném ha valaki válaszolna a kérdésre, hogy meg lehet e oldani makróval ?

Köszi

Előzmény: yxc432 (18023)
yxc432 Creative Commons License 2012.06.18 0 0 18023

Nem igazán értem a problémádat. Igen, megnyitod a 40 lapot egyesével, legalsó sor első oszlopába bemásolod a függvényt, és irsz egy összesítőt, ami minden egyes lap első oszlop utolsó sor eredményét összegzi.

Előzmény: ND7000 (18021)
yxc432 Creative Commons License 2012.06.18 0 0 18022

Nem értem a válaszod.

Én leirtam, hogy csak sql-ben dolgoztam, abban lenne megoldásom, de kapcsoló tábla kell hozzá.

Érdekel, hogy excelben van-e erre megoldás.

 

A másik példánál is azt válaszoltátok, hogy lényegében az excel erre nem jó, belső adatbázisa se jó, külső adatbázisra kell csatlakozni, és abból tudtok elemezni pivot táblával. Hát, ha már megvan a külső adatbázis, akkor abban sokkal egyszerűbb megirni a lekérdezéseket, mint excelhez biztositani az állandó hozzáférést és pivot táblákkal szórakozni.

Előzmény: Törölt nick (18002)
ND7000 Creative Commons License 2012.06.18 0 0 18021

Köszönöm Jozsef, de ez nem jó sajnos.

A következő a szitu: Kapok egy közel 40 Sheet et tartalmazó excel filet, amiben változó mennyiségű adat van.

Az általad említett módszer (ami alapban jó) de lássuk be nagyon macerás egy makróhoz képest. MInden egyes lapra, bemásolgatni a kódot, és még összesítő sincs :)

Szóval továbbra is köszönöm annak aki megoldást talál !

Előzmény: Jozsef (18016)
ND7000 Creative Commons License 2012.06.18 0 0 18020

Szia

Gyakorlatilag erre találták ki a pivot (kimutatás) táblát.

Persze lehetne mondjuk SZUMHATÖBB függvénnyel számoltatni, de mindig deffiniálni kellene a megszámolandó értékeket, a pivot meg megcsinálja a fejléc nevéből.

Előzmény: djmorphy (18019)
djmorphy Creative Commons License 2012.06.18 0 0 18019

Sziasztok!

 

Megint kellene egy kis segítség! :)

 

Hogyan tudnám megoldani egy egyszerű statisztika készítést.

Van három oszlopom

 

Dátum         Idő            Cikkszám

06/18/12    8:32:07    0123456789
Dátum         Idő           Cikkszám

06/18/12    8:35:07     0123456789
Dátum         Idő            Cikkszám

06/18/12    8:38:07      9876543210

 

Olyan függvényre lenne szükségem ami megmondja, hogy 18-án a 012345678 termékből legyártottak 2db-ot a 9876543210-ból pedig egy darabot. Erre létezik előre definiált függvény vagy valahogy nekem kellene egyet írni?

tbando Creative Commons License 2012.06.18 0 0 18018

Hát így tényleg probléma. De egy egyszerű  makró megoldás lehet.  Ahhoz viszont nem értek.

Előzmény: Amorius (18014)
tbando Creative Commons License 2012.06.18 0 0 18017

Valszeg kéne. Meg engem is :))).

Előzmény: Törölt nick (18008)
Jozsef Creative Commons License 2012.06.18 0 0 18016

Ehhez nem kell makró, pl. a =DARAB2(A:A) függvény pont ezt adja

Előzmény: ND7000 (18015)
ND7000 Creative Commons License 2012.06.18 0 0 18015

Sziasztok

Lehet olyan makrót írni ami tetszőleges számú és nevű lapokon (egy file-on belül)  megszámolja, hogy mondjuk minden lapon az A oszlopban hány cellában van valami (szám vagy betű mindegy, csak nem üres cella) beírva. Úgy is mondhatnám, hogy hány sor van az adott lapon :).

A sok lapos (kb 40 db) file adott, mindenféle lapnévvel ebben kellene megszámolni a sorokat, és folyamatosan bővül.

Sajna nem értek a makróhoz, nagyon szépen megköszönöm, ha valaki tud segíteni !!!

Esetelg olyat is lehet, hogy egy üres lapra, egymás alá beírja a sheet nevét és mellé, hogy hány sort tartalmaz az adott lap, és egészből levonni 1 et, mert a fejléc nem játszik :) ?

 

Pl:

   A            B

Sheet1     25

Sheet2     32

 

stb...

 

Hálás köszönetem előre is !!

Ha kedveled azért, ha nem azért nyomj egy lájkot a Fórumért!