Makrolla solut osiin ja taulukoksi

Anonyymi-ap

Pitäisi saada tälläinen makro, enkä itse osaa

Makro jakaa solun osiin ja laittaa tiedot allekkain

Solun sisällä oleva erotinmerkki vaihtelee tilanteittain ja solualueen koko ja sijainti vaihtelee
Yhden kokonaisuuden / tilanteen sisällä kaikki erotinmerkit ovat samat
Yhden solun sisältö ( vaikka B2) on esim.
tammi;helmi;maalis ja määrä vaihtelee
Toisen solun sisältö (vaikka B3) on esim.
maanantai;tiistai;keskiviikko ja määrä vaihtelee
Ja rivimäärä vaihtelee

Makron vastaus olisi:
tammi
helmi
maalis
Välissä yksi tyhjä solu
maanantai
tiistai
keskiviikko

Kun käyttäjä käynnistää makron, hän valitsee inputboxin avulla:
erotin merkin
ja
käsiteltävän sarakkeen, josta makro osaisi ottaa kaikki täytetyt solut käsittelyyn mukaan
ja
Solun, josta alkaen vastaukset tulevat

Löysin netistä makroja, jotka toimivat osittain kuvatun mukaan
Yksi makro tekee juuri noin kuten kuvasin, mutta käyttäjä ei voi tehdä mitään valintoja.
Toisessa makrossa käyttäjä voi valita erotinmerkin inboxilla, mutta makro jakaa vain yhden solun osiin eikä muita valintoja voi tehdä

Tällä palstalla on ollut Excelin vba-koodauksen superosaajia.
Voisitteko tehdä tuollaisen makron?

Kovasti kiitoksia jo etukäteen

1

817

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • Anonyymi

      Tarvittavat lähtötidot valitaan tässä InputBoxien sijaan UserFormilla. Tarvitaan kolme TextBoxia ja CommandButtonia (ja oman mielen mukaan muuta):
      TextBox1 - erotin
      TextBox2 - alue, jolta tiedot luetaan. Alueen voi valita CommandButton1:llä
      TextBox3 - solu, josta lähtien tulostetaan. Alueen voi valita CommandButton2:lla
      CommandButton1 - tulostaa rivit alkaen
      CommandButton2 - päivittää luettavaksi alueeksi valittuna olevan alueen
      CommandButton3 - päivittää tulostuksen alkamaan valittuna olevasta solusta

      UserForm1 aukeaa makrolla riveiksi ja jää näkyviin kunnes se suljetaan. Oletuksena tulostettavaksi valitaan rivit, jotka ovat valittuna kun makro käynnistetään ja tulostus tulee siitä yhden rivin päähän.

      Formin moduliin:

      Private Sub CommandButton1_Click()
          tee
      End Sub

      Private Sub CommandButton2_Click()
          UserForm1.TextBox2.Text = osoite(Selection)
      End Sub

      Private Sub CommandButton3_Click()
          UserForm1.TextBox3.Text = tulostusosoite(Selection)
      End Sub

      Private Sub UserForm_Activate()
          UserForm1.TextBox2.Text = osoite(Selection)
          tulostus = osoite(Cells(Selection.Row   Selection.Rows.Count   1, Selection.Column))
          Debug.Print tulostus
          UserForm1.TextBox3.Text = tulostus
      End Sub

      Tavalliseen moduliin:

      Sub riveiksi()
          UserForm1.TextBox2.Text = osoite(Selection)
          UserForm1.TextBox3.Text = tulostusosoite(Cells(Selection.Row   Selection.Rows.Count   1, Selection.Column))
          UserForm1.Show False
      End Sub

      Function osoite(r As Range) As String
          osoite = WorksheetFunction.Substitute(r.Address, "$", "")
      End Function

      Function tulostusosoite(r As Range) As String
          o = osoite(Selection)
          l = InStr(o, ":") - 1
          If l < 0 Then l = Len(o)
          tulostusosoite = Left(o, l)
      End Function

      Sub tee()
          erotin = UserForm1.TextBox1.Text
          Set alue = Range(UserForm1.TextBox2.Text)
          Set tulos = Range(UserForm1.TextBox3.Text)
          r = tulos.Row
          c = tulos.Column
          For Each s In alue
              t = Split(s, erotin)
              For i = 0 To UBound(t)
                  Cells(r, c) = t(i)
                  r = r   1
              Next i
              r = r   1
          Next s
      End Sub

    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Porvarimediat paniikissa demareiden huiman kannatuksen vuoksi

      Piti sitten keksiä "nimettömiin lähteisiin" perustuen taas joku satu. Ovat kyllä noloja, ja unohtivat sen, että vaalit
      Maailman menoa
      21
      4897
    2. Nyt tuli Suomen somaleista todella ikävää faktaa

      sillä osa somalivanhemmista lähettää lapsiaan kotimaahansa kurinpitolaitoksiin, joissa heitä pahoinpidellään. Illan MOT
      Maailman menoa
      391
      4449
    3. Häirintäkohun keskellä olevalta kansanedustajalta Jani Kokolta (sd) rajua tekstiä somessa.

      https://www.is.fi/politiikka/art-2000011772322.html Ajaakohan tämä SDP:n kansanedustaja Jani Kokko oikein täysillä valoi
      Maailman menoa
      148
      3789
    4. KATASTROFI - Tytti Tuppurainen itse yksi pahimmista kiusaajista!!!

      STT:n lähteiden mukaan SDP:n eduskuntaryhmän puheenjohtaja Tytti Tuppurainen on käyttäytynyt toistuvasti epäasiallisesti
      Maailman menoa
      115
      2825
    5. Kommentti: oikeuslaitos korvattava SDP:n johdolla

      Näkisin että Suomessa tuomiovalta pitäisi olla demareiden johtoportaalla. Koska porvarimedia säestettynä persujen kirku
      Maailman menoa
      10
      2457
    6. Mikä siinä on ettei persuille leikkaukset käy?

      On esitetty leikkauksia mm. haitallisiin maataloustukiin, kuin myös muihin yritystukiin. Säästöjä saataisiin lisäksi lei
      Maailman menoa
      21
      2272
    7. Lindtman haluaa leikata Kela-korvauksista...oho!

      Antti Lindtman sanoo Kauppalehdessä, että vuodesta 2028 voi tulla erittäin hankala, mikäli nykyinen hallitus ei tee riit
      Maailman menoa
      151
      1952
    8. Huono päivä

      Tänään on ollut tosi raskas päivä töissä. Tekis mieli itkeä ja huutaa. En jaksa just nyt mitään. Minä niin haluaisin ja
      Ikävä
      18
      1938
    9. Onko kaivattusi spesiaali?

      Millä tavalla ja miten?
      Ikävä
      123
      1880
    10. Typeryyttä

      Se on kummallista, kun kaksi ihmistä tuntee selittämätöntä vetoa toisiinsa, mutta eivät vain pääse toistensa luokse. Mik
      Ikävä
      124
      1439
    Aihe