Kezdőlap › Fórumok › Excel programozás › Egy oszlopból "n"-edik számú szó másolása "n"-edik munkalapra
- This topic has 9 hozzászólás, 4 résztvevő, and was last updated 3 years, 11 months telt el by Kisszilva.
-
SzerzőBejegyzés
-
2020-12-01-18:07 #7960
Kedves Fórumozók!
Bármiféle programozási ismeret hiányában kérnék segítséget munkahelyi feladatomhoz:
Egy Excel munkafüzetben, első oldalon adott egy összesítőm, nevek (A oszlop 293. celláig), mellettük azonosító kódok (B oszlop, 293. celláig).
A táblázatban lévő 293 nevet kellene átmásolnom: az első nevet az 1. munkalap B3-as cellájába; a második nevet a 2. munkalap B3-as cellájába és így tovább, 293 alkalommal.
Kivitelezhető-e ez, a munkalapokra való kattintás és unalmas, visszalépéses Ctrl+C – Ctrl+V feladatelvégzés nélkül?Fél napja ismerkedem a Makróval, Visual basic programozással, egy kódot már sikerült összeraknom, amivel gombnyomással létrehozok tetszőleges számú munkalapot.
(A művelet után majd a nevekhez tartozó, B oszlopban lévő kódokat is át kell másolnom ily módon, de azt a különböző munkalapok B4-es celláiba. Ezt azonban, azt hiszem, ki fogom tudni logikázni, ha a másikra akad valamiféle megoldás.)
A segítséget nagyon szépen köszönöm!
Üdvözlettel: Kisszilva
2020-12-01-19:18 #7961Kedves Szilvi!
A feladat nem csak makróval oldható meg, de mielőtt erre rátérnék…
294 munkalap? Ez nem hangzik túl jól!
Kíváncsi lennék, hogy mi is a feladat igazából, mert arra gyanakszom, hogy ezzel csak további sok, fáradtságos manuális munka lesz, vagy szét kell makrózni. Na nem okoskodok tovább, lássuk a medvét!Tegyük fel, hogy az első munkalapodat úgy hívják, hogy „Nevek”
Ebben az A1 a fejléc, utána A2-tól A293-ig vannak a nevek, B oszlopban a kódok.A Nevek lap után jönnek sorban az egyes nevekhez tartozó individuális munkalapok, 293 db. (Jesszus !)
Példaként vegyünk csak ötöt!1. Jelöld ki ezt az 5 munkalapot (Ctrl lenyomása mellett meg tudod csinálni.
Ezzel csoport módba lépsz, amit csinálsz, az minden munkalapon megtörténik.
2. kattints a B3-as cellába
3. Írde be, hogy =INDIREKT(„Nevek!A”&LAP())
4. Jobb klikk bármely csoportba fogott lapon -> Csoport szétbontásaAz egyes lapokon ott lesznek a nevek az első munkalapról.- MAGIC ! 🙂
Működése
A LAP() függvény argumentum nélkül kiadja az aktuális lap sorszámát. A Nevek az első lapod, utána a többi sorban a 2, 3, 4, 5, …
Az INDIREKT függvény szövegesen megadott hivatkozást valódi hivatkozássá tesz.
A második lapon a LAP() fv 2-t ad
A „Nevek!A”&LAP() pedig azt, hogy „Nevek!A2”, és az INDIREKT ezt a cellát címzi, és kiveszi belőle a nevet.
Mivel a LAP() fv minden lapon mást ad, egyesével nő, úgy jönnek a nevel egymás után a lapokn az A oszlpból.A B oszloppal megtehető ugyanez.
Szólj, hogy sikerült-e.
De továbbra is szkeptikus vagyok, hogy valóban ezt akarjátok-e, ezért én a helyedben feltenném ide a valós feladatot is, mert itt az elején még időben vagyunk, hogy ne legyen tervezési probléma miatt használhatatlanul bonyolult a megoldás.
2020-12-01-20:20 #7962Sziasztok!
„…
3. Írd be, hogy =INDIREKT(“Nevek!A”&LAP())
…”Egy apró módosítással…
…vagy az eredeti forrás munkalapon készíts az A1 és B1 cellákba oszlopcímeket…
…vagy horvimi képletét módosítsd: =INDIREKT(“Nevek!A”&LAP()-1)És Imre azon tanácsa is megfontolandó, hogy jó lenne a végső „miért”-et ismerni.
üdvözlettel
verax2020-12-02-08:44 #7969Kedves horvimi és verax!
Próbálom, de sajnos #NÉV? hibaüzenetet kapok, pedig próbálgattam többféleképpen (lapra való közvetlen kattintás a képlet beírása során, stb.). Pedig ez lesz az, az biztos! Az számít, hogy a képlet beírásánál egyébként a LAP függvényt nem adja be? Több más L betűset bead, de ezt nem látom (egyébként Excel 2010).
A táblázatról röviden:
Ez egy hulladékszállítási nyilvántartás. Olyan fuvarozó, aki hulladékszállítással foglalkozik, jogszabály szerint köteles a szállítások adatait (dátum, szállított mennyiség, még szállítható mennyiség az évben, fuvarlevelek sorszáma, stb.) naprakészen nyilvántartani, feltüntetve azzal együtt a hulladékok neveit, azonosító kódjait, tárolás módját, halmazállapotát, stb.
Egy ilyen táblázat a részünkről (külső környezetvédelmi megbízott) személyre szabott. Minden, a fuvarozó engedélyében szereplő hulladékra van egy munkalap, ami szinte teljesen ugyanaz, de ugye a leírt hulladékra vonatkozó paraméterek változnak. Lehet, hogy a fuvarozó (ha vezeti), életében nem kattint rá a 154. munkalapra, de legyen meg, ha pont egyszer szállítaná azt a hulladéktípust. Évek óta dolgozunk ilyen nyilvántartásokkal, de ilyen hosszút még sosem kellett készíteni. Egyébként kettő ilyen táblázatot is kell készítenem. Az egyikre már csináltam egy egy munkalapból állót, ami szerintem nem olyan rossz, de teleirkálva már azért el tud veszni benne az ember (főleg laikus), ezért szeretnék egy nagyobb terjedelműt, de letisztultabbat (vagy pont, hogy bonyolultabbat? 🙂 ).Egyébként Krisztián vagyok, a felhasználónevemben, azt hiszem, félreolvasás történhetett. 🙂
Válaszotokat várom!
2020-12-02-10:43 #7970Szia!
Hát, igen, bocsi, én benéztem a szilvát szilviának! 🙂
Most csak röviden, a LAP fv a 2013-as verzióban jelent meg.
Sajnos neked nem lesz, és ebben az esetben lehet, hogy makrót kellene írni a dologra, vagy kérsz a cégnél egy korszerűbb verziót, aminek ideje lenne ugye itt 2020 végén.. 🙂Imre
2020-12-02-12:56 #7971És ez esetben lenne arra lehetőség, hogy összerakjunk rá egy kódot?
Emellett azért benyújtom igényem a programfrissítésre is! 🙂2020-12-02-15:31 #7972Szia Krisztián!
Küldök egy kis primitív makrót.
Sub Lapokra() Dim sor As Integer, nev As String For sor = 2 To 10 nev = Sheets("Nevek").Cells(sor, 1) Sheets.Add.Name = nev Sheets(nev).Range("B3") = nev Sheets(nev).Range("B4") = Sheets("Nevek").Cells(sor, 2) Next Sheets("Nevek").Move before:=Sheets(1) End Sub
Üdv,
KatiSzerk.: a makró a Nevek lap 2. sorától a 10. sorig végzi el a feladatot. A For kezdetű sorban írd át a számokat a saját igényed szerint.
- A hozzászólás módosításra került: 3 years, 11 months telt el-delila.
2020-12-02-15:46 #7974Van egy régi makróm, ami tartalomjegyzéket készít a lapokról, ahol a lapnevek linkek, a megfelelő lap A1 cellájára ugranak.
Mód van rá, hogy egyúttal minden lapra tegyen egy linket, amivel a tartalomjegyzék lapjára ugrorhatsz vissza.Magyarázatokkal együtt küldöm a makrót.
Sub Tartalomjegyzek() 'A makró egy tetszőleges nevű munkalapot szúr be a meglévőek elé. 'Erre a munkalapra egy tartalomjegyzéket készít a többi munkalapot listázva, 'hivatkozást is elhelyezve, amik az egyes munkalapok egy megadott cellájára mutatnak. 'A lapokra vissza logikájú linket helyez el kérésre, egy megadott cellába. Dim TartalomLapnev As String, VisszaSzovege As String, VisszaHelye As String Dim aktiv As Integer, Vissza As Integer 'Megkérdezi a felhasználótól, mi legyen a tartalomjegyzék munkalapjának a neve TartalomLapnev = InputBox("Mi legyen a tartalomjegyzék munkalapjának neve?", "Tartalomjegyzék munkalapjának neve") 'Megkérdezi, szeretnénk-e vissza gombot elhelyezni a munkalapokon? Vissza = MsgBox("Legyen-e egy vissza logikájú link a munkalapokon?", 4, "Vissza logikájú link") 'Ha igen, kérdezze meg, mi legyen a szöveg? pl. Alt+0171:« 'és hol legyen az egyes lapokon If Vissza = 6 Then VisszaHelye = InputBox("Hova kerüljön a vissza logikájú link a lapokon?" & vbLf & "Pl.: A1", "Vissza logikájú link helye") VisszaSzovege = InputBox("Mi legyen a vissza logikájú link felirata?" & vbLf & "Pl. « (bal Alt+0171)", "Vissza logikájú link felirata") End If 'Szúrjon be egy új munkalapot a meglévők elé a legelső helyre. ActiveWorkbook.Sheets.Add Before:=Worksheets(1) 'Adja az új munkalapnak a felhasználó által megadott nevet Worksheets(1).Name = TartalomLapnev 'Menjen végig a munkalapokon ... For aktiv = 2 To ActiveWorkbook.Sheets.Count '... és írja ezeknek a nevét sorszámmal ellátva az újonnan létrehozott lapra. Worksheets(1).Cells(aktiv, 1).Value = aktiv - 1 'sorszám Worksheets(1).Cells(aktiv, 2).Value = Worksheets(aktiv).Name 'lapnév 'A munkalapok neveit tegye linkké With Worksheets(1) 'itt adhatjuk meg, hogy az egyes lapokon melyik cellára mutasson a link .Hyperlinks.Add Anchor:=.Cells(aktiv, 2), Address:="", _ SubAddress:="'" & Worksheets(aktiv).Name & "'!A1", TextToDisplay:=Worksheets(aktiv).Name End With 'Ha kértünk Vissza linket, hozza létre a vissza logikájú linket a megadott cellába If Vissza = 6 Then Worksheets(aktiv).Range(VisszaHelye).Value = VisszaSzovege With Worksheets(aktiv) 'itt adhatjuk meg, hogy a Vissza link melyik cellára álljon az első lapon .Hyperlinks.Add Anchor:=.Range(VisszaHelye), Address:="", _ SubAddress:="'" & TartalomLapnev & "'!B2", TextToDisplay:=VisszaSzovege .Range(VisszaHelye).Font.Bold = True End With End If Next aktiv End Sub
2020-12-02-16:30 #7975Sziasztok!
Kisszilva!
Nagyobb összegekben is mernék rá fogadni, hogy egy-egy hulladék fajta összes tulajdonságának leírásához nem szükséges egy munkalap teljes tárolókapacitása.
Az adatokat a legritkább esetben célszerű a megjelenítésük formátumában tárolni.
Ne használj 294 munkalapot! Használj egy(1!) „HULLADÉK FAJTÁK” munkalapot és azon egy 294 soros táblázatot!és ha már „… szinte teljesen ugyanaz,…”
Használj egy „HULLADÉK ŰRLAP” sablon munkalapot és az előbbi táblázatból emeld át az adminisztrációhoz szükséges adatsort! Ehhez még makró sem kell. Néhány képlettel megoldható a feladat.üdvözlettel
verax2020-12-04-09:03 #7992Sziasztok!
Nagyon köszönöm a sok segítséget. Kérek egy picike időt, míg letesztelem őket, megismerkedem velük, és mindenképpen jelentkezem a fejleményekkel. 🙂
Közben más jellegű munkám is akadt, az utóbbi két napban azzal foglalkoztam, így a tesztelés még elmaradt. De nemsoká…!Üdv: Krisztián
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.