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

3867

    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. Useita puukotettu Tampereella

      Mikäs homma tämä nyt taas on? "Useaa henkilöä on puukotettu Tampereen keskustassa kauppakeskus Ratinan lähistöllä." ht
      Tampere
      203
      3792
    2. Kuka rääkkää eläimiä Puolangalla?

      Poliisi ampui toistakymmentä nälkiintynyttä eläintä Puolangalla Tilalta oli ollut karkuteillä lähes viisikymmentä nälkii
      Puolanka
      59
      2379
    3. Asiakas iski kaupassa varastelua tehneen kanveesiin.

      https://www.iltalehti.fi/kotimaa/a/33a85463-e4d5-45ed-8014-db51fe8079ec Oikein. Näin sitä pitää. Kyllä kaupoissa valtava
      Maailman menoa
      391
      2286
    4. Leipivaaran päällä on kuoleman hiljaista.

      Suru vai suuri helpotus...
      Puolanka
      47
      2193
    5. Meneeköhän sulla

      oikeasti pinnan alla yhtä huonosti kuin mulla? Tai yhtä huonosti mutta jollain eri tyylillä? Ei olisi pitänyt jättää sua
      Ikävä
      32
      1521
    6. Muutama kysymys ja huomio hindulaisesta kulttuurista.

      Vedakirjoituksia pidetään historiallisina teksteinä, ei siis "julistuksena" kuten esimerkiksi Raamattua, vaan kuten koul
      Hindulaisuus
      513
      1287
    7. Jos ei tiedä mitä toisesta haluaa

      Älä missään nimessä anna mitään merkkejä kiinnostuksesta. Ole haluamatta mitään. Täytyy ajatella toistakin. Ei kukaan em
      Ikävä
      93
      1261
    8. Määpä tiijän että rakastat

      Minua nimittäin. Samoin hei! Olet mun vastakappaleeni.
      Ikävä
      56
      1237
    9. Koska näit kaivattusi viimeksi

      Milloin tapasit rakkaasi? Ja etenikö suhde yhtään?
      Ikävä
      68
      1129
    10. Jumala puhui minulle

      Hän kertoi sinusta asioita, joiden takia jaksan, uskon ja luotan. Hän kuvaili sinua minulle ja pakahduin onnesta kuulles
      Ikävä
      123
      1108
    Aihe