Hirdetés
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- GoodSpeed: A RAM-válság és annak lehetséges hatásai
- eBay-es kütyük kis pénzért
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- gban: Ingyen kellene, de tegnapra
- GoodSpeed: Márkaváltás sok-sok év után
- D@reeo: Pi-hole és a Telekom Sagemcom F@st 5670 DNS beállítása
- Mr Dini: Mindent a StreamSharkról!
-
LOGOUT
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
karlkani
aktív tag
válasz
morgusz
#52033
üzenetére
Az ÓRA(MOST()) NEM a pontos időt adja meg, hanem 1900.01.óra* 0:00-t.
* 8 óra elmúlt, az érték 1900.01.08 0:00 (általános formátumban 8).Számoláskor ebből vonja ki, ami az A oszlopban szerepel. Ha a kapott érték 1-nél nagyobb, akkor megjelenik Az adatok nem frissek figyelmeztetés, ellenkező esetben a cella üres.
-
Fferi50
Topikgazda
válasz
morgusz
#48436
üzenetére
Szia!
Íme:Dim ws As WorksheetFor Each ws In ActiveWorkbook.WorksheetsIf Left(ws.Name, 4) = "alap" ThenWith ws.Sort.SortFields.Clear.SortFields.Add2 Key:=Range("A1:AP1") _, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal.SetRange Range("A1:AP150").Header = xlYes.MatchCase = False.Orientation = xlLeftToRight.SortMethod = xlPinYin.ApplyEnd WithEnd IfNext
Az alap - pal kezdődő nevű munkalapokon végrehajtja műveleteket. Nem szükséges minden munkalapot Select-tel kiválasztani - (azt csak a makrórögzítő csinálja).
Üdv. -
Fferi50
Topikgazda
-
ny.janos
tag
válasz
morgusz
#45992
üzenetére
Előfordulhat (főként külső adatforrásból exportált adatok esetén), hogy olyan nem nyomtatható karaktereket tartalmaznak egyes cellák, amely karakterek nem láthatóak és úgy tűnik, mintha a cella üres lenne, holott valójában nem az. Segítség lehet a KIMETSZ, TISZTÍT és a HELYETTE függvény is.
Kerülő megoldás lehet, hogy szűröd a tartományodat az üresnek tűnő cellákra, majd manuálisan törlöd azokat, hogy valóban üressé váljanak (ez viszont sok adat esetén körülményes lehet).
-
Lulu új
lelkes újonc
válasz
morgusz
#45586
üzenetére
Köszönöm a segítséget!
Az alapbetegségekkel kapcsolatos véleményedet vitatom! Egyes országok a statisztikájukban nem számolják azokat akiknek valamilyen betegségük volt. Pl. ha valakinek COPD betegsége van, ami gyógyíthatatlan, de karban tartható és a Covid 19 hatására a tüdeje összeomik, akkor nem Covid fertőzöttként szerepel a statisztikájukban. Nálunk, meg mindenki aki Covid 19 fertőzött és meghal, az szerepel a statisztikában!
Evés közben jön meg az étvágy: szeretném azt is megállapítani, hogy melyek a leggyakoribb együttesen előforduló betegségek az elhunytaknál.
-
zzz012
csendes tag
válasz
morgusz
#45590
üzenetére
Jön egy megkeresés A-tól mondjuk 2-án 5-én 8-án akkor őt meg kellene jelölni mert teljesül a feltétel, hogy hét napon belül 3-szor volt, többet A-val nem kell foglalkozni az adott évben, de ha mondjuk 2-án 5-én 15-én jön akkor tovább figyelem, mert több mint hét nap telt el az első és az utolsó megkeresés közt, és ha pl 15-én 20-án 21-én van dátum akkor az jó,mert teljesül a hét napon belüli feltétel. Majd jön B, C D...., stb. Nem tudom elég érthetően írtam- e le.
-
Fferi50
Topikgazda
válasz
morgusz
#45579
üzenetére
Szia!
Egy segédoszlop első cellájába írd be az alábbi tömbképletet:=MAX(($A$1:$A$7=$A1)*SOR($A$1:$A$7))=SOR($A1)
$A$7 -ben a 7 helyére írd az utolsó sorod számát.
A tömbképletet Ctrl+Shift + Enterrel kell lezárni és az Excel kapcsos zárójelbe teszi.
A képlet lehúzható a segédoszlopban.
Eredménye IGAZ lesz, ahol az adott cikkszám utolsó előfordulása van, mindenütt máshol pedig HAMIS értéket ad.
Ezután a segédoszlop alapján már tudsz szűrni az IGAZ értékekre.
Üdv. -
Mutt
senior tag
válasz
morgusz
#38199
üzenetére
Szia,
Delila megoldása mellett itt egy nem-makrós megoldás, ami Excel 2010 felett műkődik.
Power Query kell hozzá, amit Excel 2010 esetén külön kell installálni.Lépés:
1. Adatok -> Adatok beolvasása -> Fájlból -> Mappából
2. Kiválasztod a mappát ahol a fájlok vannak, OK-t nyomsz és a Szerkesztés gombra kattintasz.
3. Extension oszlopot kijelölöd, majd az Átalakítás fülön Formátum -> Nagybetűs opciót kiválasztod. Ezzel minden kiterjesztést nagybetűre konvertálunk, így ha véletlenül vki .XLS -ként menti el a fájlt, akkor is be fogjuk olvasni.
4. Extension oszlop jobb sarkában található szűrővel kiválasztjuk a .XLS fájlokat.
5. Name oszlop jobb sarkában a szűrővel kiválasztjuk a xyz kezdetű fájlokat (itt is lehet előtte egy nagybetűsítést csinálni).
6. Kijelőlöd az első két oszlopot (Content és Name), majd jobb klikk a fejlécen (ahol látod hogy Content) és További oszlopok eltávolítását választod (ezzel a többi oszlop eltünik, nincs rájuk szükség)
7. A Content oszlop jobb sarkában van két lefelé mutató nyíl (Fájlok kibontása), kattints rá. Ez elkezdi beolvasni a fájlokat, és felhoz egy mint ablakot, ahol válaszd ki a Munka1 lapot és nyomj okét. Dolgozni fog egy kicsit, de az összes fájlod Munka1 lapját be fogja tölteni.
8. Jobb oldalt lesz egy csomó új lépés ennek eredményeként. A gond, hogy a korábban megtartott fájl nevet vhogy vissza kell kapni. A Többi oszlop eltávolítva 1-es lépésnél található fogaskerékre kattitnts és pipáld be a Name-t, hogy újra lássuk a fájlneveket. Ezek után kattints az utolsólépésre, mert innen folytatjuk.
9. Oszlop hozzáadása menüben válaszd az Indexoszlopot.
10. Most régi adósságot törlesszük, adjunk egy értelmes nevet a lekérdezésnek.
Jobb oldalt a Tulajdonságok alatt a Név-ben van vmi (nekem temp, ami a könyvtár neve ahol voltak a fájlok). Adjunk vmi jobb nevet pl. Frissadatok
11. Egy újabb furcsa lépés fog jönni, az eddigi művet lemásoljuk. Bal oldalon a Lekérdezések részben jobb klikk és Megkettőzést válaszd.
12. Lett egy másolatunk, ami aktív is lett. Esetleg nevezzük át (pl. Utolsosorok), mert itt fogjuk megtudni, hogy az egyes fájlokban hol van az utolsó sor.
13. Kezdőlapon Csoportosítási szempontra kattints. Csoportosítani fogunk a fájlnév alapján, Name oszlop, és amit keresünk az Index oszlop maximum értéke. Egy OK után meg is kapjuk a kért dolgokat. Itt végeztünk.
14. Kattintsuk bal oldalt az Adatsorok lekérdezésre, mert most ezzel megyünk tovább.
15. Kezdőlap fülön Összevonás -> Lekérdezések egyesítése jön. Ezzel az a célünk, hogy a korábban már megkapott utolsósorokat ebben a lekérdezésben meg tudjuk találni.
Három részből áll az ablak: fent látjuk az aktuális lekérdezés képét, alatta lévő listában válasszuk ki az Utolsosorok lekérdezést (amit a 13-as lépésben véglegesítettünk). Meg kell mondanunk az Excelnek, hogy mely oszlopok azonossak a két lekérdezésben. A fenti táblában jelöld ki a Name és Index oszlopot (Ctrl-t kell majd nyomnod kattintáskor). Az alsó táblában is jelöld ki a Name és Index oszlopot. Fontos, hogy a fejlécekben látni fogsz egy kis sorszámot 1 és 2 (ez a kijelőlés sorrendje), ezeknek a sorszámoknak egyeznie kell mindkét táblában a helyes műkődésért.
A harmadik dolog amit itt meg kell adnod az pedig a csatlakozás módja, ami nekünk most Belső (csak egyező sorok).
16. Nyomj egy OK-t
17. Végeredményt 3 felesleges oszlop fogja csúfitani, a fájlneve, az utolsósor száma és egy új oszlop amiben Table szöveg van. Ezeket töröljük. Jobb klikk az oszlop nevén és Eltávolítás.
18. Kezdőlap -> Bezárás és betöltés -> .. adott helyre opcióval meg tudod mondani az Excelnek, hogy hova kéred az eredményt.
Sok lépés ez, de segítség azoknak akiknek makróírás még távoli.
Legközelebb pedig ha futtatnod kell, akkor az Adatok fülön Az összes frissítése opciót használod, vagy kattintasz a Lekérdezések és kapcsolatok gombra és a megjelenő panelen a Frissadatok lekérdezésen jobb klikk és Frissítés.
üdv
-
Delila_1
veterán
válasz
morgusz
#38184
üzenetére
A Const utvonal-nál a saját útvonaladat add meg, ügyelve, hogy az utolsó karakter \ legyen.
Sub Masolas()
Dim usorCel, usorFN, FN, Cel As Worksheet
Const utvonal = "D:\Adatok\Morgusz\" 'Itt add meg a saját útvonaladat
Set Cel = ActiveWorkbook.Sheets("Munka1")
Application.ScreenUpdating = False
ChDir utvonal 'Direktor váltás
FN = Dir(utvonal & "*.xls", vbNormal)
Do
If Left(FN, 3) = "xyz" Then
usorCel = Cel.Range("A" & Rows.Count).End(xlUp).Row + 1 'céllap első üres sora
'Fájlok behívása
Workbooks.Open Filename:=utvonal & FN
usorFN = Sheets("Munka1").Range("A" & Rows.Count).End(xlUp).Row 'alsó sor a megnyitottban
Range("A" & usorFN & ":J" & usorFN).Copy Cel.Range("A" & usorCel)
ActiveWindow.Close False 'megnyitott fájl bezárása módosítás nélkül
End If
FN = Dir()
Loop Until FN = ""
Application.ScreenUpdating = True
MsgBox "Kész van az adatok bemásolása", vbInformation, "Értesítés"
End Sub -
Fferi50
Topikgazda
válasz
morgusz
#32801
üzenetére
Szia!
Szerintem a
Set Email = Outlookprogi.CreateItem(0)
On Error Resume Next
For xx = 2 To 100
If IsEmpty(Cells(xx, "I")) Then Exit For
If Cells(xx, "S") = "küldhető" And Cells(xx, "M") = 1 Then
programrészt kellene átírni így:On Error Resume Next
For xx = 2 To 100
If IsEmpty(Cells(xx, "I")) Then Exit For
If Cells(xx, "S") = "küldhető" And Cells(xx, "M") = 1 Then
Set Email = Outlookprogi.CreateItem(0) 'abban nem vagyok biztos, hogy mindig (0) paraméter kell, lehetséges, hogy azt is kell növelni, ezt próbáld ki lsz.Az elküldése szerintem a .send lehet (de ez csak tipp, nézd meg lsz.)
Üdv.
-
Fferi50
Topikgazda
válasz
morgusz
#32787
üzenetére
Szia!
Lehetne pl. így
Dim Outlookprogi As Object
Dim Email As Object
Dim xx As Integer
Set Outlookprogi = CreateObject("Outlook.Application")
Set Email = Outlookprogi.CreateItem(0)
On Error Resume Next
For xx = 2 To 100
If IsEmpty(Cells(xx, "I")) Then Exit For
If Cells(xx, "S") = "küldhető" And Cells(xx, "M") = 1 Then
With Email
.to = "F"
.CC = "P"
.Subject = Cells(xx, "W").Value 'ActiveCell.Offset(0, 11).Value L+11 oszlop
.Body = Cells(xx, "A").Value ' ActiveCell.Offset(0, -11).Value L-11 oszlop
.Display
End With
End If
Next
Set Email = Nothing
Set Outlookprogi = NothingAz On Error Resume Next sorral nem tudom, mit szerettél volna elérni, így önmagában nem sokat ér, csak annyit, hogy hiba esetén nem áll meg a program és nem tudod meg, hogy hiba volt - pl. nem tudta létrehozni az email objektumot, de rendületlenül készítgeti a semmit...
Üdv.
-
poffsoft
veterán
válasz
morgusz
#28171
üzenetére
upsz, kis hiba maradt,
az a selection.clear nem kell a vége felé!Sub proba()
Dim lista() As String
Dim i As Long
Dim usor As Long ' last used row in source sheet
Dim lrow As Long ' last row in this sheet
Dim scol As Long ' first column of actual formulas source
Dim ecol As Long ' last column of actual formulas source
lista = Split("Munka1,Munka2,Munka3,Munka4,Munka5,Munka6,Munka7,Munka8,Munka9", ",")
Worksheets(lista(0)).Activate
For i = 1 To UBound(lista)
usor = Worksheets(lista(i)).UsedRange.Rows.Count
scol = ((i - 1) * 4) + 1
ecol = ((i - 1) * 4) + 3
lrow = Range(Cells(3, scol), Cells(Rows.Count, ecol)).End(xlUp).Row
If lrow < 3 Then lrow = 3
ActiveSheet.Range(Cells(3, scol), Cells(lrow, ecol)).Clear
Range(Cells(2, scol), Cells(2, ecol)).Copy Destination:=Range(Cells(3, scol), Cells(usor, ecol))
Next i
End Sub -
poffsoft
veterán
válasz
morgusz
#28171
üzenetére
Sub proba()
Dim lista() As String
Dim i As Long
Dim usor As Long ' last used row in source sheet
Dim lrow As Long 'last row in this sheet
Dim scol As Long ' first column of actual formulas source
Dim ecol As Long ' last column of actual formulas source
lista = Split("Munka1,Munka2,Munka3,Munka4,Munka5,Munka6,Munka7,Munka8,Munka9", ",")
Worksheets(lista(0)).Activate
For i = 1 To UBound(lista)
usor = Worksheets(lista(i)).UsedRange.Rows.Count
scol = ((i - 1) * 4) + 1
ecol = ((i - 1) * 4) + 3
lrow = Range(Cells(3, scol), Cells(Rows.Count, ecol)).End(xlUp).Row
If lrow < 3 Then lrow = 3
ActiveSheet.Range(Cells(3, scol), Cells(lrow, ecol)).Clear
Selection.Clear
Range(Cells(2, scol), Cells(2, ecol)).Copy Destination:=Range(Cells(3, scol), Cells(usor, ecol))
Next i
End Suba lista=split( után az idézőjelek között vesszővel elválasztva kellenek a munkalapnevek.
Munka1 az összesítő lap neve, a többi pedig a források, ahogyan mondtad, Munka2-től Munka9-ig. -
-
Delila_1
veterán
válasz
morgusz
#27323
üzenetére
Ez könnyen megoldható.
A lapfülön jobb klikk, Kód megjelenítése. Ezzel bejutottál a VB szerkesztőbe. A jobb oldalon lévő nagy üres mezőbe másold be a makrót:Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Target.Offset(, 1) = Date
Application.EnableEvents = True
End SubBezárod az ablakot a szokásos X-szel, és már töltheted is tovább a táblázatodat.
-
Mutt
senior tag
válasz
morgusz
#19331
üzenetére
Hello,
1. Szeretnék megoldást találni arra, hogy a makró által átalakított, új néven mentendő file nevében benne legyen az aktuális dátum.
vegsonev = filenev & "_" & Format(Date, "yyyy_mm_dd")
Ahogy látod Date függvény kell neked, esetleg formázhatod is a kedvedre.2. Nem értem, hogy a makró rögzítésekor CSV-ként mentett XLS fájl, miért más formátumú a makró későbbi futtatásakor mint a rögzítéskor.
A kód nélkül nem tudunk erre választ adni.3. Hogy lehet megoldani makróval, azonos oszlopkból és naponta változó számú sorból álló, adatokat tartalmazó cellatartomány másolását
Range("A1").CurrentRegion.Copy Destination:=cel
Adj meg egy cellát (pl. A1) a tartományban (üres sorok és oszlopok közötti összefüggő nem-üres cellák halmaza) és CurrentRegion-nal tudod kezelni egyben.Ha van üres sor/oszlop, akkor más technika kell (pl. Range("A"&Rows.Count).End(xlUp).Row)
üdv.
Új hozzászólás Aktív témák
- Sony Xperia 1 V - kizárólag igényeseknek
- Megérkezett Magyarországra a Poco F8 Pro is
- Projektor topic
- Házi barkács, gányolás, tákolás, megdöbbentő gépek!
- OLED TV topic
- Vicces képek
- Milyen TV-t vegyek?
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- A fociról könnyedén, egy baráti társaságban
- További aktív témák...
- HIBÁTLAN iPhone 12 mini 128GB Black -1 ÉV GARANCIA - Kártyafüggetlen, MS3303
- iKing.Hu-Nothing Phone 3a Pro Grey Glyph stílus, 3 optikai zoom 12/256 GB -3 hónap garancia
- 32 GB-os DDR5 laptop RAM garanciával
- BESZÁMÍTÁS! 4TB Western Digital Purple SATA HDD meghajtó garanciával hibátlan működéssel
- GYÖNYÖRŰ iPhone 13 Pro 128GB Sierra Blue -1 ÉV GARANCIA -Kártyafüggetlen, MS3965, 100% Akkumulátor
Állásajánlatok
Cég: ATW Internet Kft.
Város: Budapest
Cég: Laptopműhely Bt.
Város: Budapest




Fferi50
