- iPhone topik
- WayteQ blog: Megérkezett az x995 androidos GPS
- Samsung Galaxy A54 - türelemjáték
- Motorola Edge 40 - jó bőr
- Apple AirPods Pro (2. generáció) - csiszolt almaságok
- Xiaomi 14T - nem baj, hogy nem Pro
- Okosóra és okoskiegészítő topik
- Poco X6 Pro - ötös alá
- Honor Magic5 Pro - kamerák bűvöletében
- Android alkalmazások - szoftver kibeszélő topik
-
Mobilarena
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
-
gyu84
tag
Szia!
Igazából nem ez lenne a probléma, hogy ki éjszakás és nappalos, hanem, hogy a ledolgozott órából hány óra esik éjszakásra. Az átfedés kellene a két időintervallum között, ami ha nem lenne nap váltás akkor nem lenne probléma, csak a napváltás miatt nem tudom megoldani. -
Fferi50
Topikgazda
Szia!
Akkor félreértettél:
"File = Pathname & "\" & Filename & "\*.xlsx"
Workbooks(File).Worksheets("Target").Cells(1, 1)"
Itt a File változó a teljes nevet tartalmazza. Ezt nem szereti ebben a pozícióban az Excel VBA, ide elég a Filename (amiben a kiterjesztés is benne van, legalábbis 2010-ig biztosan.
Viszont most látom: A Filename & "\*.xlsx" -ben miért is van benne a backslash? , illetve így a File fogja tartalmazni a * karaktert, ami aztán végképp nem szerepelhet a fájlnévben.
Szóval úgy néz ki, több sebből vérzik az elképzelés."Mondjuk az nem működhetne, hogy Workbooks(Dir(Source_file)).Worksheets?" Szerintem túlbonyolítod a dolgot, a Source_file is teljes, path-t is tartalmazó név, ezért nem felel meg. Másrészt, ha már megnyitottad, akkor csak a rövid név müxik.
Megnyitás nélkül pedig nem kell a Workbooks, csak a teljes fájlnév szögletes zárójelben, aposztróffal kezdve a több tag lehetősége miatt, utána a munkalap neve, aposztróf bezárva felkiáltójel cellacím.Üdv.
-
Fferi50
Topikgazda
Szia!
Ha ugyanabban a könyvtárban(mappában) van a forrásfájl, mint a célfájl, akkor elég a fájlnév a hivatkozásban, ha máshol van, akkor a teljes fájlnév kell hozzá, elérési úttal együtt.
Bezárt munkafüzetre való hivatkozás egyébként mindig a teljes fájlnevet használja (az előző pontban is, ha megnézed a beírás után, ha átlépsz egy másik cellára, a teljes fájlnevet fogod látni) a képletben.A dir függvény mindig csak a fájl elérési út nélküli nevét adja vissza. Elképzelhető, hogy ez a probléma.
Üdv.
-
Fferi50
Topikgazda
Szia!
Ebben a pár sorban van egy kis ellentmondás:
Workbooks.Open(Filename)
'Itt jön a másolgatás.
Range("B2").Select
Selection.Copy
Workbooks("Master.xlsx").Worksheets("Sheet1").Range(Cells(ActiveSheet.Usedrange.Rows.Count,1)).PasteSpecial xlPasteValues
A munkafüzet megnyitása után a megnyitott munkafüzet lesz aktív, eddig rendben.
A Select nélkül is lehet másolni: Range("B2").Copy
A bibi itt van szerintem:
Workbooks("Master.xlsx").Worksheets("Sheet1").Range(Cells(ActiveSheet.Usedrange.Rows.Count,1)).PasteSpecial xlPasteValues
mivel az ActiveSheet továbbra is az, ahonnan a másolást csinálod, azaz a megnyitott munkafüzet aktív munkalapja!
Helyette a Master fájl "Sheet1" munkalapjára kellene itt is hivatkozni. Ráadásul minden egyes file adatát ugyanabba a sorba (usedrange.rows.count) fogja beírni - azaz csak az utolsó fájl adata marad meg.
Ezen kívül a másolást lehet direktbe is csinálni:
Range("B2").Copy Destination:=Workbooks("Master.xlsx").Worksheets("Sheet1").Cells(Workbooks("Master.xlsx").Worksheets("Sheet1").UsedRange.Rows.Count + 1, 1)Természetesen a többi cella másolásánál már a UsedRange.Rows.Count kell.
Ha viszont csak az értéket szeretnéd átvenni, akkor működik ez is:
Workbooks("Master.xlsx").Worksheets("Sheet1").Cells(Workbooks("Master.xlsx").Worksheets("Sheet1").UsedRange.Rows.Count + 1, 1).Value=Range("B2").ValueÜdv.
-
bara17
tag
kb ugyanezt csináltam, csak az A oszlop mellé darabteli függvénnyel megszámoltam, hogy az adott elem hányszor van benne a tartományban majd a max függvényel a max értéket kikerestem és index/hol.van-nal az értékhez tartozó elemet megkerestem
Csak azt hittem van más megoldás
Ja és köszönöm
-
Dr. Mózes
aktív tag
Az a helyzet, hogy én pedig még soha nem makróztam excelben (a középiskolában nem volt tananyag, a fősulin meg még annyit se). De azért megpróbáltam beüzemelni az általad adott kódot, de sajnos az első sort se engedte már, így egy kicsit átírtam. Most már nem piros egyik sor sem, de futtatáskor egy 438-as hibaüzenetet ad: "Object doesn't support this property or method"
Sub Választó()
Dim LastRow As Integer
LastRow = ActiveSheet.UsedRange.Rows.Count
For i = 1 To LastRow - 1
For j = 1 To LastRow
If Cells(i, 1) + Cells(j, 1) = Range("C1") Then
Cells(i, 1).Cut
Cells(ActiveSheet.Cells(Rows.Count, "K").End(xlUp).Row + 1, 11).Paste
Cells(j, 1).Cut
Cells(ActiveSheet.Cells(Rows.Count, "K").End(xlUp).Row + 1, 11).Paste
End If
Next
Next
End SubTudnál segíteni? (Már ha van türelmed egy kezdőnek elmagyarázni)
-
Fferi50
Topikgazda
Szia!
1. Milyen excel verziód van?
2. Nem hiszem, hogy egy nyúlfarknyi makró miatt összeomlana bármelyik is - a sok-sok képlet annál inkább zabálja a memóriát és lassítja a betöltődést is (de ez már nyilván adottság).
3. Egy gombra kattintást talán még egy vezető is meg tud tenni.
4. Ha mégis problémásnak gondolod, akkor lehet a frissítést megnyitáskor automatikusan megoldani, verzió függő, hogy hova kell a makrót tenni - ekkor a vezetőnek csak az a dolga, hogy kiválasztja a neki tetsző tételt a listából. (És még az is megoldható, hogy csak akkor frissítsen, ha aznap még nem volt frissítve - jó ez egy kissé macerás is lehet, ha mindenki aki használja, rá is ment.)5. Azért írom külön, mert ez sem mindegy: minden vezető "saját különbejáratú fájlt" használ, vagy egy van közös használatban, vagy egy van, de egyszerre csak egyvalaki használhatja, vagy egy van és azt csak olvasási joggal lehet használni.
Ez utóbbi pont azért fontos, mert nem mindegy a makrós megoldás miatt sem és a használat normalizálása miatt sem.
Üdv.
-
Fferi50
Topikgazda
Szia!
Szerintem vagy Te bonyolítod túl a kérdést, vagy én nem értettem meg.
Javaslat:
Excel verziótól függően:adatok - irányított vagy speciális szűrés, a megjelenő párbeszéd panelen kijelölöd az adott oszlopot - bejelölöd, hogy más helyre másolás, szűrőtartomány az oszlop fejléce (remélem van neki, ha nincs adni kell). Hova másolja helyre beírod azt az 1 cellát, ahol szeretnéd, hogy kezdődjenek az adatok, majd bejelölöd a csak az egyedi rekordok megjelenítése. Ezután OK. A kívánt helyen megjelenik az a pár egyedi tétel, ami az adott oszlopban van.A beviteli mező adatérvényesítésénél pedig beírod a listához ennek tartománynak a címét.
Ha mindezt lerögzítetted egy makróban, máris megvan az alapod. Hozzárendeled egy billentyűhöz és ha szükséges, akkor lefuttatod ismét.
Remélem, jól értettem a feladatot (vagy legalább az irányt....)
Üdv.
-
slashing
senior tag
csak elgondolás szinten makróval:
kell egy makró ami kiszűri az egyedi értékeket az adott oszlopból valahova(tökmindegy hova) ahova kiszűri oda kell csinálni névkezelővel egy dinamikus tartományt és ezzel megkapjuk a leggördülő lista elemeit. Egy dolgot kell még meghatározni hogy a szűrős makró mikor fusson le.... minden fájl megnyitásakor vagy adott cella megváltozása esetén....
-
Fferi50
Topikgazda
Szia!
A dir() parancs korlátok között alkalmas arra is, hogy megkeresd vele az almappákat.
neve=dir("*.",vbdirectory) azokat a fájlneveket hozza, amelyek könyvtárak, vagy nincs kiterjesztésük.
Az első két ilyen elvileg a . és .. könyvtár, ami minden mappában benne van. (Könyvtár=mappa az én értelmezésemben most, ne zavarjon.)
Ezután folyamatos neve=dir() parancsokkal megkaphatod a többi nevet.
Ez lényegében ugyanaz, mint amikor a fájlokat nézed végig.
Mivel sajnos nem egyértelmű, hogy almappa-e amit hoz, annak is meg kell nézni hasonló módon az "almappáját", ha van benne "." könyvtár, akkor az is almappa.Most sajnos nincs elég időm arra, hogy pontos makrót írjak rá, de ezen elvek szerint próbáld végig.
Van még a filesystemobject objektum, amellyel szintén meg lehet találni a fájlokat.
Ezt is érdemes lenne végignézni.Üdv.
-
Fferi50
Topikgazda
Szia!
Nem egészen értem a kérdést. Ha a mappákban és almappákban levő fájlokat fel tudod dolgozni, akkor tudod a nevüket is.
A workbook.fullname megmondja a teljes (elérési úttal kiegészített) nevet is.
Tehát az éppen feldolgozott fájlodnak megnézed a fullname tulajdonságát és azt hozzáteszed infoként a rekordokhoz.Üdv.
-
ElemiKoczka
csendes tag
Arra az esetre is igaz, hogy így egyszerűbb, ha kb. 700 féle receptről beszélek és átlagban mondjuk 5-10 alkotóról? Ezért gondolkodom a függőleges verzióba, továbbá azért, mert az alapadatokat txt-ből kell átemelnem excelbe. De terméshetesen semmi jónak nem vagyok elrontója
-
-
maestro87
őstag
Én nagyon nagyon ritkán használom (mivel mindig csak idegeskedek vele) és akkor is csak pár egyszerű táblázatot hozok létre. Grafikonokra és számolásokra inkább Origin-t használok.
(#21629) KaiotEch:
Ezeket a kódokat hová írjátok? Nem is tudtam hogy az Excel-ben is lehet ilyet csinálni. Vagy ez csak makró? -
Már módosítottam ilyenre:
Sub KIOLVAS()
Sheets("Munka1").Select
Cells.Select
Selection.ClearContents
With ActiveSheet.QueryTables.Add(Connection:= _
"TEXT;C:\KIOLVASNIVALO.kit", Destination:=Range("A1"))
.Name = "kiolv"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 852
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = True
.TextFileSemicolonDelimiter = False
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(1, 1, 1, 1, 1, 1)
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
End With
Sheets("Munka2").Select
End SubA tegnapi állománnyal jó volt, de a mait nem szeparálja szét cellákra. Az első oszlopba dobálja be.
-
Delila_1
veterán
Nem értem, miért akarod külön modulokban futtatni a makrókat. Mikor egy párbeszéd elemen duplán klikkelsz, létrejön a hozzá tartozó makró első, és utolsó sora. A form modullapján az elemek neve szerinti abc rendben helyezkednek el a makrók. A legördülőből (kép) könnyen kiválaszthatod, amire szükséged van, azzal a kiválasztott elem makrójára ugrasz.
A form és a makrók között is könnyedén válthatsz a bal oldali 2 ikonnal.
Ha mégis mindenképp külön modulokban helyeznéd el a makróidat, a meghívásuk (a Meghívom nevű makrót hívod meg):
Meghívom CheckBox_All, CheckBox_Yes, CheckBox_No
A hívott makró paramétereit meg kell adnod:
Private Sub Meghívom(CheckBox_All, CheckBox_Yes, CheckBox_No)
End SubAz elemek sorrendje egyezzen meg a két helyen.
Szívesen megnézném a fájlodat. -
Delila_1
veterán
-
Delila_1
veterán
Lrow= ...(másik füzet lapján az első üres sor)
filterezés
terület kijelölése
selection.copy
Workbooks("Másikfüzet.xlsx").Sheets("AhovaMásolsz").range("A" & Lrow.).PasteSpecial xlPasteValuesHa nincsenek a táblázatban képletek, akkor elég így:
selection.copy Workbooks("Másikfüzet.xlsx").Sheets("AhovaMásolsz").range("A" & Lrow.)
Képleteknél inkább utólag add meg azokat az új füzetben, mert ha másolod, a hivatkozások az eredeti füzetre mutatnak majd.
-
mexel
veterán
Köszönöm a segítséget
! Közben lejjebb Delila_1-től is érkezett egy megoldás
, az egyszerűbbnek tűnik, azt ki is próbáltam, csak van egy kis szépséghibája:Ha valamelyik sorban nincs pl "a" btű akkor abba az oszlopba rkja az első betűt amit talál, tehát lehet hogy éppen b vgay c lesz abban az oszlopban sajnos.
Erre megintcsak nem tudom mi a megoldás.
Most ha lesz még időm kipróbálom a módszeredet, hogy az hogy működik. Majd jelzem hogy sikerültDelila_1: ezt a szám átalakítót is kipróbálom, köszi, de erre lehet hogy jó a csere funkció is talán.
Már csak azt kellene kitalálnom hogy tegyem egy oszlopba az azonos értékeket. -
Delila_1
veterán
Nem biztos, hogy jól értem.
Tehát megnyitsz egy füzetet. Az utolsó oszlop füzetenként máshol van, de mindig az utolsó mínusz 2. oszlopban vannak #N/A értékek, amik szerint a sorokat törölni akarod.Próbáld ezzel a makróval:
Sub HibasSorokTorlese()
Dim usor As Long, oszlop As Long, betu As String
usor = Range("B" & Rows.Count).End(xlUp).Row
oszlop = Range("A1").End(xlToRight).Column
'Utolsó oszlop-2 első sorába a hibákat tartalmazó oszlop betűjele
Cells(1, oszlop + 3) = "=CHAR(" & oszlop - 2 + 64 & ")"
betu = Cells(1, oszlop + 3)
'Autoszűrő kiterjesztése az utolsó oszlop+1 területre
Range(Cells(1, 1), Cells(1, oszlop)).Select
Selection.AutoFilter
Range(Cells(1, 1), Cells(1, oszlop + 1)).Select
Selection.AutoFilter
'Segédoszlopba fejléc
Cells(1, oszlop + 1) = "Hibák"
'Képlet a segédoszlopba
Range(Cells(2, oszlop + 1), Cells(usor, oszlop + 1)) = "=IF(ISERROR(" & betu & "2),1,0)"
'Autoszűrés a hibákat tartalmazó oszlop szerint
On Error GoTo Vege
ActiveSheet.Range(Cells(1), Cells(usor, oszlop + 1)).AutoFilter Field:=oszlop + 1, Criteria1:=1
'Látható sorok kijelölése és törlése
Range("C2:C" & usor).SpecialCells(xlCellTypeVisible).Select
Selection.Rows.Delete shift:=xlUp
Vege:
'Autoszűrő minden megmaradt sort mutasson
ActiveSheet.Range("A1:C" & usor).AutoFilter Field:=oszlop + 1
End Sub -
Mutt
senior tag
Hello,
...napi rendszerességgel kell excelben megnyitnom és bizonyos oszlopokat kiszednem...
Ha php, akkor talán az awk -ot is tudnám javasolni. Promptból is futtatható, pl. a fájl 2 és 5 oszlopát így tudod kimenteni:
awk < bemenet.txt '{ print $2, $5 }' > eredmeny.txtHa Excel-ben akarod akkor pedig érdemes lenne makrórögzítővel felvenni a lépéseket és azt használni minden alkalommal.
A 17823-as hozzászólásban van egy általános makró is, amely a fájlt Excelbe olvassa. Azt is megpróbálhatod átalakítani, segítünk ha kell.
üdv
Új hozzászólás Aktív témák
Hirdetés
- FÉL ÁR ALATT! Lian Li UNI FAN SL120 RGB 1db-os és 3db-os ventilátor szett garanciával
- Telefon felvásárlás!! iPhone 15/iPhone 15 Plus/iPhone 15 Pro/iPhone 15 Pro Max
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
- DELL PowerEdge R640 rack szerver - 1xGold 6138 (20c/40t, 2.0/3.7GHz), 64GB RAM,4x1G RJ, HBA330, áfás
- MacBook felvásárlás!! Macbook, Macbook Air, Macbook Pro
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest