2種快速方法可以根據特定列將Excel工作表的內容拆分為多個工作簿

立即分享:

在資料分析中,有時您可能需要根據特定列將 Excel 工作表中的內容拆分到多個 Excel 工作簿中。本文將教您兩種快速實現此目的的方法。

許多用戶經常需要根據特定列將包含大量數據行的Excel工作表拆分為多個單獨的Excel工作簿。 例如,這是我的示例Excel工作表。 我想根據“單個許可證的價格(美元)”列將此工作表的數據拆分為多個工作簿。

Excel工作表樣本

通常,您傾向於使用以下方法1手動篩选和複製數據。 但是,如果過濾器選項太多,將非常繁瑣而愚蠢。 因此,這裡我們還展示了一種更為方便的方法-方法2,該方法使用了VBA。 現在,繼續閱讀以獲取詳細信息。

方法1:篩選後將內容複製到單獨的Excel工作簿

  1. 首先,在特定列中選擇一個單元格,例如我自己的實例中的“ Cell B1”。
  2. 然後,轉到“數據”選項卡,然後單擊“過濾器”按鈕。篩選資料
  3. 接下來,單擊列標題中的“向下箭頭”按鈕以顯示過濾器選項列表。
  4. 現在,取消選中“(全選)”選項。取消選中“全選”
  5. 之後,您可以選擇一個過濾器選項,例如在我的示例中為“ 29.95”,然後單擊“確定”。
  6. 一次僅保留B列中值為“ 29.95”的數據。僅保留過濾的數據
  7. 然後,複製過濾的數據並將其粘貼到新的Excel工作簿中。複製和粘貼內容
  8. 以後,使用相同的方法將其他數據拆分為單獨的Excel工作簿。

方法2:通過VBA將內容批量拆分為多個Excel工作簿

  1. 首先,請確保已打開特定的工作表。
  2. 接下來,根據“啟動VBA編輯器”如何在Excel中運行VBA代碼“。
  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變得越來越先進和完善,但由於諸如惡意的第三方加載項或人為錯誤等各種因素,MS Excel仍會不時崩潰。 由於Excel崩潰可以直接導致 Excel損壞,為了避免Excel數據丟失,您必須定期備份Excel文件。 否則,您需要應用Excel修復工具,例如 DataNumen Excel Repair 修復損壞的Excel文件。

作者簡介:

Shirley Zhang是的數據恢復專家 DataNumen,Inc.是數據恢復技術的全球領導者,包括 SQL Server 修復 和Outlook修復軟件產品。 欲了解更多信息,請訪問 萬維網。datanumen.COM

立即分享:

評論被關閉。