Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
Előre is elnézést kérek az off témáért, nem találtam megfelelő fórumot és a beírások tömegét olvasva úgy látom, itt az értelem uralkodik, ezért kérdezem:
Létezik "elektronikus titkárnő", vagy olyan program, amivel azonnal lehet mindenféle témához hozzáírni az aznapi fejleményeket, és ha kell, témánként látni, hogy csak abban a témában mikor mi történt?
Most abba a helyzetbe kerültünk, hogy elvesztettük a titkárnőt, akinek egyetlen jegyzetfüzete volt, abba írt mindent, de utána mégis mindig minden ügyről volt nyomtatott kimutatása, mikor mi történt.
Hasonló program kellene, az összejövetelen valaki beírja, hogy adott témákban mi történt, és később a beírásokat már a témákban lehet látni időrendi sorrendben.
Nem tudom, hogy egyértelmű volt-e, hogy csak azok a sorok duplikációját kellene teljesen törölni, amelyik soroknál minden cella egyezést mutat egy másik sorral.
utolsoSor = Cells(Rows.Count, "A").End(xlUp).Row Dim RangeToCheck As Range Set RangeToCheck = Range("A1:AL" & LastRow) Columns("AM:AM").formula = "=A1&B1&C1&D1&E1&F1&G1&H1&I1&J1&K1&L1&M1&N1&O1&P1&Q1&R1&S1&T1&U1&V1&W1&X1&Y1&Z1&AA1&AB1&AC1&AD1&AE1&AF1&AG1&AH1&AI1&AJ1&AK1&AL1" RangeToCheck.RemoveDuplicates Columns:=Array(39), Header:=xlYes ' Az 39. oszlop tartalmazza az egyesített értékeket Columns("AM:AM").ClearContents
Jól sejtettem, hogy a dátummal van a gond és az általad átírt kóddal tökéletesen működik (az első változatot próbáltam ki, másik kettőt még meg kell értenem (tanulom a VBA-t)). Köszönöm mindenkinek a gyors segítséget, kb 1hónapja kűzdöttem vele.
Lenne még egy kérdésem esetleg hátha erre is tudtok megoldást: Ismétlődések eltávolítása nagy adathalmazból.
Volt rá egy kódom amit kiokoskodtam, de nagyon lassú volt. Ugyan ennél az adathalmaznál a Menű -> Ismétlések eltávolítása pillanat alatt megoldotta. Ezt, hogyan lehetne lekódolni, hogy ilyen gyors legyen?
Ugyanezt a metódust használtam egy másik részen (igazából azt kopiztam le), de ott nem dátumot, hanem szöveget szűrtem és ott is A1-van és ott működik. ezért gondolom, hogy A1-el nincs gond.
Range("A1").Select If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End If ActiveSheet.Range("A1").AutoFilter Field:=4, Criteria1:="*SZÖVEG*" Dim adatTartomany As Range Dim masolniTartomany As Range Set adatTartomany = ActiveSheet.AutoFilter.Range Set masolniTartomany = adatTartomany.SpecialCells(xlCellTypeVisible)
Az alap probléma az, hogy a dátumot az Excel makróban az amerikai "stíl" (MM/DD/YYYYY") szerint kell megadni, bármilyen formátumban és nyelven van is az adott táblázatban. Ez sajnos némi trükközést - függvény többszörözést - igényel. Ráadásul a szűrőben szöveg formátumban használandó. Az általad mutatott feltétel így hozható létre makró által "ehetően":
DE létezik ennél egyszerűbb lehetőség is időszakok szűrésére. Ilyenkor a Criteria2 paramétert kell használni az alábbi formátumban:
Also used as single criteria on date fields filtering by date, month or year. Followed by an Array detailing the filtering Array(Level, Date). Where Level is 0-2 (year,month,date) and Date is one valid Date inside the filtering period.
A szűrendő tartományt természetesen nem árt megadni egzaktul, de az Excel képes "kitalálni", amennyiben pl. az A1 cella része a tartománynak, akkor az egész tartományt fogja szűrni.
Van egy fejléces excel táblázat. 5.oszlop dátumokat tartalmaz. Feladat, szűrés makróval 2022-es dátumokra és szűrt adat sorok másolása. Az oszlop tartalmaz 2022es dátumokat.
Makró kód: Application.Workbooks(2).Worksheets(5).Activate Range("A1").Select If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False End If Dim startDate As Date Dim endDate As Date startDate = DateSerial(2022, 1, 1) endDate = DateSerial(2023, 1, 1) ActiveSheet.Range("A1").AutoFilter Field:=5, Criteria1:=">=" & startDate, Operator:=xlAnd, Criteria2:="<" & endDate
Ez egy másik próbálkozás, de ezzel is ua.: 'ActiveSheet.Range("A1").AutoFilter Field:=5, Criteria1:=">=2022.01.01", Operator:=xlAnd, Criteria2:="<2023.01.01"
Hiba jelenség leírása:
Szűrés a fejlécen bekapcsol, szűrés ikon az oszlopon ott van, szűrés ikonon megnézve a szűrést, tartalmazza a szűrés feltételt, de nincsenek szűrt adatok. Szűrt oszlop ikon jó helyen van. Szűrésbe belépve, rányomok egy OK-ot a szűrésre, megjelennek a szűrt adatok.Ugyanez a kódrészlet, ugyanebben a makróban egy másik helyen szöveges szűréssel működik. Dátum oszlop egyedi formátumban van, de átállítva dátum formátumra is fenn áll a hiba. Csatoltam egy excelt amiben a kód lefutása utáni állapot van.
Ha még olvasod a fórumot, akkor elkezdtem írni hozzá egy makrót. Kicsit másképpen fog működni, mint ahogyan eredetileg szeretted volna, de szerintem így is jó lesz.
Gépen rájöttem erre a trükkre ma, de most, hogy írtad telefonon is működik. Én az egyszerűség jegyében Chromeot használok telefonon és gépen is.
A Word körlevél készítőjét üzemorvosi beutaló készítésére használtam. Illetve én töltöttem ki a megfelelt papírokat is. Be volt víve egy adatbázisba a dolgozók összes lényeges adata és volt egy logikai mező, hogy ki az aktív dolgozó. Akkor egy kattintással lehetett nyomtatni a beutalókat és a megfelelt papírokat is. Az üzemorvos olyan lusta volt, hogy a megfelelt papírokat se szerette kitölteni... Mondjuk 3 alkalmazott volt velem együtt, plusz a főnök.
Átlag Jánosnak persze nincs telepítve a Notepad++, így ezt az utat kell bejárnia. Ha a beillesztett számok nem csak mellékes adatok, hanem számolni is kell velük, akkor pedig természetes, hogy ez a módszer kell, mert nem mindegy milyen tizedesjelölő van a szövegben.
Ami nekünk fontos az a leírás alapján az attachment paraméter. A szimpla macskakörmök közé kerülnek a csatolmányok, amiket vessző választ el kötelező jelleggel. Emiatt volt a hiba, mert a mappa nevében lévő vesszőt csatolmány elválasztónak vette. Ha jól emlékszem, akkor hibát írt ki felugró ablakban a Thunderbird és a body részt be se vette. Végül a body rész sincs már használva, mert a message részben TXT fájlból van beolvasva maga az üzenet. Ott meg lehetett formázni HTML kódokkal azt. Van valahol egy sor, hogy if message<>"" then body="" End if. Ez nem okoz problémát neki. A wait függvényre azért van szükség, mert kb. 3 secundom alatt töltődik be a Thunderbird új e-mail ablakja és utána kell, hogy "lenyomódjon" az enter a levél elküldéséhez.
A Wordre rátérve. Szerintem az első számítógépünkön is márt volt '98 vége felé. Jóformán sohasem használtam a nélkül, hogy ne látnám a rejtett karaktereket. Egyszerűen frusztrál, ha ki van kapcsolva. Amúgy az NP++-t azért szeretem, mert jóval gyorsabban megnyílik, mind a Word és rögtön eldobja az összes felesleges formázását a szövegnek. Így nem kell még pluszban mindent kijelölné, az egeret lökdösni, hanem rögtön mehet a CTRL+A&C és már a vágólapon van a szöveg eltüntetett formázással. Ha a volt munkahelyemen valakinek magyaráztam számítógép kezelési alapokat, akkor törekedtem arra, hogy minél kevesebb lépésből és egyszerűbben legyen megoldható egy probléma. Már az feladta a leckét és 8 év alatt amíg ott voltam, nem tudtam megtanítani, hogy ALT+Enter az új sor cellán belül, nem pedig 999999 space. Szóval reménytelen volt kicsit is összetettebb dolgokat megtanítani. Ezért próbáltam meg mindent makrókkal megoldani, amik elvégzi a felhasználó helyett a feladatokat, mert akkor csak a nyers adatokat kell bevinni és mindent elvégez a makró. De sajnos ez se jött össze minden esetben, pedig megpróbáltam a lehető leszájbarágósabban leírni minden lépést. De a számlázó programból való adatkinyerésnek is változott az oszlop sorrendje hébe-hóba és hiába írtam le, hogy mi legyen a sorrend és mi az ami egyáltalán nem kell, nem sikerült elmagyarázni. A vevők listájánál egy-két fontos oszlop volt nálunk: nyilván a neve, adószáma, vevőcsoportja és ha hivatkozni akartam rá Excelben, akkor a vevőkódja. (Mivel néha változtattak nevet, így egyszerűbb volt egy kód-név adatlapot csinálni, mint utólag módosítani mindenhol a régi nevet az újra). De akkor a fejlesztők egyszer csak gondoltak egyet és megjelenítettek számunkra teljesen felesleges oszlopokat is: levelezési cím, fax, weboldal, cégjegyzékszám, bankszámlaszám, hitelkeret, stb. Nagy részük ki sincs töltve, mert felesleges infók lennének vagy a kutyát se érdekli. De a fejlesztők gondolnak egyet és kirakják a listába plusz oszlopként, ahol összekuszálják a meglévő oszlopaink sorrendjét. De van rá lehetőség, hogy legalább elrejtsük.