Excel - Makró létrehozása a kereséshez és másoláshoz

Probléma

Van egy táblázata, amely tartalmazza az összes különböző dátumot a megfelelő adatokkal. Sok sor ugyanazzal a dátummal rendelkezik, és egy makrót szeretnék létrehozni, hogy ugyanazokat a dátumokat keresse, és másolja és illessze be őket a 2. lapra, így elrendezhetem őket

példa:

 27-szept. 27-szept. 27-szept. 28-szept 

Fogalmam sincs, hogyan hozhatok létre egy makrót, de az interneten kerestem, hogy megtaláljam azt, amit módosíthatnék a saját adataim beillesztéséhez, és ez az ive jön létre.

 Sub SearchForString () Dim LSearchRow mint integer Dim LCopyToRow mint integer On GoTo Err_Execute 'Keresés indítása a 6. sorban LSearchRow = 6' Adatok másolása a 110-es sorra a 2. lapon (sorszámláló változó) LCopyToRow = 110 Len (tartomány ("A") & CStr (LSearchRow)). Érték)> 0 'Ha az érték az A = "27-Sep" oszlopban, akkor a teljes sort a 2. lapra másolja, ha a tartomány ("A" & CStr (LSearchRow)). 'Válasszon sort a Sheet1-ben a sorok másolásához (CStr (LSearchRow) & ":" & CStr (LSearchRow)). Válassza a Kiválasztás.Copy' Beillesztés sorát a következő lapra2 a következő sorokban ("2. lap"). Sorok kiválasztása (CStr (LCopyToRow)) & ":" & CStr (LCopyToRow)) Válassza az ActiveSheet.Paste 'Számláló áthelyezése a következő sorba LCopyToRow = LCopyToRow + 1' Menjen vissza a Sheet1 lapra, hogy folytassa a lapok keresését ("Sheet1"). Válassza a Vége Ha LSearchRow = LSearchRow + 1 Wend 'Pozíció az A109 cellában Application.CutCopyMode = False Range ("A109"). Válassza ki az MsgBox "Az összes megfelelő adat másolása." Kilépés az Sub Err_Execute-ból: MsgBox "Hiba történt." Vége vége 

Megoldás

Két makrót adok "teszt" és "visszavonás"

a mintadarab ilyen (lap1) - nem szükséges a rendezéshez

dátumadatok1 adatok2

2010.01.33. 37 1

2010.02.23. 65 96

2010/03/03 48 46

2010/02/23 78 54

3/3

2010/03/23 83 58

2010.03.33. 45 78

próbáld ki a makro tesztet, és lásd a 2. lapot

ha újra szeretné próbálni

1.run "undo"

azután

2.rung "teszt"

a makrók

 Sub teszt () Dim r mint tartomány, r1 mint tartomány, r2 mint tartomány C2 tartomány mint tartomány, keresse meg a tartomány munkalapokat ("lap1") Aktiválja az r = tartományt (tartomány ("A1"), tartomány ("A1") .End (xlDown)) Set r1 = Range ("a1"). Vége (xlDown) .Offset (5, 0) r.AdvancedFilter művelet: = xlFilterCopy, copytorange: = r1, egyedi: = True Set r2 = Range (r1 .Offset (1, 0), r1.End (xlDown)) Minden c2-ben r2-ben Ha WorksheetFunction.CountIf (r, c2)> 1 Ezután Range ("A1"). CurrentRegion .AutoFilter mező: = 1, Criteria1: = c2.Value .Cells.SpecialCells (xlCellTypeVisible). Munkalapok ("sheet2"). Cellák (sorok.szám, "A"). Vége (xlUp) .Offset (1, 0) .PasteSpecial vége az ActiveSheet végével. AutoFilterMode = Hamis Következő c2 Munkalapok ("sheet2") Aktiváld a beállítást cfind = ActiveSheet.Cells.Find (mi: = "dátum", lookat: = xlWhole, után: = tartomány ("A2")) Ha a cfind nincs semmi, Kilépés Do cfind.EntireRow.Delete Loop Worksheets ("sheet1"). Tartomány ("A1") EntireRow.Copy Munkalapok ("sheet2"). Tartomány ("A1") PasteSpecial Application.CutCopyMode = False End Sub Sub visszavonás ( ) Munkalapok ("sheet2"). Törlés vége 

jegyzet

Köszönet a venkat1926-nak a fórumon található tippért.

Előző Cikk Következő Cikk

Top Tippek