Копирај у следећи празан ред - Екцел савети

Преглед садржаја

НИАРЦХ пише

Желим да Екцел копира читав ред на нови Екцел радни лист заснован на уносу ћелије. На пример, податке имам у ћелијама А8: АГ8, желим да Екцел копира цео ред на лист „а“ ако је вредност у Х8 „ир“, а на лист „б“ ако је вредност у Х8 „РР“. Најсложенији део, а не само копиран, потребан ми је копиран у следећи празан ред на радном листу. Од око 150 редова, само око 15 сваког типа ће се стварно копирати на нови лист.

МрЕкцел ће доделити 50 бонус бодова сваком читаоцу који се сети чланка из магазина Лотус који нуди 10 сјајних савета, где је савет бр. 4 био „Користите тастер Енд да бисте се померили на крај домета“. Враћајући се у Лотус-ове дане, можете ставити ћелијски показивач било где у блоку података, притиснути ЕНД па доле, а показивач ћелије ће се одвести до краја опсега. Екцел има сличну функционалност, ВБА има сличну функционалност, а ово је кључ за проналажење последњег реда података на листу.

ВБА техника је коришћење Енд (клДовн) за симулацију тастера Енд + Довн или Енд (клУп) за симулацију Енд + Уп тастера. Притиском на овај низ тастера померит ћете показивач ћелије на следећу ивицу непрекидног опсега података. Замислите да постоје вредности у А1: А10 и А20: А30. Старт у А1. Притисните Енд + Довн и показивач ћелије се помера на А10. Притисните Енд + Довн и прелазите на А20, који је горња ивица следећег суседног опсега података. Притисните Енд + Довн и прећи ћете на А30. Заправо се губим како објаснити ово понашање на једноставном енглеском језику. Само пробајте и видећете како то функционише.

Трик који користим је да започнем од колоне А у последњем реду табеле, а затим притиснем Енд + Уп. Ово ће ме одвести до последњег реда са подацима. Тада знам да користим следећи ред доле као празан ред.

Ево макро-макроа за решавање овонедељног проблема. Да, то бисте сигурно могли учинити елегантније са аутоматским филтером. Подаци су тренутно на Табели 1, са заглављима у реду 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

С обзиром на то да Екцел 2007 има више од 65.536 редова, могли бисте да користите овај макронаредбе тако да је унапред компатибилан. Имајте на уму да овде користим ЋЕЛИЈЕ (ред, колона) уместо РАНГЕ:

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

Савете за употребу макронаредбе потражите у чланку Представљање програма Екцел ВБА Едитор.

Занимљиви Чланци...