Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno MS Excel - Kopírování celého řádku do nového listu na základě změny hodnoty v 1.buňce

Všechny zdravím, chtěl bych poprosit o radu nebo tip. Jde o nějaké makro, které by mi řádek tabulky o 5 sloupcích zkopírovao do druhého listu, za předpokladu, že první buňka řádku se změní na konkrétní hodnotu, např. "x." Pokud bude hodnota buňky "s," k ničemu nedojde. Při změně na "x" se zkopíruje obsah 5 buněk řádku do prvního volného řádku (!) druhého listu. Další řádek, který by měl v první buňce hodnotu "x," by se zkopíroval do dalšího volného řádku (nezáleží na pořadí). Jakmile by se první buňka kteréhokoliv řádku tabulky změnila zpět na "s," kopie řádku v druhém listu by zmizela. Je to nějak možný? Připojuju ilustační foto.
Nejsem v téhle fázi excelu nijak extra zběhlej a nejde mi to nijak funkčně zařídit. Předem mockrát děkuju za jakejkoliv tip.

Předmět Autor Datum
Jediné, co mě napadá je vyřešit to absolutními a relativními odkazy... Zkusil jsem to třeba takhle:…
Kajda 12.07.2010 11:41
Kajda
Díky moc za radu. To by určitě šlo, jen škoda, že je to takový těžkopádný. Jedná se o tabulku s asi…
Jake Buchar 12.07.2010 12:03
Jake Buchar
Jo, nu je to takový kostrbatý, ale nic jinýho mě nenapadlo :)
Kajda 12.07.2010 12:06
Kajda
Díky. Mým cílem je "nekonečná tabulka," ve který by všechny záznamy označené "x" byly kopírovány do…
Jake Buchar 12.07.2010 12:13
Jake Buchar
V tomto případě je možná zbytečné se zabývat kopírováním a použít pouze filtr na záznam "x".
usakji 12.07.2010 12:36
usakji
Díky. Zdá se, že jsem vzorec nepochopil :) To makro docela funguje, až na pár detailů. Pokud nepřidá…
Jake Buchar 12.07.2010 13:23
Jake Buchar
Samozřejmě jde a je to jednoduché. Při použití "copy" a "pastespecial" se zkopírují pouze viditelné…
usakji 12.07.2010 13:37
usakji
Zdravím Pokud to řešit makrem samozřejmě to lze. Jednoduché řešení smazat celý list 2 a nakopírovat…
usakji 12.07.2010 12:11
usakji
Pokud jsem dobře porozuměl kódu, tak při každé změně hodnoty v prvním sloupci se smaže celý list 2 a…
Jake Buchar 12.07.2010 12:20
Jake Buchar
Zkopíruje to všechny záznamy s "x", vyzkoušejte ho na pár záznamech. V případě, že je třeba zpracova…
usakji 12.07.2010 12:24
usakji
Mno, milý detektive... V tom rozsahu a požadované funkcionalitě to není úkol pro tabulkový editor, a…
Georgij Gadjukin 12.07.2010 14:07
Georgij Gadjukin
Excel ma tusim aj nejake filtre, ty vpodtstate len potrebujes filter na riadky pri ktorych prva bunk…
MM.. 12.07.2010 14:12
MM..
Novej list je víceméně jen pro úplnost. Potřebuji oddělit několik různých fází řešení spousty úkonů… poslední
Jake Buchar 12.07.2010 15:13
Jake Buchar

Díky. Mým cílem je "nekonečná tabulka," ve který by všechny záznamy označené "x" byly kopírovány do zvláštní tabulky. Tato tabulka by měla být v ideálním případě prázdný, jedná se o seznam nevyřízených věcí, který chci po vyřízení promazávat, a to pokud možno stejně rychle a jednoduše, jako byl vytvořený.

Díky. Zdá se, že jsem vzorec nepochopil :)
To makro docela funguje, až na pár detailů. Pokud nepřidávám x postupně, kopíruje to pořád ten poslední řádek, kde jsem přeskočil. Jinak co se týče filtru na záznam "x", na to jsem zprvu nepomyslel, to jakžtakž funguje. S přimhouřením oka, s pár ústupkama, ale alespoň tak. Škoda, že nejde kopírovat filtrovaný mimo aktivní list. Pak by to bylo přesně to, co hledám. Ale i tak, funkci to prostě splní. Mockrát díky.

Kdyby přece existovalo něco, aby šlo filtrovaná data kopírovat ven, budu rád za každej tip, ale už to není nezbytný. Ještě jednou děkuju.
JB

Samozřejmě jde a je to jednoduché. Při použití "copy" a "pastespecial" se zkopírují pouze viditelné řádky. Upravte makro a je to :) Zrušit podmínku pro x a pak prostě zkopírovat vše co je vidět. Pro začátek doporučuji používat nahrávání maker, po úpravách je to použitelné a na tohle dostačující.

Zdravím
Pokud to řešit makrem samozřejmě to lze. Jednoduché řešení smazat celý list 2 a nakopírovat co je potřeba.
Třeba takhle:

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim x As Integer
Dim y As Integer

If Target.Column <> 1 Then Exit Sub 'kontrola zda změna nastala v 1. sloupci

List2.Cells.ClearContents 'smazat celý list 2

x = List1.Cells(1, 1).End(xlDown).Row 'zjistí počet řádků na listu 1
y = 1

For i = 1 To x
 If Cells(i, 1) = "x" Then
   Range("A" & i & ":G" & i).Copy 'zkopírovat řádek po sloupec G
    List2.Cells(y, 1).PasteSpecial 'vložit na list2
     y = y + 1
 End If
Next

Cells(1, 1).Select

End Sub

Pokud ovšem bude záznamů hodně bude to pomalé (třeba i několik sekund) pak je třeba to vyřešit jednoznačnou identifikací záznamu (ID) a nekopírovat vše...

Pokud jsem dobře porozuměl kódu, tak při každé změně hodnoty v prvním sloupci se smaže celý list 2 a na první řádek se plivne ten řádek z listu 1, ve kterém se změnila buňka. Jestli ano, tak to není úplně přesně to, co hledám, těch řádků bych tam potřeboval víc, jak jsem psal v poslední odpovědí pro Kajdu.

Excel ma tusim aj nejake filtre, ty vpodtstate len potrebujes filter na riadky pri ktorych prva bunka = x. Neviem k comu to potrebujes kopirovat do druheho listu, tipujem ze by ti dokonca stacil aj len zobrazovaci filter. Skus si zadat do google excel filtering alebo excel advanced filtering, apod...

Novej list je víceméně jen pro úplnost. Potřebuji oddělit několik různých fází řešení spousty úkonů co nejpřehledněji, pak pracovat s každou tabulkou výsledků zvlášť. Filtry v excelu na to určitě stačej, z dalších listů upouštím. Není to až tak podstatný. Už jsem to pořešil těma filtrama. Díky moc všem.

Zpět do poradny Odpovědět na původní otázku Nahoru