„Excel“ - makrokomandas, skirtas kurti naują darbo knygą ir kopijuoti duomenis

Problema

Aš ieškau makrokomandų, kad būtų galima nukopijuoti eilutes pagal dalinį stulpelio turinį. Turiu „Excel“ skaičiuoklę, vadinamą „arc.xlsx“, iš kurio norėčiau kopijuoti duomenis į kitus kelis naujus „Excel“ failus, kai laikomasi tam tikrų kriterijų. „Excel“ failo vieta yra „C“: „Dokumentai ir nustatymai“ xx „Desktop“ kompanija. Aš esu tik „Excel“ pradedantysis.

Toliau pateikiamas arc.xlsx pavyzdys

 GP BR CUST_NO CUST_NAME diena metai I1 01 999999 SMITH 00 08 09 I1 ab 999999 SMITH 04 08 09 I1 cd 999999 SMITH 04 10 09 I1 01 999999 SMITH 04 01 10 I1 02 999999 SMITH 27 02 10 I1 01 999999 SMITH 27 02 10 I1 01 999999 cd 999999 SMITH 02 03 10 I1 cd 999999 SMITH 04 03 10 I1 cd 999999 SMITH 30 07 09 I1 ab 999999 SMITH 30 07 09 I1 02 999999 SMITH 30 07 09 
  • Norėčiau, kad makro kopijavimas eilutėse, kuriose B skiltyje yra „ab“, būtų nukopijuotas ir įrašykite jį naujame Excel faile su pavadinimu ab.xlsx toje pačioje vietos aplanke.
  • Taip pat „cd“, „01“ ir „02“, įrašydami duomenis failuose su pavadinimu cd.xlsx, 01.xlsx taip toliau.

Sprendimas

1. PRADĖTI JŪSŲ DARBINIO DOKUMENTĄ

2. Atidarykite darbo knygą

3. Paspauskite ALT + F11 (tiek ALT, tiek F11 klavišą vienu metu). Šis atviras VBE

4. „VBE“ meniu spustelėkite „Įterpti“, tada pasirinkite „Module“, spustelėdami jį. Tai atvers tuščią modulį

5. Nukopijuokite kodą po instrukcijų pasirinkdami kodą (bus rastas po instrukcijų) ir paspaudus CTRL + C (abu raktai tuo pačiu metu)

6. Įklijuokite kodą į naujai pridėtą modulį (žr. 4 veiksmą) spustelėję modulį ir paspausdami CTRL + V (vėl abu vienu metu)

7. Įsitikinkite, kad įklijuotame kode nėra raudonos linijos.

8. Paspauskite F5, kad paleistumėte makrokomandą.

9 Patikrinkite numatytąją vietą dokumentuose, kuriuose paprastai išsaugomas failas.

Čia yra kodas

 Išsami informacija () Dim thisWB Kaip String Dim newWB Kaip String thisWB = ActiveWorkbook.Name On Error Atnaujinti Next Sheets ("tempsheet"). Delete On Error GoTo 0 Sheets.Add ActiveSheet.Name = "tempsheet" Lapai ("Sheet1"). Pasirinkite Jei ActiveSheet.AutoFilterMode Tada Cells.Select On Error Atnaujinti Next ActiveSheet.ShowAllData On Error GoTo 0 Pabaiga Jei stulpeliai ("B: B"). Pasirinkite Selection.Copy Sheets ("Tempsheet") Pasirinkite Range ("A1"). Pasirinkite ActiveSheet.Paste Application.CutCopyMode = False If (Cells (1, 1) = "") Tada lastrow = Ląstelės (1, 1) .Be (xlDown) .Veikia eilės eilių eilutėse. Tada skaičiuokite diapazoną („A1: A“ & lastrow - 1) .Select Selection.Delete Shift: = xlUp End Jei baigsite, jei stulpeliai ("A: A"). Pasirinkite stulpelius ("A: A") AdvancedFilter Action: = xlFilterCopy, _ CopyToRange: = Range (" B1 "), Unikalus: = Tikrosios stulpeliai (" A: A ") Ištrinti langelius.Pasirinkite pasirinkimą.Rūšis _ Raktas1: = Diapazonas (" A2 "), Užsakymas1: = xlAscending, _ Antraštė: = xlYes, UžsakytiCustom: = 1, _ MatchCase: = False, Orientation: = xlTopToBottom, _ DataOption1: = xlSortNormal lMaxSupp = ląstelės (eilutės.Skaičiavimas, 1) .Be (xlUp). uppno = 2 „lMaxSupp Windows“ (thisWB) .Aktyvuokite „supName“ = lapus („tempsheet“). „Range“ („A“ ir „suppno“) Jei supName „“ tada „Workbooks.Add“ ActiveWorkbook.SaveAs supName newWB = ActiveWorkbook.Name „Windows“ (thisWB). Aktyvuokite lapus („Sheet1“) Pasirinkite langelius.Pasirinkite If ActiveSheet.AutoFilterMode = False Tad Selection.AutoFilter pabaiga Jei Selection.AutoFilter laukas: = 2, kriterijai1: = "=" & supName, _ Operatorius: = xlAnd, kriterijai2: = "" lastrow = ląstelės (eilutės.Kaina, 2) .Be (xlUp). Eilučių eilutės ("1:" & lastrow) .Kopijavimas Windows (newWB). Aktyvuokite ActiveSheet.Paste ActiveWorkbook.Save ActiveWorkbook.Close End Jei kitą lapą ( Ištrinti lapus („Sheet1“). Pasirinkite If ActiveSheet.AutoFilterMode Tada Cells.Select ActiveSheet.ShowAllData End Jei baigsite 

Ačiū Rizvisa1 už šį patarimą.

Ankstesnis Straipsnis Kitas Straipsnis

Geriausi Patarimai