Keresés

Részletes keresés

Fferi50 Creative Commons License 2013.10.22 0 0 22724

Szia!

 

A dátumos makróval kapcsolatban küldj egy példát priviben, mert ez mindkettőnknél működött.

 

Üdv.

Előzmény: djmorphy (22723)
djmorphy Creative Commons License 2013.10.22 0 0 22723

Köszi Szépen!

 

Valamiért nem akar működni. :(

 

Egyenlőre megoldottam úgy, hogy ctrl+F és a "-"-t cserélje ki "."-ra :D

 

Másik kérdésem miért van az, hogy ez a makrót sikerült egyszer ráerőszakolnom az excelre és azóta sem megy :(

Tökre megörültem, hogy értettem is mit kell csinálni és hogyan és sikerült is. De egyszer elmentette az értéket hogy miről mire ment aztán azóta sem működik. Úgy sem, hogy csináltam egy tök új excelt :(

 

http://stackoverflow.com/questions/10403517/how-to-make-an-external-log-using-excel-vba

 

 

Előzmény: Fferi50 (22696)
tbando Creative Commons License 2013.10.22 0 0 22722

A 22692-ben még csak addig jutottam, hogy az excel nem minden legitim dátumformát ismer fel stringként. Azóta utána néztem, hogy milyen dátumnak látja a magyar excel a stringeket. Az alábbi táblázatban foglaltam össze a lehetséges eseteket. Az összes többi stringnél a dátumfüggvények hibaüzenetet adnak.

 

 

 

Előzmény: tbando (22692)
Fferi50 Creative Commons License 2013.10.21 0 0 22721

Szia!

 

Nem kell törölni a régi neveket! A makro a meglevő névhez hozzárendeli az új tartományt:

Set eleje = Columns("A:A").Find(what:="sakk", LookIn:=xlValues, lookat:=xlWhole)
ActiveWorkbook.Names.Add Name:="sakk", RefersTo:="=" & Range(eleje, eleje.Offset(WorksheetFunction.CountIf(Columns("A:A"), "sakk") - 1, 6)).Address

Akkor is, ha már létezik a sakk nevű tartomány!!!

 

Egy icipici változás van a makróban, az offsetnél van egy -1-es, mivel maga az induló cella offset indexe 0,0. Így ha 5 cellát talál, akkor offset(4,0) pl. az ötödik sor első cellája.

 

A fenti makrórészt a sorbarendezés után betéve minden képleted működik a másik munkalapon.

 

Üdv.

Előzmény: egerkiraly68 (22720)
egerkiraly68 Creative Commons License 2013.10.21 0 0 22720

Sziasztok! Köszönöm Delilának a linket, máris letöltöttem a könyvet. Köszi Fferi és Jimmy a tippeket, szerintem a kettő kombinációja lesz jó.

 

Csinálok makrórgözítéssel egy olyat, hogy a korábbi elnevezéseket törli az Excel a két termékre, majd a Formulas, Define Name alatt beírja a makró a képletet először az egyik termékre, majd átírva a másik termékre a képletet, beírja másodszorra is a képletet az Excel elnevező ablakba.

Mindenképp úgy szeretném megcsinálni az automatizálást, hogy egy gombnyomással törlődjön a régi elnevezés, majd utána legyen sorba rendezve minden, majd jön a Define Name egyszer az első termékre, majd ugyanez a másik termékre.

 

Hogy lehet ide feltölteni Excel fájlt? Nyilván egy sematikus táblát tennék csak fel, nem az igazi munkafájlt.

Törölt nick Creative Commons License 2013.10.21 0 0 22719

Szerintem azért szeretné makróval, mert nem gondolta volna, hogy másképp is lehet. Nem beszélve arról, hogy a makrót minden egyes alkalommal futtatni kell, amikor új adatok erülnek a munkalapra. A képletes megoldás pedig automatikusan követi a változásokat...

Előzmény: Fferi50 (22718)
Fferi50 Creative Commons License 2013.10.21 0 0 22718

Szia!

 

Ha már macróval szeretné én így csinálnám:

 

set eleje = columns("B:B").find(what:="sakk",lookin:=xlvalues,lookat:=xlwhole)

activeworkbook.names.add name:="sakk",refersto:="=" & range(eleje, eleje.offset(worksheetfunction.countif(columns("B:B"),"sakk"),6)).address

 

Az address alapból abszolut címet ad meg.

Így minden munkalapról eléri, mert munkafüzet szintű a név.

 

 

Üdv.

 

 

Előzmény: Törölt nick (22716)
Delila10 Creative Commons License 2013.10.21 0 0 22717
Előzmény: egerkiraly68 (22715)
Törölt nick Creative Commons License 2013.10.21 0 0 22716

A "Sakk" nevű tartományt ezzel a képlettel kellene definiálni:

 

=ELTOLÁS(Munka1!$B$1;HOL.VAN("sakk";Munka1!$B:$B;0)-1;0;DARABTELI(Munka1!$B:$B;"sakk");6)

 

Excel 2010-ben működik.

Valahol 2003 és 2010 között az OFSZET függvényt átnevezték ELTOLÁS-ra. 2003-ban biztosan OFSZET kell az ELTOLÁS helyett, 2007-ben nem tudom, ki kell próbálni.

Előzmény: egerkiraly68 (22715)
egerkiraly68 Creative Commons License 2013.10.21 0 0 22715

Sziasztok! Pár hete láttam itt valahol egy linket, ami Kovalcsik Géza makró könyvére mutat, meg tudja valaki adni a pontos hsz. számot? Vagy ha újra belinkelné az illető ide, nagyon jó lenne. Köszi.

 

Más. Hogyan tudom megcsinálni azt, hogy amikor el akarok nevezni egy tartományt Név definiálással, tehát nem létrehozással, akkor az Excel dinamikusan érzékelje, hogy hol kezdődik és hol végződik az a tartomány?

 

A struktúra a következő: van 6 oszlop, ahol különböző termékfajták vannak. Az egy csoportba tartozókat, melyeknek azonos a neve, ezeket szeretném definiáltatni a makróval. 

Az első oszlop tartalmazza a neveket, összesen 5 fajta termékét.

 

Ebből az 5 termékből csak 2 terméket, a Sakkot és a Labdát kell definiálni, a többi nem érdekes.

 

Ahogy Excelben csinálom: átmásoltam egy külső adatbázisból a sheet tartalmát, tehát megvannak az aktuális adataim.

Utána sorba rendezem a terméknév szerint a táblázatot, majd megnézem, hogy kezdődik a Sakk nevű termékek sora, és ott kijelölöm a kezdő cellától az utolsó őt tartalmazó celláig a tartományt, belevéve a mellette lévő másik 5 oszlopot, benne a költségadatokkal, és ugyanezt megcsinálom a másik termékre is, melynek neve Labda.

 

A Sakk és a Labda tartományelnevezéseket aztán használja egy másik munkalap a vlookup-hoz, mert onnan veszi át a vonatkozó költségadatokat.

 

Ami a makró részét illeti, logikailag úgy gondolnám, hogy sorba kell először rendezi a táblázatot terméknév szerint, majd csinálni egy utasítást, hogy a makró keresse meg a B oszlopban azt a sort, mely először tartalmazza a Sakk nevet, ezt jelölje ki, majd menjen le addig, amíg eltérő nevet nem talál ugyanabban az oszlopban, majd kijelölve a köztes területet és a mellette lévő további öt sort definiálja Sakk néven a tartományt.

Majd ugyanezt csinálja meg a Labdával is, Labda névre elnevezve.

Éppen csak a hogyant nem tudom erre az utasításra. Ezt rögzítéssel nem lehet megcsinálni, csak if then-nel vagy Case ciklussal gondolom, de a szintaktikát nem tudom.

 

A múltkori segítséget még egyszer köszi mindenkinek - Fferi, Jimmy, Tbando , a makró remekül működik azóta is :-)

Delila10 Creative Commons License 2013.10.19 0 0 22714

Magyarul összefűzés. Van ilyen nevű függvény is, de az & jellel praktikusabb.

Előzmény: forzajuve (22713)
forzajuve Creative Commons License 2013.10.19 0 0 22713

Köszi! Bevallom még a szót sem hallottam:)

Előzmény: Sánta Kutya (SK) (22712)
Sánta Kutya (SK) Creative Commons License 2013.10.19 0 0 22712

=A1&B1

(Ez nem összegzés, ez konkatenáció.)

Előzmény: forzajuve (22711)
forzajuve Creative Commons License 2013.10.19 0 0 22711

Sziasztok!

Tud az excel olyat, hogy A1+B1 cellák összegzése, de az egyik mező szöveg? Pl. 1234 és ABCD, a C1-be 1234ABCD.

Ha túl bonyolult, nem fontos. köszi

NeomatiK Creative Commons License 2013.10.18 0 0 22710

Szia!

 

Így jó lett, köszi!

Előzmény: Fferi50 (22708)
szunyókálóoroszlán Creative Commons License 2013.10.18 0 0 22709

Köszönöm, ez bevállt! Mondjuk fogalmam sincs, hogyan kapcsolódott be...

Előzmény: Törölt nick (22631)
Fferi50 Creative Commons License 2013.10.18 0 0 22708

Szia!

 

Ott van az a sortörés benne, csak nem látod!

Cellaformázás -> igazítás -> szöveg elhelyezése sortöréssel több sorba.

 

Üdv.

Előzmény: NeomatiK (22707)
NeomatiK Creative Commons License 2013.10.18 0 0 22707

Sziasztok!

 

Excelben egy cellában van egy email cím a @ karakterrel. Automatikusan hivatkozást csinál belőle. De én nem szeretnék hivatkozást. Jobb egérgomb helyi menüben kiválasztom a hivatkozás eltávolítását, ezután oké lesz. De ha a cellában (F2) Alt+Enter nyomva egy új bekezdést csinálva hozzáírok valamt, akkor megint hivatkozás lesz azzal együtt, amit hozzáírtam. Megint hivatkozás eltávolítását választom. De ekkor az új bekezdés eltűnik, közvetlenül az email cím után kerül aminek külön sorban kéne lennie. És ez az ami nem jó, mert nekem új bekezdésben (vagyis az email cím alatti új sorba) kéne írnom.

Légyszi segítsetek! :)

tbando Creative Commons License 2013.10.18 0 0 22706

Pardon. Nem vettem észre, hogy a makrót kiegészítetted az else ággal.

Előzmény: Fferi50 (22705)
Fferi50 Creative Commons License 2013.10.18 0 0 22705

Szia!

 

Az If Not IsDate(cl.Value) Then sort nem szabad kikommentelni, mert akkor a már dátumként kezelt értékekkel gond lesz (ha pl. nem szövegként, hanem kapásból dátumként jeleníti meg a cellában, akkor nem lesz benne "-"!

Ezt kezeli az else ág, amely beállítja a magyar dátum formátumot és be is írja mégegyszer az értéket, mert így érvényesül csak.

 

A hónapnevek, meg a tartomány az példaként kezelendő természetesen.

 

Üdv.

 

 

Előzmény: tbando (22702)
tbando Creative Commons License 2013.10.18 0 0 22704

Rosszul írtam :((((. Az óra oszlopra még rá kell ereszteni a Gyakoriság fgv.-t vagy Darabtelivel meghatározni a gyakoriságokat.  A diagramot a gyakoriság táblázat adatai adják.

Előzmény: tbando (22703)
tbando Creative Commons License 2013.10.18 0 0 22703

Csinálsz még egy oszlopot, amelyben a belépési időpontokról levágod a perceket. Gondolom az =óra() fgv. erre igen alkalmas. Aztán a diagramot ezzel az oszloppal csinálod.

Előzmény: police7777 (22694)
tbando Creative Commons License 2013.10.18 0 0 22702

Annyit fűznék hozzá, hogy a tömbben megadott  hónap nevek nem tekintendők szentírásnak. Mi csak feltételeztük, hogy a csv fileból ezeket hónapnevek jönnek. Ha nem, akkor az eltérőket át kell írni. Mert enélkül kiakad a makró. (Amire ugyan lehetne írni hibakezelőt, de házi használatra felesleges, leálláskor egyszerűen csak ellenőríni kell a hónapnév-egyezéseket és javítani, amit kell).

 

És még egy megjegyzés: A jelenlegi hónapnevekkel a januári, a februári, az augusztusi, a novemberi, és a decemberi dátumokat változatlanul fogja hagyni, mert azokat az excel felismeri dátumként, és ezért azokkal nem foglalkozik. Emiatt a dátumoszlopban keverten lesznek  angol és magyar formátumú dátumok, amik a velük való számolást nem befolyásolják, hiszen az excel mindkét formát beazonosítja.  A usert azonban zavarhatja. Ez esetben az If Not IsDate(cl.Value) Then sort és a hozzátartozó End if-et kell kikommentelni.

 

Előzmény: Fferi50 (22696)
Delila10 Creative Commons License 2013.10.18 0 0 22701

Köszi!

Előzmény: Törölt nick (22699)
Fferi50 Creative Commons License 2013.10.18 0 0 22700

Szia!

 

Azt hiszem, Te nyertél! És ez ráadásul 0 indexről induló tömböt csinál.

 

Üdv.

Előzmény: Törölt nick (22699)
Törölt nick Creative Commons License 2013.10.18 0 0 22699

ho = Split("Jan-feb-mar-apr-may-june-july-Aug-sept-oct-nov-dec", "-")

 

;-)

Előzmény: Fferi50 (22698)
Fferi50 Creative Commons License 2013.10.18 0 0 22698

Szia!

 

Ez igaz, de én nem akarom ezt a munkalapon látni egy percre sem (hiszen később nem lesz rá szükség már). A munkalapra meg csak fel kellene vinni valahogy (vagy új egyéni listát csinálni rá).

Szóval, úgy gondolom, ez a legegyszerűbb.

 

Üdv.

 

Előzmény: Delila10 (22697)
Delila10 Creative Commons License 2013.10.18 0 0 22697

A tömböt így is fel lehet tölteni, ha a hónapok neveit beviszed a lapon egy tartományba:

 

Sub mm()
    ho = Application.Transpose(Range("A1:A12"))
    MsgBox ho(5)
End Sub

Előzmény: Fferi50 (22696)
Fferi50 Creative Commons License 2013.10.18 0 0 22696

Szia!

 

Tbandóval közösen az alábbi makrot fundáltuk ki számodra:

 

Sub honapos()
Dim ho(12) As String, honap, cl As Range, elso%, masodik%, nap%, ev%, lotus As Boolean
ho(0) = "Jan"
ho(1) = "feb"
ho(2) = "mar"
ho(3) = "apr"
ho(4) = "may"
ho(5) = "june"
ho(6) = "july"
ho(7) = "Aug"
ho(8) = "sept"
ho(9) = "oct"
ho(10) = "nov"
ho(11) = "dec"
lotus = ActiveSheet.TransitionFormEntry = True
If lotus Then ActiveSheet.TransitionFormEntry = False ' ha lotus képletbevitel van, kikapcsoljuk
For Each cl In Range("A1:A40").Cells
If Not IsEmpty(cl) Then
    If Not IsDate(cl.Value) Then
            elso = InStr(cl.Value, "-")
            masodik = InStr(elso + 1, cl.Value, "-")
            nap = Left(cl.Value, elso - 1)
            ev = Mid(cl.Value, masodik + 1)
            honap = Mid(cl.Value, elso + 1, masodik - elso - 1)
            honap = WorksheetFunction.Match(honap, ho, 0)
            cl.Value = DateSerial(ev, honap, nap)
     Else
           cl.NumberFormat = "m/d/yyyy"
           cl.Value = cl.Value
     End If
End If
Next cl
ActiveSheet.TransitionFormEntry = lotus 'és visszaállítjuk az eredeti állapotot
End Sub

 

Remélhetőleg ez már minden zavaró körülményt figyelembe vesz.

 

Üdv.

Előzmény: djmorphy (22635)
Fferi50 Creative Commons License 2013.10.18 0 0 22695

Szia!

 

Ha valaki követte itt a mi kis dátumpolémiánkat,  tudja meg a végeredményt is:

 

A problémát a Lotus képletbeviteli mód bekapcsolt állapota okozta. Kikapcsolása után már rendesen működött.

A ki-be kapcsolást makro-ból is meg lehet csinálni az ActiveSheet.TransitionFormEntry =False illetve True sorokkal.

 

Üdv.

Előzmény: tbando (22692)

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