Salin Ke Baris Selanjutnya - Petua Excel

Isi kandungan

NYARCH menulis

Saya ingin agar Excel menyalin keseluruhan baris ke lembaran kerja Excel baru berdasarkan entri sel. Sebagai contoh saya mempunyai data dalam sel A8: AG8, saya ingin Excel menyalin keseluruhan baris ke lembaran "a" jika nilai di H8 adalah "ir", dan lembaran "b" jika nilai di H8 adalah "RR". Bahagian yang paling rumit dan tidak hanya disalin, saya memerlukannya disalin ke baris kosong seterusnya di lembaran kerja. Dari 150 baris atau lebih, hanya kira-kira 15 dari setiap jenis yang sebenarnya akan disalin ke helaian baru.

MrExcel akan memberikan 50 mata bonus kepada mana-mana pembaca yang mengingati artikel Majalah Lotus yang menawarkan 10 petua hebat, di mana tip # 4 adalah "Gunakan kunci Tamat untuk Bergerak ke Akhir Jangkauan". Kembali ke zaman Lotus, anda boleh meletakkan cellpointer di mana sahaja dalam sekumpulan data, tekan END kemudian turun, dan pointer sel akan naik ke akhir rentang. Excel mempunyai fungsi yang serupa, VBA mempunyai fungsi yang serupa, dan ini adalah kunci untuk mencari baris terakhir data pada helaian.

Teknik VBA adalah menggunakan End (xlDown) untuk mensimulasikan kekunci End + Down atau End (xlUp) untuk mensimulasikan kekunci End + Up. Menekan urutan kekunci ini akan memindahkan penunjuk sel ke pinggir seterusnya dari rangkaian data yang bersebelahan. Bayangkan terdapat nilai dalam A1: A10 dan A20: A30. Bermula di A1. Tekan Akhir + Bawah dan penunjuk sel bergerak ke A10. Tekan Akhir + Bawah dan anda pergi ke A20, yang merupakan kelebihan atas julat data seterusnya. Tekan Akhir + Bawah dan anda akan pergi ke A30. Saya sebenarnya bingung bagaimana menjelaskan tingkah laku ini dalam bahasa Inggeris yang sederhana. Cubalah dan anda akan melihat bagaimana ia berfungsi.

Caranya yang saya gunakan adalah bermula di Lajur A di baris terakhir dalam hamparan dan kemudian tekan End + Up. Ini akan membawa saya ke baris terakhir dengan data. Saya kemudian tahu menggunakan baris seterusnya ke bawah sebagai baris kosong.

Berikut adalah makro brute-force untuk menyelesaikan masalah minggu ini. Ya, anda pasti dapat melakukan ini dengan lebih elegan dengan AutoFilter. Data pada masa ini terdapat di Helaian1, dengan tajuk di baris 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

Memandangkan Excel 2007 mempunyai lebih daripada 65.536 baris, anda boleh menggunakan makro ini agar serasi ke hadapan. Perhatikan bahawa saya menggunakan CELLS (Baris, Lajur) dan bukannya RANGE di sini:

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

Untuk petua mengenai cara menggunakan makro, lihat Memperkenalkan Excel VBA Editor.

Artikel menarik...