- gban: Ingyen kellene, de tegnapra
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Azonos árketegóriájú (105-110.000 Ft-os) relatív olcsó telefonok kamerái
- Brogyi: CTEK akkumulátor töltő és másolatai
- Magga: PLEX: multimédia az egész lakásban
- Lalikiraly: SÜNI energiaital.
- sziku69: Szólánc.
- Rap, Hip-hop 90'
-
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
-
ny.janos
tag
válasz
jerry311 #48728 üzenetére
Egy gondolatébresztő a korábban felvetett Power Query megoldáshoz: Ha az összes csv fájlt beolvasod mintából és a fájloknak a nevében szerepel a dátum, akkor a fájlnév részének kinyerésével és dátummá alakításával lesz egy adathalmazod, melyben szerepel a Name, ID, Status adatok mellett a dátum is. Az ID és a dátum oszlop összevonásával készíthetsz egy új oszlopot. Ezután a státuszt meg tudod keresni a VLOOKUP-al a PQ által előállított adathalmazban, ha az ID cella és fejlécként szereplő dátum cella összevont adatára keresel.
Ha az egyes csv fájlok nem tartalmaznak több 10e sort így a több, mint egymillió soros korlátot várhatóan nem léped túl, akkor nem is foglalkoznék havonta külön munkalappal, hanem az évet és a hónapot kiemelném egy-egy cellába a munkalap tetején, és annak felhasználásával képezném a fejlécben a dátumot. Így ha változtatod az évet és a hónapot, akkor mindig az aktuális értéket fogja dátumnak megfelelően kiolvasni a VLOOKUP a PQ által beolvasott csv fájlok összességéből. -
válasz
jerry311 #48728 üzenetére
Az itt található adatokat vettem alapul. Létrehoztam belőle 3 db CSV fájlt, az első maradt érintetlen, a 2.-ban lecseréltem az összes DOWN státuszt UP-ra, a 3.-ban meg lecseréltem az összes UP-t FIRE-UP-ra, nyilván azért, hogy több státusz is legyen.
A kód futtatásának ez lett az eredménye:
A Module1-be másolandó kód (és fontos, hogy modul-ba kerüljön!)
'Fire/SOUL/CD - 2022
Public Sub Fire_CSV_Process()
'mappa, amelyben a CSV fájlok találhatóak
Const MYCSVFOLDER = "C:\CSVs\"
'CSV elválasztó karakter megadása
Const MYDELIMITER = ","
'Ha igaz, akkor nem dolgozza fel a fejlécet
Const CSVFILEUSEHEADER = True
'A munkalap ezen cellájától illeszti be az összesítést
Const TABLETOPLEFTCORNER = "A1"
Dim MyWorksheetName As String
Dim MyCurrCSVFname As String
Dim MyFileNumber As Long
Dim MyCurrStr As String
Dim CSVLineNdx As Long
Dim MyStrs() As String
Dim MyRowNdx As Long
Dim NameFieldStartRange, IDFieldStartRange As Range
Dim FindNameFieldRange, FindIDFieldRange As Range
Dim FindNameRange, FindIDRange As Range
'ellenőrizzük, hogy a megadott mappa létezik-e, ha nem, akkor nem fut le a kód
If Dir(MYCSVFOLDER, vbDirectory) = "" Then
MsgBox "A megadott mappa [" & MYCSVFOLDER & "] nem létezik." & vbCrLf & "Adj meg egy létező mappát..."
Exit Sub
End If
'létrehozunk egy új munkalapot (itt másodpercre pontos idő lesz a nevében,
'ezért nem ellenőrzöm, hogy létezik-e már adott néven munkalap)
MyWorksheetName = "Ősszesítés_" & Format(Now, "yymmdd_hhmmss")
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = MyWorksheetName
Worksheets(MyWorksheetName).Activate
Application.ScreenUpdating = False
MyRowNdx = 0
Set NameFieldStartRange = Range(TABLETOPLEFTCORNER)
Set IDFieldStartRange = Range(TABLETOPLEFTCORNER).Offset(0, 1)
'megadott mappában végigszaladunk az összes CSV fájlon
MyCurrCSVFname = Dir(MYCSVFOLDER & "*.CSV")
Do While Len(MyCurrCSVFname) > 0
MyFileNumber = FreeFile
Open MYCSVFOLDER & MyCurrCSVFname For Input As MyFileNumber
CSVLineNdx = 0
'CSV fájlt egyenként, soronként feldolgozzuk
While Not EOF(MyFileNumber)
Line Input #MyFileNumber, MyCurrStr
If CSVFILEUSEHEADER = True And CSVLineNdx = 0 Then
Line Input #MyFileNumber, MyCurrStr
CSVLineNdx = 1
End If
'ha üres sor van benne, azt kihagyjuk
If MyCurrStr <> "" Then
'legeslső adat esetén nincs mit összehasonlítani
If MyRowNdx = 0 Then
MyStrs = Split(MyCurrStr, MYDELIMITER)
Range(TABLETOPLEFTCORNER).Offset(0 + MyRowNdx, 0) = MyStrs(0)
Range(TABLETOPLEFTCORNER).Offset(0 + MyRowNdx, 1) = MyStrs(1)
Range(TABLETOPLEFTCORNER).Offset(0 + MyRowNdx, 2) = MyStrs(2)
Else
'meghatározzuk a keresési tartományokat
MyStrs = Split(MyCurrStr, MYDELIMITER)
Set FindNameFieldRange = Range(NameFieldStartRange.Address & ":" & Chr(NameFieldStartRange.Column + &H40) & MyRowNdx)
Set FindIDFieldRange = Range(IDFieldStartRange.Address & ":" & Chr(IDFieldStartRange.Column + &H40) & MyRowNdx)
'keresünk egyező adatokat
Set FindNameRange = FindNameFieldRange.Find(what:=MyStrs(0), LookIn:=xlValues, lookat:=xlWhole)
Set FindIDRange = FindIDFieldRange.Find(what:=MyStrs(1), LookIn:=xlValues, lookat:=xlWhole)
'ha van egyezés, akkor a találati tartomány sorában megkeressük az első üres cellát
'és beleírjuk a megfelelő adatot
If Not FindNameRange Is Nothing And Not FindIDRange Is Nothing Then
Cells(FindNameRange.Row, Columns.Count).End(xlToLeft).Offset(0, 1).Value = MyStrs(2)
MyRowNdx = MyRowNdx - 1
Else
Range(TABLETOPLEFTCORNER).Offset(0 + MyRowNdx, 0) = MyStrs(0)
Range(TABLETOPLEFTCORNER).Offset(0 + MyRowNdx, 1) = MyStrs(1)
Range(TABLETOPLEFTCORNER).Offset(0 + MyRowNdx, 2) = MyStrs(2)
End If
End If
MyRowNdx = MyRowNdx + 1
End If
Wend
Close MyFileNumber
MyCurrCSVFname = Dir()
Loop
Application.ScreenUpdating = True
End SubTeszteld, remélem jó lesz.
[ Módosította: radi8tor ]
Új hozzászólás Aktív témák
Hirdetés
- Filmvilág
- Formula-1
- Nothing Phone (3a) és (3a) Pro - az ügyes meg sasszemű
- Adguard Premium (Android, PC és egyéb rendszerekre, valamint böngészőkhöz)
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Bambu Lab 3D nyomtatók
- Gitáros topic
- Autós topik
- PlayStation 1 / 2
- Béta iOS-t használók topikja
- További aktív témák...
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- Assassin's Creed Shadows Collector's Edition PC
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem, Most kedvező áron!
- Windows 10/11 Home/Pro , Office 2024 kulcsok
- Bomba ár! Dell Latitude 5430 - i7-1255U I 16GB I 512SSD I HDMI I 14" FHD I Cam I W11 I NBD Garancia!
- Realme 8i 64GB / Normál állapotban / 12 hónap jótállással
- RÉSZLETRE , Bankmentes , kamatmentes Asus Rog Zephyrus G16
- BESZÁMÍTÁS! Apple MacBook Pro 14 M4 Pro 24GB RAM 512GB SSD garanciával hibátlan működéssel
- Samsung Galaxy S23 Ultra 256GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest