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.
Sarakkeet riveiksi
11
3766
Vastaukset
- 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
@Kundekunde 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
@KundeKun 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
- 1572507
Kun viimeksi kohtasitte/näitte
Mitä olitte tekemässä? Millainen ympäristö oli? Löydetään toisemme...1341935Olet kyllä vaarallisen himokas
Luova, kaunis, määrätietoinen, pervo, mielenkiintoinen, kovanaama, naisellinen ja erikoinen.1061785- 721460
- 761398
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 tunnet211357- 2271100
- 71890
Miksi homous puhuttaa konservatiiveja vuodesta toiseen?
Kysymykseen on vastattukin Kansanlähetyksen osalta: "Miksi sukupuoleen ja seksuaalisuuteen liittyvät asiat ovat konserv220886- 54857