Kopírovať do nasledujúceho prázdneho riadku - tipy pre Excel

Obsah

NYARCH píše

Chcem, aby program Excel skopíroval celý riadok do nového pracovného hárka programu Excel na základe záznamu do bunky. Napríklad mám údaje v bunkách A8: AG8, chcem, aby program Excel skopíroval celý riadok na hárok „a“, ak je hodnota v H8 „ir“, a hárok „b“, ak je hodnota v H8 „RR“. Najkomplikovanejšia časť a nielen skopírovaná, potrebujem ju skopírovať do nasledujúceho prázdneho riadku v pracovnom hárku. Zo 150 riadkov alebo asi iba 15 z každého typu bude skutočne skopírovaných na nový hárok.

MrExcel udelí 50 bonusových bodov každému čitateľovi, ktorý si pamätá na článok v magazíne Lotus Magazine, ktorý ponúka 10 skvelých tipov, pričom tipom č. 4 bolo „Pomocou klávesu End posuňte na koniec rozsahu“. Keď sa vrátime do čias Lotusu, môžete bunkový ukazovateľ umiestniť kdekoľvek do bloku údajov, stlačiť kláves KONIEC a potom nadol a ukazovateľ bunky by jazdil na koniec rozsahu. Excel má podobné funkcie, VBA podobné funkcie a to je kľúč k nájdeniu posledného riadku údajov na hárku.

Technikou VBA je použitie End (xlDown) na simuláciu klávesu End + Down alebo End (xlUp) na simuláciu klávesu End + Up. Stlačením tejto postupnosti klávesov sa posunie ukazovateľ bunky na ďalší okraj súvislého rozsahu údajov. Predstavte si, že existujú hodnoty v A1: A10 a A20: A30. Štart v A1. Hit End + Down a ukazovateľ bunky sa presunie na A10. Stlačte End + Down a idete na A20, ktorá je hornou hranou ďalšieho súvislého rozsahu údajov. Stlačte End + Down a pôjdete na A30. V skutočnosti som na rozpakoch, ako vysvetliť toto správanie jednoduchou angličtinou. Vyskúšajte to a uvidíte, ako to funguje.

Trik, ktorý používam, je začať v stĺpci A v poslednom riadku tabuľky a potom stlačiť End + Up. Týmto sa dostanem k poslednému riadku s údajmi. Potom viem, že nasledujúci riadok použijem nadol ako prázdny riadok.

Na vyriešenie problému z tohto týždňa existuje makro hrubou silou. Áno, s automatickým filtrom by ste to určite mohli urobiť elegantnejšie. Údaje sú momentálne v hárku 1 s nadpismi v riadku 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

Vzhľadom na to, že program Excel 2007 má viac ako 65 536 riadkov, môžete toto makro použiť, aby bolo kompatibilné dopredu. Všimnite si, že tu používam CELLS (riadok, stĺpec) namiesto RANGE:

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

Tipy, ako používať makro, nájdete v časti Predstavujeme editor Excel VBA.

Zaujímavé články...