-
GAMEPOD.hu
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
-
Fferi50
őstag
Szia!
Elnavigálsz abba a könyvtárba, ahol a fájljaid vannak.
Elindítod az excelt, ami egy új munkafüzettel indít.
Ide összemásolhatod a fájlokat.
Ezután Alt+F11 lenyomásával átmész a VBA project ablakba.
A menüből kiválasztod az insert, azon belül pedig a module pontot.
A megnyilt modullapra bemásolod az alábbi kódot:
Sub osszerako()
Dim hova As Worksheet, fajlneve As String, usor As Long, xx As Integer
Set hova = ActiveSheet
fajlneve = Dir("*.xls*")
Application.EnableEvents = False
Applicaton.ScreenUpdating=False
Do While fajlneve <> ""
xx = xx + 1
usor = hova.UsedRange.Rows.Count + 1: If usor = 2 Then usor = 1
Workbooks.Open Filename:=fajlneve, ReadOnly:=True
ActiveSheet.UsedRange.Copy Destination:=hova.Cells(usor, 1)
ActiveWorkbook.Close False
fajlneve = Dir()
If xx Mod 10 = 0 Then Application.StatusBar = "Másolva: " & xx & "db fájl!"
Loop
Application.EnableEvents = True
Application.ScreenUpdating=True
Application.StatusBar = False
MsgBox "A másolásnak vége, kérem, mentse el a fájlt!", vbInformation, "Fájlok összemásolása"
End SubVisszamész az excel munkalapra (Alt+F11 ismét).
Ezután menü - nézet- makrók megjelenítése. Megjelenik a listában az osszerako. Inditás.
Alul a státusz soron fogod látni a begyűjtött fájlok számát, tizesével nőve.Ha végzett, kapsz egy üzenetet.
Ezután mentés másként művelettel nevezd el a fájlodat, a mentés után bezárhatod.Remélem, sikerülni fog.
Üdv.
-
air
nagyúr
-
air
nagyúr
Sajnos csak a próba sikerült, élesben nem megy a dolog.
Nem tudom, hogy az előbb miért annak a könyvtárnak a tartalmát kezdte összemásolni amelyiket valóban kellett, mert most az istennek sem tudom rávenni, hogy azt csinálja, amit én akarok, ne pedig a teljes "Dokumentumok" mappámat.
Tehát továbbra sem tiszta, hogy miként kell elnavigálni a kérdéses mappába.[ Szerkesztve ]
Tintatartó, aligátor, búzavirág, csók, gyalupad, fogpiszkáló
-
marcyman
aktív tag
Sziasztok!
Kérdésem, hogy a következőt meg lehet-e oldani valahogy:
Adott egy táblázat ahova az ADOTT napi adatoknak át kellene frissülniük egy másik táblázatból, ahol minden nap új sorba írom az adatokat.
Tehát van egy napi jelentés, ahova átfrissülne egy másik táblázatból az adott napi adatok, automatán. Valahogy léptetné az adott sort (napot) mindig tovább.
-
KaliJoe
csendes tag
válasz Delila_1 #24902 üzenetére
Szia Delila_1,
Köszönöm. Azt hiszem erre gondoltam... Viszont, nem csak a Copy kijelölést kellene levenni, hanem a beillesztés kijelölését is!
Erre mi a helyes parancs?
Frazeológiám: Az ember nem kávéra, nem is kávéházra vágyik, az ember lelke barátra vágyik, a kávé csupán ürügy... :-) ;)
-
Fferi50
őstag
Szia!
Az alábbi kis makrórészletet légy szíves betenni a dim sor után:
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = CurDir()
If .Show Then
ChDir (.SelectedItems(1))
Else
MsgBox "Nem választottál, kilépek a programból!", vbCritical :Exit Sub
End If
End WithÍgy amikor elindítod a programot, kiválaszthatod, hogy melyik könyvtár adatait rakja össze (ez talán jobb is, mintha kívülről navigálnál, mert ez biztosan oda visz, ahova szeretnéd).
Ha nem válaszottál könyvtárat, akkor nem megy tovább.Üdv.
-
#02644736
törölt tag
Tudna valaki abban segíteni, hogy ha egy cella értékét másolom át egy másik munkalapra, nem marad meg ugyanúgy, pl. ha a cellában ez van C_121_14 (a második egyesnek alsó indexben kellene lennie, de nem tudom úgy itt beírni), hogy azt úgy másolja át egy másik cellában, hogy az az egyes alsó indexben maradjon, mert másolás után úgy néz ki, mint ahogy itt leírtam (nem lesz alsó indexben)
-
-
alfa20
senior tag
Sziasztok,
Abban tudnátok segíteni, hogy UseForm1-ben Label1 és Label2-ben szerepel egy-egy szám, valamint Label3-ban vagy "+" vagy "-". Label4-ben kellene az értéket mutatnia valahogy így:
Label4 = sum(Label1 & Label3 & Label2)
"Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)
-
Delila_1
Topikgazda
válasz alfa20 #24917 üzenetére
Label-ben nem tudsz értékeket megadni, erre a Textbox való. Mivel a textboxok szöveges értéket adnak (a nevükben is ez szerepel), meg kell szoroznod azokat 1-gyel, hogy számolni lehessen velük.
A képen a lévő ComboBox RowSource tulajdonságába ezt írtam: Munka1!A1:A2, mert ebbe a két cellába írtam a + és - jelet, előttük aposztróffal.
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
-
Mutt
aktív tag
válasz marcyman #24909 üzenetére
Szia!
Adott egy táblázat ahova az ADOTT napi adatoknak át kellene frissülniük egy másik táblázatból, ahol minden nap új sorba írom az adatokat.
Makróval támogatva megy.
Lépések:
1. A minden nap bővülő táblázatba kell egy függvény egy fix helyen amely megadja az utolsó sort.
pl. legyen a B1 cella
2. Az utolsó sor számát meg lehet tudni DARAB vagy DARAB2, esetleg a HOL.VAN függvénnyel.
pl. legyen a B1 képlete =DARAB2(A:A)
3. Ezt a cellát linkeldbe a másik fájlba.
4. A másik fájl egyik eseményére (ez lehet a fájl megnyitása, vagy az egyik lap módosítása) be lehet tenni az alábbi egy sort (a példában A1-ben van a linkelt mező és alá A2-be írjuk az utolsó sor hivatkozását):
Range("A2").Formula = "=[másik fájl neve,xlsx]Munka1!$A" & Range("A1")
5. Csak ezt a fájl kell makróbarát füzetként menteni, a másikat nem kell.A 4-es lépésben említett sor helyett, itt egy kicsituniverzálisabb megoldás. Ez 3-as lépésben linkelt mezőből kiveszi a másik fájl elérését, így azzal már nem kell foglalkoznod,
Private Sub Worksheet_Activate()
Dim link As Variant
Const oszlop As String = "A" 'A-oszlopban vannak a napi adatok a másikban
link = Split(Range("A1").Formula, "!")
Range("A2").Formula = link(0) & "!" & oszlop & Range("A1").Value
End Subü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
válasz alfa20 #24922 üzenetére
Feltettem egy félkész fájlt. Hiányzik a 4-9 gombok makrója, és meg kell oldani, hogy több műveletet is végre lehessen hajtani egymás után.
Nézd meg az F1 cella képletét a névadásban.
Jó szórakozá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.
-
Pá
addikt
Sziasztok!
Egy táblázatból szeretnék értékeket kinyerni, vlookup szerűen, csak kicsit szofisztikáltab módon.
Inkább mutatok egy példát, talán úgy egyszerűbb elmagyarázni.
A fenti táblázatban a kék az input cella, a sárgába várom az eredményt. Most helyesen van kitöltve, szóval ezekre az eredményekre számítanék.
Ha B2 cellába írok egy értéket, akkor azt összevetné az A6;A14 számsorral és aminél még nagyobb, vagy egyenlő, azt a számot venné ki a B oszlopból.
Szóval most B2-ben 265-van, így a 200-hoz tartozó 4-et veszi fel értékként.
C2-ben 225 van, így ott is a 200-hoz tartozó 8-at veszi fel értékként.
D2-ben 299-van, így ott viszont még a 250-hez tartozó 16-ot kéne felvegye.Kicsit bonyolítja a helyzetet, hogy néhány cella üres. Tehát pl az első példát nézzük, akkor az A oszlop hivatalosan 0-t kéne felvegyen, hiszen 265 nagyobb, mint 250 és a 250-nél nem szerepel semmi.
Itt maximum azt tudnám csinálni, hogy az üres helyekre a táblázatban kézzel beírom a megelőző értéket. De jó lenne egy elegáns megoldás erre is, hogy ezt a excel le tudja kezelni.''Annyira vagyunk egészségesek, amennyire a gondolataink humánusak.''
-
Delila_1
Topikgazda
Egyszerűen kitöltheted az üres helyeket.
Kijelölöd a B6:D14 területet. Ctrl+g-re bejön az ugrás menü, ahol az irányítottat, majd az üres cellákat választod. Marad a kijelölés, az aktuális cellába beírsz egy egyenlőség jelet, majd FEL nyilat nyomsz, Ctrl+Enter.Ezután már csak a képletet kell beírni a B3-ba: =FKERES(B2;$A$6:$D$14;OSZLOP();1), és ezt jobbra másolni.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
Pá
addikt
Ezen felbátorodva kérdezek mégegyet.
Amolyan dinamikusan változó számformátumot szeretnék.
Tehát pl A1 cellában '455' van.
Ha ezt megszorzom 1000-rel, jó lenne, ha 455000 helyett ezt írná: 455ezer. Ha megint megszorzom 1000-rel, akkor pedig ezt: 455millió. Ha megint, akkor 455milliárd. stbstb Nyilván a cella értéke ennek megfelelő lenne, szóval normálisan szeretnék vele tovább számolni, csak grafikusan tenném könnyebben olvashatóbbá a munkalapot.Tudom, hogy létezik az X szorozva 10 az Y-on formátum, de az nekem nem annyira szimpatikus.
A nagyságrendekre pedig készítenék egy táblázatot, onnan puskázhatna az excel, hogy hova mit kell írnia, ha megoldható.Szóval lenne egy ilyen táblázatom mankónak, hogy
ezer 1000
millió 1000000
milliárd 1000000000
billiárd 1000000000000stb
''Annyira vagyunk egészségesek, amennyire a gondolataink humánusak.''
-
biker
nagyúr
Igen izgalmas kérdésem van
adott egy tábla. van benne 10.000 sor
a szöveges cella egyben tartalmazza az olasz és az angol terméknevet
Az olasz szöveg álló, az angol dőlt betűs.
Nekem csak az angol kellhogyan lehet kinyerni, csak a dőlt betűs angol szövegrészt?
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
marcyman
aktív tag
No ma próbáltam amit írtál, de bevallom a 3. pontnál tovább nem jutottam.
Konkrétan azt sem vágom hova kéne írnom a többit.
Illetve azt sem tudom, hogy milyen tutorialt kéne néznem hozzá, hogy nagyjából megértsem mit is csinálok.
Nagyon megköszönném, ha linkelnél valami gyorstalpalót.[ Szerkesztve ]
-
Delila_1
Topikgazda
A laphoz kell rendelned a makrót. Feltételeztem, hogy az első oszlopban vannak a szavak. Ha nem, akkor az
If Target.Column = 1 And Not IsEmpty(Target) Then
sorban az 1-et írd át a formázandó oszlop sorszámára.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim kezd As Integer
If Target.Column = 1 And Not IsEmpty(Target) Then
kezd = InStr(Target, " ") + 1
Range(Target.Address).Characters(Start:=kezd, Length:=Len(Target)).Font.FontStyle = "Italic"
End If
End SubEz a makró az újonnan bevitt magyar-angol szöveg második részét alakítja dőlt betűssé.
Az angol szavakat a =KÖZÉP(A1;SZÖVEG.KERES(" ";A1)+1;80) képlettel kapod meg egy üres oszlopban.[ 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.
-
biker
nagyúr
válasz Delila_1 #24935 üzenetére
Szia!
Köszi, gondolom szöveg.keres nevű legyen a makró, ugye?
Vagy félreértek valamit?Közben pörgetem végig, ez egy pdf-ből mentett xls, néhol erősen összetört a formázás, nem mindenhol ilyen szabályos
Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |
-
Delila_1
Topikgazda
A =KÖZÉP(A1;SZÖVEG.KERES(" ";A1)+1;80) nem makró, hanem egy képlet. Egy üres oszlopba írd be az első (dupla) szavad sorába, majd másold le addig, amíg adataid vannak.
Vagy egyszerre beírhatod a képletet a D oszlopba, D2-től addig, ameddig adatok vannak az A oszlopban.
Ez a makró modulban legyen. A Munka1 helyett írd a saját lapod nevét.Sub angol()
Dim usor As Long
usor = Application.WorksheetFunction.CountA(Sheets("Munka1").Range("A:A"))
Range("D2:D" & usor) = "=MID(A2,SEARCH("" "",A2)+1,256)"
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.
-
alfa20
senior tag
Sziasztok!
No még is sikerült a kalkulátor
két képből vágtam össze, hogy látszodjon a gomb amivel meghívom privát makróból fút így bármikor előcsalható
ha esetleg valakit érdekel itt meglesheti [link]
"Az agy olyan, mint az ejtőernyő: csak akkor működik, ha nyitott." (Thomas Dewar)
-
Delila_1
Topikgazda
Egyenként kell megadnod a feltételes formázást a különféle nagyságrendekhez, de ezt elég 1× bevinned a tartományra.
100-as nagyságrendnél nagyobbhoz a feltétel =A2>999, a forma ##0 " ezer" (a 0 után 1 db szóköz)
100 000-esnél nagyobbhoz =A2>999999, a forma ### ##0 " millió" (a 0 után 2 db szóköz)Figyeld meg, hogy a számfora utolsó tagja, a 0 után annyi szóköz van, ahányszor 1-1 hármas egység szerepel az eredeti értékben. Az idézőjelen belülre is tettem egy kezdő szóközt, az csak annyit csinál, hogy
123ezer helyett 123 ezer lesz a kiírás képe, nem írja rá a számra a nagyságrendet.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
válasz alfa20 #24938 üzenetére
Nagyon klassz! Most már csak azt nem értem, ha az ikonját kitetted a gyorselérési eszköztárra, miért nem magát a kalkulátort tetted ki?
Ujjgyakorlat a makrózáshoz?
Akkor egy kis formázási módosítás:
A Display label SpecialEffect tulajdonságánál a 2-es jobban mutat.
A Label2 lehet nagyobb, de a Visible tulajdonsága legyen False
A Label1 BackStyle legyen 0, átlátszó, hogy a Display labelt ne takarja.Persze ízlések és pofonok...
[ 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.
-
Delila_1
Topikgazda
Egyszerűbb a nagyságrendek feltételének a megadása a >999 helyett így:
A formátumban pedig a szóközök mennyiségének és a szövegnek a változtatása legyen, ahogy már előbb írtam.
Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
diegho
nagyúr
Sziasztok!
2010-es Excel-ben kellene egy kis help. Szeretnék egy táblázatot csinálni, amiben az egyik oszlopban dátumok lesznek és szeretném, ha a rendszer dátumához viszonyítva jelezne az excel, ha az ott lévő dátum három napon belülre került. Gyakorlatilag adott x feladat, amit y időpontra kell megcsinálni, erről szólna a táblázat, szeretném, ha az y-3. napon jelezne az excel, hogy figyeljek oda, csak 3 nap van vissza. Megoldható ez?
-
Delila_1
Topikgazda
válasz diegho #24942 üzenetére
Feltételes formázást adj a dátumokat tartalmazó oszlopra.
Címsor esetén vegyük, hogy A2-ben kezdődnek a dátumaid. A feltételes formázás képlete =A1<=MA()-3
Ehhez adsz egy formátumot.Programozó: hibás programok megírására és kijavítására kiképzett szakember. Többet ésszel, mint ész nélkül.
-
kymco
veterán
Sziasztok!
Egy bizonyos excel táblázatban muszáj használnom vba-t. De bizonyos felhasználók a saját gépükön (nem tudom a gépen futó excel beállításait módosítani) vagy figyelmetlenségből vagy szándékosan nem engedélyezik a makrók futtatását a megnyitáskor. Így nem fut le a kód, hibás adatok kerülnek be egyes cellákba.
Hogyan tudnám kikényszeríteni az engedélyezést? (Persze most itt nem verbális erőszakra gondolok )
Segítségeteket előre is köszönöm!www.refujvaros.hu
-
Fferi50
őstag
válasz pirit28 #24897 üzenetére
Szia!
Bocs a hosszú hallgatás miatt! Remélem, még aktuális. Próbáld meg ezt:
Sub okesit()
Do
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = CurDir()
If .Show Then
okesito .SelectedItems(1), True
Else
If MsgBox("Nem választottál, befejezed?", vbYesNo, "Könyvtár választás") = vbYes Then Exit Sub
End If
End With
Loop
End Sub
Sub okesito(ByVal konyvtar As String, ByVal alkonyvtaris As Boolean)
Dim fs, fldr, subfldr, fld, fajl As String
Set fs = CreateObject("Scripting.FilesystemObject")
Set fldr = fs.GetFolder(konyvtar)
fajl = Dir(fldr & "\*.xls*")
Do While fajl <> ""
Workbooks.OpenText Filename:=fldr & "\" & fajl
ActiveWorkbook.SaveAs Filename:=Replace(ActiveWorkbook.FullName, ".xls", "ok.xls")
'MsgBox fajl
fajl = Dir()
Loop
If alkonyvtaris Then
Set subfldr = fldr.subfolders
For Each fld In subfldr
fajl = Dir(fld & "\*.xls*")
Do While fajl <> ""
Workbooks.OpenText Filename:=fld & "\" & fajl
ActiveWorkbook.SaveAs Filename:=Replace(ActiveWorkbook.FullName, ".xls", "ok.xls")
'MsgBox fajl
fajl = Dir()
Loop
Next
End If
End SubAz okesit makrót kell elindítani, ott ki tudod választani azt a könyvtárat, amelyben (és alkönyvtáraiban) végre szeretnéd hajtani a műveletet.
Ha a kiválasztott könyvtárban elvégzi a műveletet, akkor visszatér a választó ablak.
A makróból úgy léphetsz ki, hogy a mégse gombot választod, vagy esc-t nyomsz és a kérdésre igent válaszolsz.
Az előrehaladásra nem tettem bele információ kijelzést, a státuszsoron esetleg kiírathatod pl. a kikommentelt msgbox helyére, Application.StatusBar = fajl
akkor a végére pedig Application.StatusBar=FalseÜdv.
-
Fferi50
őstag
Szia!
Ezt nevezik szívásnak....
Ha hálózaton dolgoztok, akkor megoldás lehet, hogy felteszed egy központi helyre a fájlt, ott megadod az excelnek a szükséges beállításokat. Ezek után pedig csak az itteni excelt elindítva lehessen használni.Mivel nem indulhat el a makró, így nem tudod kikényszeríteni sem a bezárást, sem a makró indulást.
Még egy olyan ötletem van, hogy egy adott cellába beírsz egy képletet, ami egy másik cella állapotát figyeli és attól függően feltételes formázással figyelmezteted a felhasználót, hogy ez így nem lesz jó.Pld.
A1 cella képlete =ha(A2<>1;"Nincsenek bekapcsolva a makrók, hibás adatokat fogsz elmenteni, kérlek, lépj ki mentés nélkül!";"Minden OK")
A1 cella feltételes formázása képlettel, =$A$2=0, kitöltés vörös
A2 cellába pedig a Workbook_Open eseményben legelső dolgod, hogy beleírod az 1-et, a Workbook_BeforeClose eseményben pedig átírod 0 értékre.Persze ez nyilván nem garantálja, hogy bárki is ennek megfelelően cselekszik. Arra egyelőre nincs tippem, hogyan nézhető meg, hogy valaki "makróhasználat nélkül" írta felül a fájlt.
Üdv.
-
Új hozzászólás Aktív témák
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Kerékpárosok, bringások ide!
- Rövid előzetesen a S.T.A.L.K.E.R. 2: Heart of Chornobyl
- Milyen NAS-t vegyek?
- Milyen monitort vegyek?
- HP ProLiant MicroServer Gen8
- Helldivers 2 (PC, PS5)
- Milyen TV-t vegyek?
- Gördeszka topic
- Az NVIDIA szerint a partnereik prémium AI PC-ket kínálnak
- További aktív témák...
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- World of Warcraft Shadowlands Collectors edition EU EN
- Bitdefender Total Security 3év/3eszköz! - "Tökéletes védelem most kedvező áron..."
- Warhammer Online - Age of Reckoning (DE) Collectors Box (Figurával!)
- Vírusirtó, Antivirus VPN kulcsok