Note: The other languages of the website are Google-translated. Back to English

Excelの列に基づいてデータを複数のワークシートに分割するにはどうすればよいですか?

膨大な数のデータを含むワークシートがあり、次に、データを複数のワークシートに分割する必要があるとします。 お名前 列(次のスクリーンショットを参照)、および名前はランダムに入力されます。 たぶん、最初にそれらを並べ替えてから、それらをXNUMXつずつコピーして他の新しいワークシートに貼り付けることができます。 ただし、これを繰り返しコピーして貼り付けるには、忍耐が必要です。 今日は、このタスクを解決するためのいくつかの簡単なトリックについて説明します。

データを列ごとに分割するドキュメント1

VBAコードの列に基づいてデータを複数のワークシートに分割する

Kutools for Excelの列に基づいて、データを複数のワークシートに分割します


VBAコードの列に基づいてデータを複数のワークシートに分割する

列の値に基づいてデータをすばやく自動的に分割する場合は、次のVBAコードを選択することをお勧めします。 このようにしてください:

1。 を押し続けます Alt + F11 キーを押して アプリケーション向け Microsoft Visual Basic 窓。

2に設定します。 OK をクリックします。 インセット > モジュール、モジュールウィンドウに次のコードを貼り付けます。

Sub Splitdatabycol()
'updateby Extendoffice
Dim lr As Long
Dim ws As Worksheet
Dim vcol, i As Integer
Dim icol As Long
Dim myarr As Variant
Dim title As String
Dim titlerow As Integer
Dim xTRg As Range
Dim xVRg As Range
Dim xWSTRg As Worksheet
On Error Resume Next
Set xTRg = Application.InputBox("Please select the header rows:", "Kutools for Excel", "", Type:=8)
If TypeName(xTRg) = "Nothing" Then Exit Sub
Set xVRg = Application.InputBox("Please select the column you want to split data based on:", "Kutools for Excel", "", Type:=8)
If TypeName(xVRg) = "Nothing" Then Exit Sub
vcol = xVRg.Column
Set ws = xTRg.Worksheet
lr = ws.Cells(ws.Rows.Count, vcol).End(xlUp).Row
title = xTRg.AddressLocal
titlerow = xTRg.Cells(1).Row
icol = ws.Columns.Count
ws.Cells(1, icol) = "Unique"
Application.DisplayAlerts = False
If Not Evaluate("=ISREF('xTRgWs_Sheet!A1')") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
Else
Sheets("xTRgWs_Sheet").Delete
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = "xTRgWs_Sheet"
End If
Set xWSTRg = Sheets("xTRgWs_Sheet")
xTRg.Copy
xWSTRg.Paste Destination:=xWSTRg.Range("A1")
ws.Activate
For i = (titlerow + xTRg.Rows.Count) To lr
On Error Resume Next
If ws.Cells(i, vcol) <> "" And Application.WorksheetFunction.Match(ws.Cells(i, vcol), ws.Columns(icol), 0) = 0 Then
ws.Cells(ws.Rows.Count, icol).End(xlUp).Offset(1) = ws.Cells(i, vcol)
End If
Next
myarr = Application.WorksheetFunction.Transpose(ws.Columns(icol).SpecialCells(xlCellTypeConstants))
ws.Columns(icol).Clear
For i = 2 To UBound(myarr)
ws.Range(title).AutoFilter field:=vcol, Criteria1:=myarr(i) & ""
If Not Evaluate("=ISREF('" & myarr(i) & "'!A1)") Then
Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = myarr(i) & ""
Else
Sheets(myarr(i) & "").Move after:=Worksheets(Worksheets.Count)
End If
xWSTRg.Range(title).Copy
Sheets(myarr(i) & "").Paste Destination:=Sheets(myarr(i) & "").Range("A1")
ws.Range("A" & (titlerow + xTRg.Rows.Count) & ":A" & lr).EntireRow.Copy Sheets(myarr(i) & "").Range("A" & (titlerow + xTRg.Rows.Count))
Sheets(myarr(i) & "").Columns.AutoFit
Next
xWSTRg.Delete
ws.AutoFilterMode = False
ws.Activate
Application.DisplayAlerts = True
End Sub

3。 次に、 F5 キーを押してコードを実行すると、ヘッダー行を選択するように促すプロンプトボックスが表示されます。スクリーンショットを参照してください。

データを列ごとに分割するドキュメント7

4。 次に、をクリックします OK ボタンをクリックし、XNUMX番目のプロンプトボックスで、分割する列データを選択してください。スクリーンショットを参照してください。

データを列ごとに分割するドキュメント8

5。 次に、をクリックします。 OK、およびアクティブなワークシート内のすべてのデータは、列の値によって複数のワークシートに分割されます。 また、分割されたワークシートには、分割されたセル名で名前が付けられます。 スクリーンショットを参照してください:

データを列ごとに分割するドキュメント2

注意:分割されたワークシートは、マスターワークシートがあるワークブックの最後に配置されます。


Kutools for Excelの列に基づいて、データを複数のワークシートに分割します

Excelの初心者として、この長いVBAコードは私たちにとってやや難しいものであり、私たちのほとんどは、必要に応じてコードを変更する方法さえ知りません。 ここでは、多機能ツールを紹介します-Kutools for Excel、 その 分割データ ユーティリティは、列に基づいてデータを複数のワークシートに分割するのに役立つだけでなく、行数でデータを分割することもできます。

注意:これを適用する 分割データ、まず、ダウンロードする必要があります Kutools for Excel、次に機能をすばやく簡単に適用します。

インストールした後 Kutools for Excel、次のようにしてください。

1。 分割するデータの範囲を選択します。

2に設定します。 OK をクリックします。 クツールズプラス > ワークシート > 分割データ、スクリーンショットを参照してください:

データを列ごとに分割するドキュメント3

3。 の中に データを複数のワークシートに分割する ダイアログボックスでは、次のことを行う必要があります。

1)。 選択する 特定の列 内のオプション に基づいて分割 セクションをクリックし、ドロップダウンリストでデータを分割する列の値を選択します。 (データにヘッダーがあり、それらを新しい分割ワークシートごとに挿入する場合は、チェックしてください。 私のデータにヘッダーがあります オプション。)

2)。 次に、分割ワークシート名を下で指定できます。 新しいワークシート名 セクションで、ワークシート名のルールを キャンペーンのルール ドロップダウンリスト、あなたは追加することができます 接頭辞 or サフィックス シート名にも。

3)。 クリック OK ボタン。 スクリーンショットを参照してください:

データを列ごとに分割するドキュメント4

4。 これで、データは新しいワークブックの複数のワークシートに分割されます。

データを列ごとに分割するドキュメント5

クリックしてKutoolsfor Excelと無料トライアルを今すぐダウンロードしてください!


Kutools for Excelの列に基づいて、データを複数のワークシートに分割します

Kutools for Excel 300以上の便利なExcelツールが含まれています。 30日以内に制限なしで無料でお試しいただけます。 今すぐ無料トライアルをダウンロードしてください!


関連記事:

行数でデータを複数のワークシートに分割するにはどうすればよいですか?


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300以上の強力な機能。 Office / Excel2007-2019および365をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 全機能30日間の無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性が50%向上し、毎日何百ものマウスクリックが減ります。
officetab下部
コメントを並べ替える
コメント (291)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
VBAコードの列に基づいてデータを複数のワークシートに分割すると、エラーが発生します。 修正して更新してください。 サンプルのExcelファイルを提供すると、非常に役立ちます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、それが私のために働くコードをありがとう! 日付に基づいてXNUMXつのマスターシートを複数のシートに分割するコードを見つけようとしています
このコメントは、サイトのモデレーターによって最小化されました
それはすごかったです! このプロセスには30時間以上かかりましたが、XNUMX秒以内に完了しました。 これは、VBAライブラリ用に保持します。 ありがとうございました!
このコメントは、サイトのモデレーターによって最小化されました
こんにちは。ワークシートに30000個のセルがあり、数か月で分割する必要があります。 それをより速く行うために使用できるコードはありますか? 私は8つの列を持っており、日付は列Bです。与えられた上記のコードで遊んでいますが、かなり失敗しています。 これを手伝ってくれませんか。 前もって感謝します
このコメントは、サイトのモデレーターによって最小化されました
次のエラーが発生します:ランタイムエラー「6」オーバーフローデバッグ後、次の行を表示しますFor i = 2ToIr私のExcel行は500,000を超えています。 解決策はありますかコードありがとうございます。 よろしくLok
このコメントは、サイトのモデレーターによって最小化されました
ハロー、コードありがとうございます。 次のエラーが発生します。実行時エラー「6」が次の行でオーバーフローします。Fori=2ToIrこれに対する任意の解決策。 ありがとうございました
このコメントは、サイトのモデレーターによって最小化されました
F5キーを押すとエラーが発生します-参照を要求するGoToBox??
このコメントは、サイトのモデレーターによって最小化されました
VBAプロセスは完璧に機能しました。専門知識を共有し、時間を大幅に節約していただき、ありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
VBAコードは完全に機能しました。 Sheet1に変更が加えられたため、シートが更新されていないようです。 手伝ってください。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、それが私のために働くコードをありがとう! 質問/コメントは1つだけです。 2コピーされたデータには、元のファイルのレイアウトは含まれていません。 オートフィルターを使用してデータをテーブルとしてコピーすることは可能ですか? XNUMXコピーされたデータは、タイトル範囲に制限されていないようです。 特定の範囲またはテーブル名のコードを調整することは可能ですか? これらの調整は非常に役立ちます。 よろしく、ピーター
このコメントは、サイトのモデレーターによって最小化されました
チャームのように機能します! ありがとうございました。
このコメントは、サイトのモデレーターによって最小化されました
チャームのように機能します...プレミアムコードをありがとう...:lol:
このコメントは、サイトのモデレーターによって最小化されました
どうもありがとうございました、これはうまくいきました。 ただし、各タブ内のデータを(別の列を使用して)再度並べ替えたい場合はどうなりますか? 基本的に、このVBAはそれをタブに分割しますが、さらに分割したい場合があります。それは可能ですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちはジョナサン、私は知っている古いコメントですが、将来的に他の人に役立つかもしれません:私はこれを行う必要がありましたが、VBAで簡単な方法を見つけることができませんでした。 ただし、スプレッドシートに2の組み合わせとして新しい列を作成すると、たとえば= A1& ""&A2とすると、両方の情報セットを含む1つのセルが得られます。 その後、上記のモジュールを実行すると、正常に動作します。 編集-列のデータは30文字より短くする必要があります。そうでない場合、データはコピーされず(モジュールにエラーとして表示されます)、新しいシートの中央に空白のシートが表示されます。
このコメントは、サイトのモデレーターによって最小化されました
すごい..これはすごかった。 私は長い間この問題に苦しんでいました、そしてこのコードは休息としてやって来ました。 共有していただきありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
すばらしい。 投稿していただきありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
このコードは、小さいデータ(1200行未満)の魅力のように機能しました。 (17000行)の大きなワークシートで使用しようとしましたが、10〜12枚に分割した後にクラッシュしました。 そのため、元のデータを3つの異なるワークブックに分割しようとしましたが、それでもシャットダウンしました。 私たちはWindows7を持っており、コンピューターもそれほど遅くはありません。 このコードを安全に使用するために、データの行を制限することを提案しますか? 任意の提案をいただければ幸いです。
このコメントは、サイトのモデレーターによって最小化されました
このコードは、小さいデータ(1200行未満)の魅力のように機能しました。 (17000行)の大きなワークシートで使用しようとしましたが、10〜12枚に分割した後にクラッシュしました。 そのため、元のデータを3つの異なるワークブックに分割しようとしましたが、それでもシャットダウンしました。 私たちはWindows7を持っており、コンピューターもそれほど遅くはありません。 このコードを安全に使用するために、データの行を制限することを提案しますか? 任意の提案をいただければ幸いです。 よくわからないのは、マクロがサポートできる行の最大数はいくつですか。 私はそれで遊ぶことができました...それは20kから40kの間のどこかです![/ quote]
このコメントは、サイトのモデレーターによって最小化されました
同じ問題に直面しています。 コードは、データの行数が少ないシートでは機能しますが、データが大きい場合は、「Excelは利用可能なリソースでこのタスクを完了できません。選択するデータを減らすか、他のアプリケーションを閉じてください」(同時に動作する他のアプリケーションはありません)としてエラーが表示されます。小さいデータ(1200行未満)の魅力のように機能しました。 (17000行)の大きなワークシートで使用しようとしましたが、10〜12枚に分割した後にクラッシュしました。 そのため、元のデータを3つの異なるワークブックに分割しようとしましたが、それでもシャットダウンしました。 私たちはWindows7を持っており、コンピューターもそれほど遅くはありません。 このコードを安全に使用するために、データの行を制限することを提案しますか? 任意の提案をいただければ幸いです。
このコメントは、サイトのモデレーターによって最小化されました
あなたは私のいつものヒーローです! 私はこれを何ヶ月も運がなくて探してきました。 私はこの毎週/毎月のレポートを147以上のワークシートに分割する必要があり、それらは私にkutoolsを取得しません。 その点で..私は本当にコーディングを学ぶ必要があります。 :( でもありがとう!
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、私は65000レコードと8つの異なるケースを持つシートを持っているので、基本的には80の異なるシートを生成する必要があります。 このコードを実行しようとしましたが、ランタイムエラー6オーバーフローがスローされます。 このコードを微調整して問題を解決できますか? どうぞよろしくお願いいたします。
このコメントは、サイトのモデレーターによって最小化されました
[quote]こんにちは、私は65000レコードと8つの異なるケースを持つシートを持っているので、基本的には80の異なるシートを生成するはずです。 このコードを実行しようとしましたが、ランタイムエラー6オーバーフローがスローされます。 このコードを微調整して問題を解決できますか? どうぞよろしくお願いいたします。ACEによる[/ quote] Dim vcol、i AsIntegerをDimvcol、iAsLongに変更してみてください
このコメントは、サイトのモデレーターによって最小化されました
こんにちは私はDIMvcolをLOngに変更しようとしましたが、正常に機能していましたが、エラーが発生したため、このアクションを完了するのに十分なメモリがありません。使用するデータを減らすか、他のアプリケーションを閉じてみてください。 他のアプリケーションは開いていませんが。 私は100万行を少し超えています。 16MBのファイルサイズ。 どんな助けでもいただければ幸いです。 ありがとうムスタファ
このコメントは、サイトのモデレーターによって最小化されました
素晴らしいコード-完全に機能します(変数をスプレッドシートに必要なものに変更した場合)
このコメントは、サイトのモデレーターによって最小化されました
行数が可変のシートがあります。 列の2010つは、XNUMX年以降の日付です。 他の列は、日付に対する各ファンドのNAVデータを含むファンド名です。 したがって、列を別のシートに分割したくはありません。各FUND NAMEを、毎日の日付ではなく、月末の日付ごとのNAVデータを使用して独自のシートに分割したいと思います。 これは可能ですか、それとも不可能ですか?
このコメントは、サイトのモデレーターによって最小化されました
使用しているワークシートがあり、アカウント名を再確認し、特定の行を同じ名前の新しいワークブックとシートにコピーするvbaコードを見つけようとしています。
このコメントは、サイトのモデレーターによって最小化されました
素晴らしい! VBAコードは機能しています、ありがとう! これらの出力ワークシートをワークシートではなく個別のExcelファイルに含める必要があり、多くのワークシートに分割するとエラーが発生します。
このコメントは、サイトのモデレーターによって最小化されました
StarscorとTimは、行の名前を使用してファイルのシートを複数のファイルに分割する場合、この同じWebページに小さなマクロコードがあります。「ブックを分割してExcelファイルを分離する」を検索してください。それを見つけます。 この例のコードをこの例の最後に追加して、重複するend subとsubを削除すると、もちろん、それぞれにXNUMXつのファイルが作成されます。
このコメントは、サイトのモデレーターによって最小化されました
同じブックに約65枚あるので、同じブックの異なるシートの列を一度に並べ替える方法や、異なるシートの重複を削除する方法を教えてもらえますか?
このコメントは、サイトのモデレーターによって最小化されました
これはとてもエキサイティングです! ありがとうございました。 私はしばらくの間これを探していました。
このコメントは、サイトのモデレーターによって最小化されました
すばらしい-これを共有していただきありがとうございます。 ハイライト/フォーマットを新しいワークシートに伝播することさえできます!
ここにはまだコメントが投稿されていません
もっと読み込む
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0  文字
推奨される場所