Telefonszámunk: 1-472-0679

Gyors szöveg csere

Kezdőlap Fórumok Excel témák Gyors szöveg csere

12 bejegyzés megtekintése - 1-12 / 12
  • Szerző
    Bejegyzés
  • #3020
    madpapa
    Felhasználó

      Sziasztok!

      A következő lenne a bajom. Szeretnék bizonyos egy cellában levő karaktersorozatot módosítani anélkül, hogy túlzottan sokat kelljen gépelnem, mivel az adott bizonyos mértékben változó karaktersorozatból sok van. No nézzük hogy mire is gondolok:

      D4 2400 16GB C16 Corsair Ven K4 : ez van egy cellában
      DDR4 / 2400 16GB CL16 Corsair Vengeance Kit4 : ezt szeretném

      Vagy a másik:

      D4 2800 32GB C14 Corsair Dom K2 : ez van a cellában
      DDR4 / 2800 32GB CL14 Corsair Dominator Kit2 : ezt szeretném

      És ugye még több verzióban is előfordulhat értelemszerűen. Ez csak 2 példa.

      Nyilván cserékkel megoldható, de az macerás. Valamilyen makróban gondolkoznék ami gyorsan megcsinálja az átalakítást. Vagy szövegfüggvényekkel oldható meg talán.
      Azért teszem fel, mert hátha találkozott már valaki hasonlóval és ránézésre van egy egyszerű ötlete.

      Köszi!

      • A témakör módosításra került: 8 years, 1 month telt el-madpapa.
      #3022
      horvimi
      Adminisztrátor

        Szia!

        ha össze tudsz rakni egy két oszlopos megfeleltetési táblát, hogy mit mire kell cserélni, akkor abból már lehetne dolgozni.

        Összedobtam neked egy UDF-et.
        Egy külön munkafüzetben tedd egy modulba, majd mentsd el.
        A munkafüzet legyen nyitva, úgy tudod használni.

        Function subst_multiple(originalstring As String, findstrings As Range, subststrings As Range) As String
        Dim f As String
        Dim r As String
        Dim i As Long
        
            If findstrings.Rows.Count = subststrings.Rows.Count Then
                For i = 1 To findstrings.Rows.Count
                    f = findstrings.Cells(i)
                    r = subststrings.Cells(i)
                    If InStr(originalstring, f) <> 0 Then
                        originalstring = Replace(originalstring, f, r)
                    End If
                    
                Next
                
                subst_multiple = originalstring
            Else
                subst_multiple = "#Find and replace arrays must have the same size!"
            End If
        End Function

        Többszörös csere

        Majd szólj, hogy milyen…

        Imre

        • A hozzászólás módosításra került: 8 years, 1 month telt el-horvimi.
        #3032
        madpapa
        Felhasználó

          Nagyon szépen köszönöm a segítséget, de még nem tudtam elindítani. 🙂
          A képen látszik hogy hová tettem be. Hogy tudom működésre bírni?

          Attachments:
          You must be logged in to view attached files.
          #3035
          horvimi
          Adminisztrátor

            Jó helyre tetted 🙂
            Úgy működik, mint egy Excel munkalap függvény, tehát egy üres cellába állsz, és utána
            Egyik lehetőség, hogy:
            1. megnyomod az fx gombot a függvény beillesztéséhez
            2. kategória: felhesználói
            3. Ott kiválasztod ezt a függvényt
            4. kattintgatással megadod a paramétereket úgy, ahogy a fenti képen csatoltam.

            Másik, gyorsabb lehetőség
            1. Beírod, hogy: =subst_multiple(
            2. fx vagy Ctrl+A
            3. Megadod a paramétereket

            ha megvan egy cella, akkor lehúzhatod az oszlopban, ha a módosítandó szövegeid oszlopban vannak.

            FONTOS Info: A cserélendő listának egyedinek kell lennie. Ha lenne két vagy több olyan, amik ugyanúgy kezdődnek, vagy részben tartalmazzák egymást, akkor nem biztos, hogy jó cserét csinál.

            Ha ilyenbe ütköznél, akkor kicsit módosítani kell a függvényt, hogy az első cserénél ugorjon ki a ciklusból, illetve a cserélendőket hosszuk szerint növekvőbe kell rendezni.

            Meg még lehet vele egyéb gond is, ez a használat során fog kiderülni.
            Kezdetnek biztos jó lesz.

            ???

            Imre

            • A hozzászólás módosításra került: 8 years, 1 month telt el-horvimi.
            • A hozzászólás módosításra került: 8 years, 1 month telt el-horvimi.
            #3038
            madpapa
            Felhasználó

              Én is így gondoltam hogy működnie kellene. Így is gépeltem be. Gondolom ilyenkor fel kellene dobnia azt az ablakot amit bemásoltál. Nekem nem dob fel semmit. 🙁

              #3039
              madpapa
              Felhasználó

                Aha, most már rendben van 😀

                #3040
                madpapa
                Felhasználó

                  Azt kérdezném, hogy ugye ez szóközzel tagolt stringekre igaz? Miben változna, ha pl. a string egyben van, azaz nincsen szóközzel tagolva?

                  #3041
                  horvimi
                  Adminisztrátor

                    Nem értem pontosan mit kérdezel, de a megtalált szövegrészt kicseréli arra, ami a párja a segédtáblában. Szóközökkel nem foglalkozik.
                    Legegyszerűbb,ha kipróbálsz mindenféle esetet, és ha kérdés merül fel, akkor szólj.
                    Legyen minta munkafüzet, amiben próbálkozol.

                    Imre

                    #3042
                    madpapa
                    Felhasználó

                      Kipróbáltam és működik szünet nélküli stringnél is.

                      #3043
                      madpapa
                      Felhasználó

                        bár így nem tökéletes

                        #3044
                        madpapa
                        Felhasználó

                          Ennél pl. a végén a CL16 után még bejön a GB. CMK16GX4M2A2400C16 —> Corsair Vengeance 16GB DDR4 kit 2400MHz CL16 GB

                          Attachments:
                          You must be logged in to view attached files.
                          #3046
                          madpapa
                          Felhasználó

                            De aztán egy kis átcsoportosítással megoldottam.

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