Sarakkeet riveiksi

Alfkeke

Kuinka tapahtuu usean sarakkeen muuttaminen riveiksi Excel 2007:llä?
Minulla on tavallaan vain yksi sarake esim. A.ssa, jossa on 15 numeron rypäs ensin allekkain, sitten yksi solu tyhjää ja sitten taas 15 numeroa allekkain ja taas yksi tyhjä solu jne.
Koko pitkä pötkö kaikki A-sarakkeessa.
Olisin nyt halunnut kunkin 15 numeron pötkön yhdeksi riviksi A.lle vaakaan, sitten seuraavat 15 numeroa riviksi B:lle vaakaan jne.
Voisiko joku ystävällisesti kertoa kuinka tämä helpoimmin tapahtuu.

11

3766

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • loogisempi

      ensin. Onko siis tarkoitus että solujen A1:A15 tiedot siirretään kaikki soluun esim. A1 pötköksi ja A17:A32 tiedot B1:seen pötköksi jne...?
      Vai oliko tarkoitus loogisempi että ensimmäiset 15 siirretään A1:O1 ja seuraavat A2:O2?

      • Alfkeke

        Tarkoitus on, että A1:A15 tiedot siirretään A1:O1, A17:A32 siirretään B1:O1 jne.


      • Alfkeke
        Alfkeke kirjoitti:

        Tarkoitus on, että A1:A15 tiedot siirretään A1:O1, A17:A32 siirretään B1:O1 jne.

        Siis A1:A15 --> A1:O1, A17:A32 --> A2:O2 jne
        eli ihan niinkuin oli jälkimmäinen vaihtoehtosi.


      • transponoija
        Alfkeke kirjoitti:

        Siis A1:A15 --> A1:O1, A17:A32 --> A2:O2 jne
        eli ihan niinkuin oli jälkimmäinen vaihtoehtosi.

        koodia tekisin näin.
        Klikkaa solua A16. Avaa "Ikkuna" > "Kiinnitä ruudut"
        Valitse hiirellä alue B1:P1. Klikkaa hiirellä ylhäältä "Kaavariviä" ja kirjoita sinne =TRANSPONOI(A1:A15)
        Paina Ctrl Vaihto (heti Ctrl yläpuolella oleva "nuoli ylös") pohjaan ja paina ENTER (Excel tekee matriisikaavan). Kaava näyttää nyt tältä {=TRANSPONOI(A1:A15)}
        Klikkaa solua B1 ja kopioi kaava B2:seen vetämällä oikean alakulman pisteestä alas
        Valitse hiirellä alue B2:P2 - klikkaa kaavariviä ylhäältä - näet että alue A2:A16 ympäröity sinisellä viivalla
        Tartu siihen siniseen viivaan hiirellä kiinni ja vedä se alaspäin seuraavan 15 luvun päälle A17:A31.
        Paina taas Ctrl Vaihto pohjaan ja ENTER
        Ja taas kopioit kaavan B2 > B3:seen ja valitset hiirellä B3:P3 ja vedät sinisen alueen uuden ryhmän päälle ja Ctrl Vaihto pohjaan ja ENTER. Jne...
        Tuo alun Kiinnitä ruudut on sitä varten että voit rullata sivua alaspäin ja nähdä aina uudet ryhmät, mutta yläosa jonne transponointi tulee pysyy paikoillaan.
        Lopuksi avaa "Ikkuna" > "Vapauta ruudut"
        Lopuksi poista sarake A
        Toinen konsti on valita alue A1:A15 hiirellä, valita solu B1 ja Muokkaa > Liitä määräten (avautuvassa ikkunassa ruksaa kohdat "Arvot" ja sieltä alhaalta "Transponoi" > OK
        Tämän joutuu tekemään joka kerta näin tehdessä. Ei voi käyttää Toista-toimintoa (Ctrl Y)
        Vielä tuosta matriisikaavasta. Aina kun muokkaat solua jossa kaava, muista painaa Ctrl Vaihto pohjaan ja ENTER. Muutoin kaava ei toimi.


      • transponoija
        transponoija kirjoitti:

        koodia tekisin näin.
        Klikkaa solua A16. Avaa "Ikkuna" > "Kiinnitä ruudut"
        Valitse hiirellä alue B1:P1. Klikkaa hiirellä ylhäältä "Kaavariviä" ja kirjoita sinne =TRANSPONOI(A1:A15)
        Paina Ctrl Vaihto (heti Ctrl yläpuolella oleva "nuoli ylös") pohjaan ja paina ENTER (Excel tekee matriisikaavan). Kaava näyttää nyt tältä {=TRANSPONOI(A1:A15)}
        Klikkaa solua B1 ja kopioi kaava B2:seen vetämällä oikean alakulman pisteestä alas
        Valitse hiirellä alue B2:P2 - klikkaa kaavariviä ylhäältä - näet että alue A2:A16 ympäröity sinisellä viivalla
        Tartu siihen siniseen viivaan hiirellä kiinni ja vedä se alaspäin seuraavan 15 luvun päälle A17:A31.
        Paina taas Ctrl Vaihto pohjaan ja ENTER
        Ja taas kopioit kaavan B2 > B3:seen ja valitset hiirellä B3:P3 ja vedät sinisen alueen uuden ryhmän päälle ja Ctrl Vaihto pohjaan ja ENTER. Jne...
        Tuo alun Kiinnitä ruudut on sitä varten että voit rullata sivua alaspäin ja nähdä aina uudet ryhmät, mutta yläosa jonne transponointi tulee pysyy paikoillaan.
        Lopuksi avaa "Ikkuna" > "Vapauta ruudut"
        Lopuksi poista sarake A
        Toinen konsti on valita alue A1:A15 hiirellä, valita solu B1 ja Muokkaa > Liitä määräten (avautuvassa ikkunassa ruksaa kohdat "Arvot" ja sieltä alhaalta "Transponoi" > OK
        Tämän joutuu tekemään joka kerta näin tehdessä. Ei voi käyttää Toista-toimintoa (Ctrl Y)
        Vielä tuosta matriisikaavasta. Aina kun muokkaat solua jossa kaava, muista painaa Ctrl Vaihto pohjaan ja ENTER. Muutoin kaava ei toimi.

        tekijä kokonaan mainitsematta.
        Sitten kun olet saanut transponoitua kaikki luvut riveille, valitse koko alue hiirellä ja "Kopioi".Klikkaa solua B1 ja "Liitä määräten" (ruksaa kohta "Arvot" > OK).
        Ilman tätä manooveriä, jos poistat sarakkeen A, kaavat ei pelaakkaan kun kaavojen "alueita" ei enää ole.


      • Alfkeke
        transponoija kirjoitti:

        tekijä kokonaan mainitsematta.
        Sitten kun olet saanut transponoitua kaikki luvut riveille, valitse koko alue hiirellä ja "Kopioi".Klikkaa solua B1 ja "Liitä määräten" (ruksaa kohta "Arvot" > OK).
        Ilman tätä manooveriä, jos poistat sarakkeen A, kaavat ei pelaakkaan kun kaavojen "alueita" ei enää ole.

        Ei muuta kuin hommiin, kunhan pääsen tästä kotia.


    • Calcilla hieman katselin, niin eihän tuohon mitään valmista nappia ole, mutta näinkin sen saa tehtyä (tietyin rajoituksin):

      1) Lisää joku numeroissa esiintymätön yksi merkki niihin ryhmien välissä oleviin soluihin, käytin y-kirjainta. (oikein filmaattisesti tässä voisi lisätä uuden ylärivin ja a1-soluun myös sen merkin, jolloin kaikki ryhmät olisivat samalla "viivalla").

      2) Valitse koko alue ja yhdistä solut tuoden aineisto ensimmäiseen soluun. (vähän rivon näköinen tilanne, ei pidä säikähtää, mikäli koko aineisto on vähäisempi kuin yhden solun kapasiteetti, joka on ehkä yli 60 kt?)

      3) Yhdistetty solu valittuna suorita "Teksti sarakkeisiin" käyttäen välimerkkiä erottimena, siis minulla y)
      Nyt soluissa b1, c1 jne pitäisi olla kukin ryhmä

      4) Poista solun yhdistäminen, jolloin A1 on melko normaali, mutta sisältää ensimmäiset 15 lukua.

      5) Valitse koko täytetty ylärivin osuus ja leikkaa CTRL-X:llä

      6) Napsauta erikseen kerran A1 solua ja Liitä määräten transponoiden. Nyt pitäisi ryhmät olla ensimmäisessä sarakkeessa tiivistettyinä. Jos A1 solussa näyttäisi "puuttuvan" välilyönti ensimmäisenä merkkinä, mutta muissa soluissa se on, niin sen voi lisätä helpottaakseen jälkisiivousta.

      7) Valitse koko A-sarake yläotsikosta ja suorita "Teksti sarakkeisiin" (siis toistamiseen tässä ohjeessa) käyttäen välilyöntimerkkiä erottimena. Luvut näkyvät nyt omissa soluissaan lukuina, mutta A-sarakkeessa ne ovat ryhminä. Jos ylin rivi poikkeaa muista, niin sitä voi siirtää yhden solun oikealle kopiointitoiminnoilla. Vrt. edellä välilyöntimerkin lisäys tai alussa y:n lisäys lisätylle yläriville.

      8) A-sarakkeen voi tyhjentää tai poistaa, jos siellä tekstinä esiintyvät lukuryhmät häiritsevät.


      No eihän tämä ihan yksinkertainen ohje ole, mutta tässä yksittäistä manipulointia on oikeastaan vain nuo y-merkkien lisäykset, jonka jälkeen lähes kaikki toimet ovat aluekohtaisia (="helppoja", "nopeita").

      • Jos käyttää y-merkkiä lisätyssä a1-solussa, niin solujen yhdistämisen purkamisen jälkeen, vaiheessa 4, tulee a1 lopuksi tyhjentää.


      • tuttumies kirjoitti:

        Jos käyttää y-merkkiä lisätyssä a1-solussa, niin solujen yhdistämisen purkamisen jälkeen, vaiheessa 4, tulee a1 lopuksi tyhjentää.

        ei väliä sarjojen pituudella eikä sillä miten monta tyhjää välissä
        pitäisi tietenkin tyhjentää noi oikealla olevat sarakkeet ekaksi vanhoista tiedoista, mutta jääköön se kysyjän tehtäväksi
        moduuliin...

        Sub Transponoi()
        Dim Vika As Long
        Dim Alue As Range
        Dim Solut As Range
        On Error Resume Next
        Rows("1:1").Insert Shift:=xlDown
        Set Solut = Range("A:A").SpecialCells(xlCellTypeConstants)
        For Each Alue In Solut.Areas
        Vika = Range("B65336").End(xlUp).Offset(1).Row
        Range("B" & Vika).Resize(, Alue.Count) = Application.Transpose(Alue)
        Next Alue
        Rows("1:1").Delete
        Columns("A:A").Delete
        End Sub

        Keep Excelling
        @Kunde


      • kunde kirjoitti:

        ei väliä sarjojen pituudella eikä sillä miten monta tyhjää välissä
        pitäisi tietenkin tyhjentää noi oikealla olevat sarakkeet ekaksi vanhoista tiedoista, mutta jääköön se kysyjän tehtäväksi
        moduuliin...

        Sub Transponoi()
        Dim Vika As Long
        Dim Alue As Range
        Dim Solut As Range
        On Error Resume Next
        Rows("1:1").Insert Shift:=xlDown
        Set Solut = Range("A:A").SpecialCells(xlCellTypeConstants)
        For Each Alue In Solut.Areas
        Vika = Range("B65336").End(xlUp).Offset(1).Row
        Range("B" & Vika).Resize(, Alue.Count) = Application.Transpose(Alue)
        Next Alue
        Rows("1:1").Delete
        Columns("A:A").Delete
        End Sub

        Keep Excelling
        @Kunde

        Kun ei ole tullut luettua edes VBA:n perusteita, niin ei tuosta selvää saa (-; Ei sillä, että minun tai edes aloittajan tarvitsisikaan. Ohjelmiahan tässä koko ajan käytetään, eikä niistä ole selvyyttä koodin osalta, että mitä ne ovat syöneet, kunhan toimivat.

        Mutta siis esim. tuo Alue näyttäisi tyhjältä alueelta, kun sille ei tule missään arvoa. Ja For...Next silmukan poistumisehto? Oliskohan se tuo virheenkäsittelylause?

        No joo, ehkä tämä riittää tällä erää tietämättömyyteni esittelyyn. Jatkan joskus paremmalla ajalla (-;


      • tuttumies kirjoitti:

        Kun ei ole tullut luettua edes VBA:n perusteita, niin ei tuosta selvää saa (-; Ei sillä, että minun tai edes aloittajan tarvitsisikaan. Ohjelmiahan tässä koko ajan käytetään, eikä niistä ole selvyyttä koodin osalta, että mitä ne ovat syöneet, kunhan toimivat.

        Mutta siis esim. tuo Alue näyttäisi tyhjältä alueelta, kun sille ei tule missään arvoa. Ja For...Next silmukan poistumisehto? Oliskohan se tuo virheenkäsittelylause?

        No joo, ehkä tämä riittää tällä erää tietämättömyyteni esittelyyn. Jatkan joskus paremmalla ajalla (-;

        EI, EI ja EI
        yleensä pyrin tekemään universaalisia koodeja, jotka toimivat pikku muutoksilla miten, missa ja milloin vaan...
        niin oli kyse tälläkin kertaa...

        ensin määritellään jotakin tietoa sisältävä solualue
        Set Solut = Range("A:A").SpecialCells(xlCellTypeConstants)

        alue saa tiedot Solut.Areas (kannattaa luke alueen määritykset ohjeesta (löytyyköhän?)- lyhyesti siis tyhjä solu solun ympärillä ):- )
        joka taas saa tiedot Range("A:A").SpecialCells(xlCellTypeConstants) (kaikki tietoa sisältävät solut sarakkeesta)

        For Each Alue In Solut.Areas
        eli kaikki yhtenäiset alueet sarakkeessa loopataan

        Vika = Range("B65336").End(xlUp).Offset(1).Row
        hakee viimeisen rivin sarakkeesta B

        Range("B" & Vika).Resize(, Alue.Count) = Application.Transpose(Alue)
        taasen määrittelee transponoitavan "kopioaluuen" oikean kokoiseksi lähde sarakkeesta

        ja lopuksi sitten poistetaan tyhjät rivit...

        eli jos tarve esim sarakkeelle K...

        Sub Transponoi()
        Dim Vika As Long
        Dim Alue As Range
        Dim Solut As Range
        On Error Resume Next
        Rows("1:1").Insert Shift:=xlDown
        Set Solut = Range("K:K").SpecialCells(xlCellTypeConstants)
        For Each Alue In Solut.Areas
        Vika = Range("L65336").End(xlUp).Offset(1).Row
        Range("L" & Vika).Resize(, Alue.Count) = Application.Transpose(Alue)
        Next Alue
        Rows("1:1").Delete
        Columns("K:K").Delete
        End Sub

        KEEP EXCELLING!
        @Kunde


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

    Luetuimmat keskustelut

    1. Anna minulle anteeksi

      Anna minulle anteeksi. Minä pyydän.
      Ikävä
      159
      2366
    2. Kun viimeksi kohtasitte/näitte

      Mitä olitte tekemässä? Millainen ympäristö oli? Löydetään toisemme...
      Ikävä
      136
      1895
    3. Olet kyllä vaarallisen himokas

      Luova, kaunis, määrätietoinen, pervo, mielenkiintoinen, kovanaama, naisellinen ja erikoinen.
      Ikävä
      106
      1725
    4. Mikä on hän on ammatiltaan?

      Vai tiedätkö mitä kaivattusi tekee työkseen?
      Ikävä
      74
      1364
    5. Anna vielä vähän vihreää valoa

      Teen sitten siirtoni, nainen. Tiedän, että olet jo varovaisesti yrittänyt lähestyä, mutta siitä on jo aikaa. Jos tunnet
      Ikävä
      21
      1337
    6. Mitä ajattelit silloin kun

      Löysit hänet?
      Ikävä
      72
      1322
    7. Syksyinen aamuketju suden

      Hyvää huomenta ja kaunista syyspäivää. 🌞🍁🍂☕
      Ikävä
      228
      1086
    8. Oletko tutustunut muihin

      Samalla tavalla kuin häneen?
      Ikävä
      71
      874
    9. Miksi homous puhuttaa konservatiiveja vuodesta toiseen?

      Kysymykseen on vastattukin Kansanlähetyksen osalta: "Miksi sukupuoleen ja seksuaalisuuteen liittyvät asiat ovat konserv
      Luterilaisuus
      213
      830
    10. Uskotko että kohdataan vielä?

      Kysymys otsikossa, aloitukseen ei muuta lisättävää.
      Ikävä
      46
      800
    Aihe