- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- DIGI Mobil
- Digitális detox a Nokiától
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Fotók, videók mobillal
- Samsung Univerzum: Az S23-at is megbabonázta a Galaxy AI
- iPhone topik
- Azonnali mobilos kérdések órája
- Vodafone mobilszolgáltatások
- Yettel topik
Hirdetés
-
Toyota Corolla Touring Sport 2.0 teszt és az autóipar
lo Némi autóipari kitekintés után egy középkategóriás autót mutatok be, ami az észszerűség műhelyében készül.
-
Az Apple iPadOS-t is megrendszabályozza az EU
it Az EB közölte: az Apple iPad táblagépekre írt iPadOS rendszere is kapuőrnek számít, az üzleti felhasználókra gyakorolt fontossága miatt.
-
Rövid előzetesen a Lost Records: Bloom & Rage
gp A Don't Nod legújabb kalandjáték valamikor az év folyamán érkezik PC-re és konzolokra.
-
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
-
Mutt
aktív 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
A tanácsaimat ingyen adom. Ha nem tetszik, akkor kérlek ne kritizáld! / https://github.com/viszi/codes/tree/master/Excel
-
Delila_1
Topikgazda
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 SubProgramozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
Nagyon jó, hogy a kérdezéstől eljutottál a válaszig. Az más dolog, hogy létezik az Excelben erre egy beépített funkció.
Meglehet, hogy az én válaszom is túl bonyolult, csak nem ismerek egyszerűbb megoldást.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
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
Topikgazda
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.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Louro
őstag
-
Delila_1
Topikgazda
Nem derül ki a leírásodból, hogy hány formod van, és melyiken milyen elemek vannak.
Ha minden 1 formon van, akkor nem kell átadni az értékeket, ha viszont többön, akkor a szülő formnak is szerepelnie kell az elemek neve előtt.UserForm1.CheckBox_All = True
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Delila_1
Topikgazda
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.[ Szerkesztve ]
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
nagyúr
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.
-
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ó?[ Szerkesztve ]
-
-
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
-
Fferi50
őstag
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.
-
Fferi50
őstag
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.
-
Delila_1
Topikgazda
-
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
őstag
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.
-
Fferi50
őstag
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.
-
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)
-
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
-
alevan
őstag
Szia. Köszi a segítséget. Lefutott, de sajnos semmi nem történt.
(#26183) Fferi50 Neked is köszönöm. Egy minimális módosítást kelett ezközölnöm (most, hogy már meg volt az alap, nem volt nehéz) és tökéletesen megy.
"Ezért lovagol a pokolba a konzumer IT piac. A hülye igények... . Azt sem tudod, hogy mit akarsz de az jöjjon havonta frissités formájában."
-
Fferi50
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
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.
[ Szerkesztve ]
-
Fferi50
őstag
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.
[ Szerkesztve ]
-
Des1gnR
őstag
Erre a formátumra van szükség:
Élelmiszer______Édesség_____Belvita_____Nettó árSajnos vannak nem minden termék áll azonos sorhosszból. Van, hogy a termékleírás magában 4 sor.
(#26180)
hhheniEz akár jó is lehetne ha érteném
[ Szerkesztve ]
Dell G3 3779 || Samsung S23+ || Samsung Watch 5 Pro || Oculus Quest 2 || Creality Ender 3 V2
-
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. -
bteebi
veterán
Szia!
Minden név egymás alatt van, egy oszlopban, vagy például az "A" sorban van az, hogy "Csoport neve", és mondjuk a "B"-ben vannak a nevek? A "Csoport neve" fixen szerepel a cellákban (tehát pl. "1. Csoport neve", "2. Csoport neve", stb.)? Ha igen, akkor a "bal" vagy a "jobb" függvénnyel szűrve lehetne keresést végezni a DARABHATÖBB függvénnyel. Mindenesetre makró nélkül szerintem csak nagy gányolással menne, nem lehetne rendesen automatizálni. Makróval viszont megoldható, bár jó lenne látni egy mintatáblát tesztadatokkal (képként beszúrva is jó, csak látszódjon az elrendezés).
Cancel all my meetings. Someone is wrong on the Internet.
Új hozzászólás Aktív témák
- Háztartási gépek
- Tőzsde és gazdaság
- ASUS routerek
- Energiaital topic
- Az Apple iPadOS-t is megrendszabályozza az EU
- Androidos fejegységek
- Internet Rádió építése (hardver), és programozása
- AMD GPU-k jövője - amit tudni vélünk
- Nyaralás topik
- Az alaplapgyártókra hárítja az Intel az egyes Core CPU-k stabilitási gondját
- További aktív témák...
- Steam, Windows, Origin kulcsok, előfizetések közvetlenül a kiadótól, a LEGJOBB ÁRON!
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- PC JÁTÉKOK (OLCSÓ STEAM, EA , UPLAY KULCSOK ÉS SOKMINDEN MÁS IS 100% GARANCIA )
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül