Uneori, în analiza datelor, poate fi necesar să împărțiți conținutul unei foi de lucru Excel în mai multe registre de lucru Excel în funcție de o anumită coloană. Acum, în această postare, vă vom învăța 2 modalități rapide de a obține acest lucru.
Mulți utilizatori trebuie frecvent să împartă o foaie de lucru Excel care conține rânduri uriașe de date în mai multe registre de lucru Excel separate, bazate pe o anumită coloană. De exemplu, aici este exemplul meu de foaie de lucru Excel. Aș dori să împart datele acestei foi pe baza coloanei „Prețul licenței unice (USD)” în mai multe registre de lucru.

În general, veți avea tendința de a utiliza următoarea Metodă 1 pentru a filtra și copia manual datele. Dar, va fi destul de plictisitor și stupid dacă există prea multe opțiuni de filtrare. Prin urmare, aici arătăm și o modalitate mult mai convenabilă – Metoda 2, care folosește VBA. Acum, citiți mai departe pentru a le obține în detaliu.
Metoda 1: Copiați conținutul în registrele de lucru Excel separate după filtrare
- La început, selectați o celulă din coloana specifică, cum ar fi „Celula B1” în cazul meu.
- Apoi, accesați fila „Date” și faceți clic pe butonul „Filtrare”.
- Apoi, faceți clic pe butonul „săgeată în jos” din antetul coloanei pentru a afișa o listă de opțiuni de filtrare.
- Acum, debifați opțiunea „(Selectați tot)”.
- După aceea, puteți selecta o opțiune de filtru, cum ar fi „29.95” în exemplul meu și faceți clic pe „OK”.
- Deodată, vor fi lăsate doar datele, a căror valoare în coloana B este „29.95”.
- Apoi, copiați datele filtrate și lipiți-le într-un nou registru de lucru Excel.
- Mai târziu, utilizați același mod pentru a împărți celelalte date pentru a separa registrele de lucru Excel.
Metoda 2: Împărțiți conținutul în lot în mai multe registre Excel prin VBA
- În primul rând, asigurați-vă că foaia de lucru specifică este deschisă.
- Apoi, lansați editorul VBA conform „Cum să rulați codul VBA în Excel".
- Apoi, introduceți următorul cod în proiectul „ThisWorkbook”.
Sub SplitSheetDataIntoMultipleWorkbooksBasedOnSpecificColumn()
Dim objWorksheet As Excel.Worksheet
Dim nLastRow, nRow, nNextRow As Integer
Dim strColumnValue As String
Dim objDictionary As Object
Dim varColumnValues As Variant
Dim varColumnValue As Variant
Dim objExcelWorkbook As Excel.Workbook
Dim objSheet As Excel.Worksheet
Set objWorksheet = ActiveSheet
nLastRow = objWorksheet.Range("A" & objWorksheet.Rows.Count).End(xlUp).Row
Set objDictionary = CreateObject("Scripting.Dictionary")
For nRow = 2 To nLastRow
'Get the specific Column
'Here my instance is "B" column
'You can change it to your case
strColumnValue = objWorksheet.Range("B" & nRow).Value
If objDictionary.Exists(strColumnValue) = False Then
objDictionary.Add strColumnValue, 1
End If
Next
varColumnValues = objDictionary.Keys
For i = LBound(varColumnValues) To UBound(varColumnValues)
varColumnValue = varColumnValues(i)
'Create a new Excel workbook
Set objExcelWorkbook = Excel.Application.Workbooks.Add
Set objSheet = objExcelWorkbook.Sheets(1)
objSheet.Name = objWorksheet.Name
objWorksheet.Rows(1).EntireRow.Copy
objSheet.Activate
objSheet.Range("A1").Select
objSheet.Paste
For nRow = 2 To nLastRow
If CStr(objWorksheet.Range("B" & nRow).Value) = CStr(varColumnValue) Then
'Copy data with the same column "B" value to new workbook
objWorksheet.Rows(nRow).EntireRow.Copy
nNextRow = objSheet.Range("A" & objWorksheet.Rows.Count).End(xlUp).Row + 1
objSheet.Range("A" & nNextRow).Select
objSheet.Paste
objSheet.Columns("A:B").AutoFit
End If
Next
Next
End Sub
- După aceea, faceți clic pe pictograma „Run” din bara de instrumente sau apăsați butonul „F5”.
- Când macro-ul se termină, registrele de lucru Excel separate vor fi create cu datele împărțite din foaia de lucru Excel sursă.
- Fiecare registru de lucru va arăta ca următoarea captură de ecran.
Comparaţie
| Avantaje | Dezavantaje | |
| Metoda 1 | 1. Ușor de utilizat pentru toți utilizatorii Excel | Problemă dacă există prea multe opțiuni de filtrare |
| 2. Rapid dacă există puține opțiuni de filtrare | ||
| Metoda 2 | Mult mai eficient decât Metoda 1, indiferent de cantitatea de filtru selectat | Cam greu de operat pentru începătorii VBA |
Preveniți pierderea datelor Excel
Deși MS Excel devine din ce în ce mai avansat și mai sofisticat, încă tinde să se blocheze din când în când din cauza unor factori diverși, cum ar fi suplimentele terțe sau erorile umane și așa mai departe. Deoarece blocarea Excel poate duce direct la Excel corupție, pentru a evita pierderea datelor Excel, trebuie să faceți o copie de rezervă a fișierelor Excel în mod regulat. În caz contrar, trebuie să aplicați un instrument de reparare Excel, cum ar fi DataNumen Excel Repair pentru a remedia fișierele Excel corupte.
Introducerea autorului:
Shirley Zhang este expertă în recuperarea datelor DataNumen, Inc., care este lider mondial în tehnologiile de recuperare a datelor, inclusiv SQL Server repara și produse software de reparații Outlook. Pentru mai multe informații vizitați www.datanumen.com






