Telefonszámunk: 1-472-0679

Egy oszlopból "n"-edik számú szó másolása "n"-edik munkalapra

Kezdőlap Fórumok Excel programozás Egy oszlopból "n"-edik számú szó másolása "n"-edik munkalapra

10 bejegyzés megtekintése - 1-10 / 10
  • Szerző
    Bejegyzés
  • #7960
    Kisszilva
    Felhasználó

      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

      #7961
      horvimi
      Adminisztrátor

        Kedves 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ása

        Az 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.

        #7962
        verax
        Felhasználó

          Sziasztok!

          „…
          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
          verax

          #7969
          Kisszilva
          Felhasználó

            Kedves 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!

            #7970
            horvimi
            Adminisztrátor

              Szia!

              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

              #7971
              Kisszilva
              Felhasználó

                É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! 🙂

                #7972
                delila
                Felhasználó

                  Szia 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,
                  Kati

                  Szerk.: 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: 4 years telt el-delila.
                  #7974
                  delila
                  Felhasználó

                    Van 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
                    #7975
                    verax
                    Felhasználó

                      Sziasztok!

                      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
                      verax

                      #7992
                      Kisszilva
                      Felhasználó

                        Sziasztok!

                        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

                      10 bejegyzés megtekintése - 1-10 / 10
                      • Be kell jelentkezni a hozzászóláshoz.