2 быстрых способа разделить содержимое рабочего листа Excel на несколько рабочих книг на основе определенного столбца

Поделись сейчас:

Иногда при анализе данных может потребоваться разбить содержимое рабочего листа Excel на несколько рабочих книг Excel в соответствии с определенным столбцом. Теперь в этом рost, мы научим вас 2 быстрым способам его получения.

Многим пользователям часто приходится разбивать рабочий лист Excel, содержащий огромные строки данных, на несколько отдельных рабочих книг Excel на основе определенного столбца. Например, вот мой пример листа Excel. Я хотел бы разделить данные этого листа на основе столбца «Цена одной лицензии (долл. США)» на несколько книг.

Образец листа Excel

Как правило, вы будете использовать следующий метод 1 для ручной фильтрации и копирования данных. Но это будет довольно утомительно и глупо, если вариантов фильтра будет слишком много. Поэтому здесь мы также показываем гораздо более удобный способ — Способ 2, который использует VBA. Теперь читайте дальше, чтобы получить их подробно.

Способ 1: копирование содержимого в отдельные книги Excel после фильтрации

  1. Сначала выберите ячейку в определенном столбце, например «Ячейка B1» в моем собственном экземпляре.
  2. Затем перейдите на вкладку «Данные» и нажмите кнопку «Фильтр».Фильтровать данные
  3. Затем нажмите кнопку «стрелка вниз» в заголовке столбца, чтобы отобразить список вариантов фильтра.
  4. Теперь снимите флажок «(Выбрать все)».Снимите флажок «Выбрать все»
  5. После этого вы можете выбрать один вариант фильтра, например «29.95» в моем примере, и нажать «ОК».
  6. Сразу останутся только данные, значение которых в столбце B равно «29.95».Остаются только отфильтрованные данные
  7. Затем скопируйте отфильтрованные данные и вставьте их в новую книгу Excel.Скопируйте и вставьте содержимое
  8. Позже используйте тот же способ, чтобы разделить другие данные на отдельные книги Excel.

Способ 2: пакетное разделение содержимого на несколько книг Excel через VBA

  1. Во-первых, убедитесь, что конкретный рабочий лист открыт.
  2. Затем запустите редактор VBA в соответствии с «Как запустить код VBA в вашем Excel».
  3. Затем поместите следующий код в проект «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

Код VBA — разделение содержимого рабочего листа Excel на несколько рабочих книг на основе определенного столбца

  1. После этого щелкните значок «Выполнить» на панели инструментов или нажмите клавишу «F5».
  2. Когда макрос завершится, будут созданы отдельные книги Excel с разделенными данными из исходного листа Excel.Новые книги Excel
  3. Каждая книга будет выглядеть так, как показано на следующем снимке экрана.Отдельные новые книги Excel

сравнение

  Преимущества Недостатки
Метод 1 1. Простота в эксплуатации для всех пользователей Excel Проблемно, если слишком много вариантов фильтров
2. Быстро, если есть несколько вариантов фильтров
Метод 2 Гораздо эффективнее, чем метод 1, независимо от количества вариантов фильтров. Немного сложно работать для новичков VBA

Предотвращение потери данных Excel

Хотя MS Excel становится все более и более продвинутым и сложным, он по-прежнему имеет тенденцию время от времени давать сбои из-за различных факторов, таких как вредоносные сторонние надстройки или человеческие ошибки и так далее. Поскольку сбой Excel может напрямую привести к Повреждение Excel, чтобы избежать потери данных Excel, необходимо регулярно создавать резервные копии файлов Excel. В противном случае вам необходимо применить инструмент восстановления Excel, например DataNumen Excel Repair для исправления поврежденных файлов Excel.

Об авторе:

Ширли Чжан — эксперт по восстановлению данных в DataNumen, Inc., которая является мировым лидером в области технологий восстановления данных, включая SQL Server ремонт и программные продукты для ремонта Outlook. Для получения дополнительной информации посетите www.datanumen.com

Поделись сейчас:

Комментарии закрыты.