Kopijuoti į kitą tuščią eilutę - „Excel“ patarimai

Turinys

NYARCH rašo

Noriu, kad „Excel“ nukopijuotų visą eilutę į naują „Excel“ darbalapį pagal langelio įrašą. Pavyzdžiui, aš turiu duomenų langeliuose A8: AG8, noriu, kad „Excel“ nukopijuotų visą eilutę į „a“ lapą, jei H8 reikšmė yra „ir“, ir „b“ lapą, jei H8 reikšmė yra „RR“. Sudėtingiausia dalis, o ne tik nukopijuota, man reikia ją nukopijuoti į kitą tuščią darbalapio eilutę. Iš maždaug 150 kiekvienos rūšies eilučių iš tikrųjų bus nukopijuota į naują lapą.

„MrExcel“ skirs 50 papildomų taškų kiekvienam skaitytojui, prisimenančiam „Lotus Magazine“ straipsnį, kuriame buvo 10 puikių patarimų, kur patarimas Nr. 4 buvo „Naudokite klavišą Pabaiga, kad pereitumėte į diapazono pabaigą“. Grįžtant prie „Lotus“ dienų, jūs galite įdėti langelio matuoklį bet kur į duomenų bloką, paspausti END, tada žemyn, ir langelio žymeklis nuvažiuos iki diapazono pabaigos. „Excel“ turi panašų funkcionalumą, „VBA“ - panašų funkcionalumą, ir tai yra raktas norint rasti paskutinę duomenų eilutę lape.

VBA technika yra „End“ („xlDown“) naudojimas, norint imituoti „End + Down“ klavišą, arba „End“ („xlUp“), norint imituoti klavišą „End + Up“. Paspaudus šią klavišų seką, langelio žymeklis bus perkeltas į kitą gretimo duomenų diapazono kraštą. Įsivaizduokite, kad A1: A10 ir A20: A30 reikšmės yra. Pradėkite nuo A1. Paspauskite pabaigą + žemyn ir langelio žymeklis pereis į A10. Paspauskite Pabaiga + Žemyn ir eikite į A20, kuris yra kito gretimo duomenų diapazono viršutinis kraštas. Paspauskite pabaigą + žemyn ir eisite į A30. Aš iš tikrųjų nesuprantu, kaip paaiškinti šį elgesį paprasta angliškai. Tiesiog pabandykite ir pamatysite, kaip tai veikia.

Mano naudojamas triukas yra pradėti nuo A stulpelio paskutinėje skaičiuoklės eilutėje, tada paspausti Pabaiga + Aukštyn. Tai pateks į paskutinę duomenų eilutę. Tada žinau naudoti kitą eilutę žemyn kaip tuščią eilutę.

Čia yra žiaurios jėgos makrokomanda, skirta išspręsti šios savaitės problemą. Taip, tikrai galite tai padaryti elegantiškiau naudodami „AutoFilter“. Šiuo metu duomenys yra „Sheet1“ su antraštėmis 2 eilutėje.

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

Atsižvelgiant į tai, kad „Excel 2007“ yra daugiau nei 65 536 eilutės, galite naudoti šią makrokomandą, kad ji būtų suderinama į priekį. Atminkite, kad vietoj RANGE čia naudoju CELLS (eilutė, stulpelis):

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

Patarimų, kaip naudoti makrokomandas, rasite „Excel VBA Editor“ pristatymas.

Įdomios straipsniai...