Excelワークシートの内容を特定の列に基づいて複数のワークブックに分割する2つの高速な手段

今すぐ共有:

データ分析において、Excelワークシートの内容を特定の列に基づいて複数のExcelワークブックに分割する必要が生じる場合があります。この記事では、そのための2つの簡単な方法をご紹介します。

多くのユーザーは、膨大なデータ行を含むExcelワークシートを、特定の列に基づいて複数の個別のExcelワークブックに分割する必要があることがよくあります。 たとえば、これが私のサンプルExcelワークシートです。 このシートのデータを「単一ライセンスの価格(US $)」列に基づいて複数のワークブックに分割したいと思います。

サンプルExcelワークシート

一般に、次の方法1を使用して、データを手動でフィルタリングおよびコピーする傾向があります。 ただし、フィルターオプションが多すぎると、非常に面倒で愚かです。 したがって、ここでは、はるかに便利な方法、つまりVBAを使用する方法2も示します。 さて、それらを詳細に理解するために読んでください。

方法1:フィルター処理後にコンテンツを別のExcelワークブックにコピーする

  1. 最初に、自分のインスタンスの「セルB1」のように、特定の列でセルを選択します。
  2. 次に、「データ」タブに移動し、「フィルター」ボタンをクリックします。データのフィルタリング
  3. 次に、列ヘッダーの「下矢印」ボタンをクリックして、フィルターの選択肢のリストを表示します。
  4. ここで、「(すべて選択)」オプションのチェックを外します。「すべて選択」のチェックを外します
  5. その後、私の例の「29.95」のように、フィルターの選択肢をXNUMXつ選択して、「OK」をクリックします。
  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はますます高度で洗練されたものになっていますが、悪意のあるサードパーティのアドインや人為的エラーなどのさまざまな要因により、クラッシュする傾向があります。 Excelのクラッシュは直接につながる可能性があるため Excelの破損、Excelデータの損失を回避するために、Excelファイルを定期的にバックアップする必要があります。 それ以外の場合は、次のようなExcel修復ツールを適用する必要があります DataNumen Excel Repair 破損したExcelファイルを修正します。

著者紹介:

Shirley Zhangは、のデータ復旧の専門家です。 DataNumen、Inc。は、以下を含むデータ復旧技術の世界的リーダーです。 SQL Server 修理 と見通し修理ソフトウェア製品。 詳細については、次のWebサイトをご覧ください。 WWW。datanumen.com

今すぐ共有:

コメントは締め切りました。