Excel - Vytvorenie makra na vyhľadávanie a kopírovanie

Problém

Mám tabuľku so všetkými rôznymi dátumami s príslušnými údajmi v riadku. Existuje mnoho riadkov s rovnakým dátumom a chcem vytvoriť makro, ktoré bude vyhľadávať všetky rovnaké dátumy a skopírovať ich a prilepiť do hárku 2, aby som ich mohol dať do poriadku

príklad:

 27-sep 27-sep 27-sep 28-sep 28-sep 01-okt 01-Oct 

Nemám potuchy, ako vytvoriť makro, ale som hľadal po celom internete nájsť ten, ktorý by som mohol upraviť vložiť svoje vlastné údaje, a to je to, čo ive prísť s.

 Sub SearchForString () Dim LSearchRow ako celé číslo Dim LCopyToRow ako celé číslo na chybu GoTo Err_Execute 'Spustiť vyhľadávanie v riadku 6 LSearchRow = 6' Spustiť kopírovanie dát do riadku 110 v List2 (premenná počítadla riadkov) LCopyToRow = 110 Kým Len (rozsah ("A" & CStr (LSearchRow)) Hodnota)> 0 'Ak hodnota v stĺpci A = "27-Sep", skopírujte celý riadok do List2 Ak Rozsah ("A" & CStr (LSearchRow)) Hodnota = "27 = Sep" Potom 'Vyberte riadok v hárku List1 na skopírovanie riadkov (CStr (LSearchRow) & ":" & CStr (LSearchRow)) Vyberte položku Selection.Copy' Prilepiť riadok do hárka2 v nasledujúcom riadku Listy ("Hárok2") Vyberte riadky (CStr (LCopyToRow)). & ":" & CStr (LCopyToRow)) Vyberte ActiveSheet.Paste 'Presunúť počítadlo na ďalší riadok LCopyToRow = LCopyToRow + 1' Vráťte sa na List1 a pokračujte v prehľade Listy ("List1") Vyberte End If LSearchRow = LSearchRow + 1 Wend 'Pozícia na bunke A109 Application.CutCopyMode = False Range ("A109") Vyberte MsgBox "Všetky zodpovedajúce údaje boli skopírované." Exit Sub Err_Execute: MsgBox "Vyskytla sa chyba." End Sub 

Riešenie

Dávam dve makrá "test" a "vrátiť sa späť"

vzorka je taká (list1) - nie je potrebné triediť

data data1 data2

3/1/2010 37 1

3/2/2010 65 96

3/3/2010 48 46

3/2/2010 78 54

3/5/2010 3 38

3/2/2010 83 58

3/3/2010 45 78

skúste makro "test" a pozrite si list2

ak chcete test znova

1.run "undo"

potom

2.rung "test"

makrá sú

 Subtest () Dim r Ako rozsah, r1 As Range, r2 As Range Dim c2 As Range, cfind Ako pracovné listy rozsahu ("sheet1") Aktivácia Set r = Range (Range ("A1"), Range ("A1")) .End (xlDown)) Nastaviť r1 = rozsah ("a1") Koniec (xlDown) .Offset (5, 0) r.AdvancedFilter akcia: = xlFilterCopy, copytorange: = r1, jedinečné: = True Set r2 = Range (r1 .Offset (1, 0), r1.End (xlDown)) Pre každý c2 v r2 Ak WorksheetFunction.CountIf (r, c2)> 1 Potom s rozsahom ("A1") Pole CurrentRegion .AutoFilter: = 1, Kritériá1: = c2.Value .Cells.SpecialCells (xlCellTypeVisible) .Kopírovať pracovné hárky ("sheet2") Bunky (Rows.Count, "A") Koniec (xlUp) .Offset (1, 0) .PasteSpecial End With End If ActiveSheet. AutoFilterMode = False Ďalšie c2 Pracovné hárky ("sheet2") Aktivovať Nastaviť cfind = ActiveSheet.Cells.Find (čo: = "date", lookat: = xlWhole, po: = Rozsah ("A2")) Ak cfind nie je nič, potom Exit Do cfind.EntireRow.Delete Pracovné listy slučky ("sheet1") Rozsah ("A1") EntireRow.Copy Pracovné hárky ("sheet2") Rozsah ("A1") PasteSpecial Application.CutCopyMode = False End Sub Sub undo (späť) ) Pracovné listy ("sheet2"). Vymazať End Sub 

Poznámka

Vďaka venkat1926 za tento tip na fóre.

Predchádzajúci Článok Nasledujúci Článok

Najlepšie Tipy