Kopioi seuraavalle tyhjälle riville - Excel-vinkit

Sisällysluettelo

NYARCH kirjoittaa

Haluan, että Excel kopioi kokonaisen rivin uuteen Excel-laskentataulukkoon solun merkinnän perusteella. Esimerkiksi minulla on tietoja soluissa A8: AG8, haluan Excelin kopioivan koko rivin taulukkoon "a", jos H8: n arvo on "ir", ja taulukkoon "b", jos H8: n arvo on "RR". Monimutkaisin osa, eikä vain kopioitu, tarvitsen sen kopioituna seuraavaan tyhjään riviin laskentataulukossa. Noin 150 rivistä vain noin 15 kutakin tyyppiä kopioidaan uudelle arkille.

MrExcel myöntää 50 bonuspistettä jokaiselle lukijalle, joka muistaa Lotus Magazine -artikkelin, joka tarjoaa 10 upeaa vinkkiä, joissa vihje # 4 oli "Käytä lopetusnäppäintä siirtyäksesi alueen loppuun". Palaten Lotus-päiviin, voit sijoittaa soluoserin mihin tahansa tietolohkoon, painaa END ja sitten alas, ja solun osoitin ajaa alueen loppuun. Excelillä on samanlaiset toiminnot, VBA: lla on samanlaiset toiminnot, ja tämä on avain viimeisen tietorivin löytämiseen arkilta.

VBA-tekniikka on käyttää End (xlDown) -näppäintä simuloimaan End + Down -näppäintä tai End (xlUp) simuloimaan End + Up-näppäintä. Tämän näppäinyhdistelmän painaminen siirtää solun osoittimen vierekkäisen tietoalueen seuraavalle reunalle. Kuvittele, että arvoissa A1: A10 ja A20: A30 on arvoja. Aloita A1: stä. Paina End + Down ja solun osoitin siirtyy kohtaan A10. Paina End + Down ja siirryt kohtaan A20, joka on seuraavan vierekkäisen tietoalueen yläreuna. Paina End + Down ja pääset A30: lle. Olen itse asiassa hämmentynyt siitä, kuinka selittää tämä käyttäytyminen yksinkertaisella englanniksi. Kokeile vain ja näet kuinka se toimii.

Temppu, jota käytän, on aloittaa sarakkeesta A laskentataulukon viimeisellä rivillä ja painaa sitten End + Up. Tämä vie minut viimeiselle riville, jossa on tietoja. Sitten tiedän käyttävän seuraavaa riviä alas tyhjänä rivinä.

Tässä on raakavoimainen makro tämän viikon ongelman ratkaisemiseksi. Kyllä, voit varmasti tehdä tämän tyylikkäästi AutoFilterillä. Tiedot ovat tällä hetkellä Sheet1: ssä otsikot rivillä 2.

Public Sub CopyRows() Sheets("Sheet1").Select ' Find the last row of data FinalRow = Range("A65536").End(xlUp).Row ' Loop through each row For x = 2 To FinalRow ' Decide if to copy based on column H ThisValue = Range("H" & x).Value If ThisValue = "ir" Then Range("A" & x & ":AG" & x).Copy Sheets("a").Select NextRow = Range("A65536").End(xlUp).Row + 1 Range("A" & NextRow).Select ActiveSheet.Paste Sheets("Sheet1").Select ElseIf ThisValue = "RR" Then Range("A" & x & ":AG" & x).Copy Sheets("b").Select NextRow = Range("A65536").End(xlUp).Row + 1 Range("A" & NextRow).Select ActiveSheet.Paste Sheets("Sheet1").Select End If Next x End Sub

Koska Excel 2007: ssä on yli 65536 riviä, voit käyttää tätä makroa, jotta se on eteenpäin yhteensopiva. Huomaa, että käytän CELLS (rivi, sarake) RANGE-sijasta tässä:

Public Sub CopyRows() Sheets("Sheet1").Select ' Find the last row of data FinalRow = Cells(Rows.Count, 1).End(xlUp).Row ' Loop through each row For x = 2 To FinalRow ' Decide if to copy based on column H ThisValue = Cells(x, 8).Value If ThisValue = "ir" Then Cells(x, 1).Resize(1, 33).Copy Sheets("a").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Sheet1").Select ElseIf ThisValue = "RR" Then Cells(x, 1).Resize(1, 33).Copy Sheets("b").Select NextRow = Cells(Rows.Count, 1).End(xlUp).Row + 1 Cells(NextRow, 1).Select ActiveSheet.Paste Sheets("Sheet1").Select End If Next x End Sub

Vinkkejä makron käyttämiseen on ohjeaiheessa Excel VBA Editorin esittely.

Mielenkiintoisia artikkeleita...