データ分析において、Excelワークシートの内容を特定の列に基づいて複数のExcelワークブックに分割する必要が生じる場合があります。この記事では、そのための2つの簡単な方法をご紹介します。
多くのユーザーは、膨大なデータ行を含むExcelワークシートを、特定の列に基づいて複数の個別のExcelワークブックに分割する必要があることがよくあります。 たとえば、これが私のサンプルExcelワークシートです。 このシートのデータを「単一ライセンスの価格(US $)」列に基づいて複数のワークブックに分割したいと思います。

一般に、次の方法1を使用して、データを手動でフィルタリングおよびコピーする傾向があります。 ただし、フィルターオプションが多すぎると、非常に面倒で愚かです。 したがって、ここでは、はるかに便利な方法、つまりVBAを使用する方法2も示します。 さて、それらを詳細に理解するために読んでください。
方法1:フィルター処理後にコンテンツを別のExcelワークブックにコピーする
- 最初に、自分のインスタンスの「セルB1」のように、特定の列でセルを選択します。
- 次に、「データ」タブに移動し、「フィルター」ボタンをクリックします。
- 次に、列ヘッダーの「下矢印」ボタンをクリックして、フィルターの選択肢のリストを表示します。
- ここで、「(すべて選択)」オプションのチェックを外します。
- その後、私の例の「29.95」のように、フィルターの選択肢をXNUMXつ選択して、「OK」をクリックします。
- 一度に、列Bの値が「29.95」であるデータのみが残されます。
- 次に、フィルタリングされたデータをコピーして、新しいExcelブックに貼り付けます。
- 後で、同じ方法を使用して他のデータを分割し、Excelブックを分離します。
方法2:VBAを介してコンテンツを複数のExcelワークブックにバッチ分割する
- まず、特定のワークシートが開いていることを確認します。
- 次に、「」に従ってVBAエディターを起動します。ExcelでVBAコードを実行する方法"
- 次に、次のコードを「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
- その後、ツールバーの「実行」アイコンをクリックするか、「F5」キーボタンを押します。
- マクロが終了すると、ソースExcelワークシートの分割データを使用して個別の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






