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

Excelで行ごとに新しいシートを作成するにはどうすればよいですか?

列Aにすべての学生の名前が含まれるスコアテーブルがあるとします。次に、列Aのこれらの名前に基づいて新しいシートを作成し、シートごとに一意の学生のデータが含まれているとします。 または、列Aの名前を考慮せずに、テーブルの各行に対して新しいシートを作成するだけです。このビデオでは、それを実現するためのメソッドを取得します。

VBAコードを使用して行ごとに新しいシートを作成します
Kutools forExcelのSplitDataユーティリティを使用して、行ごとに新しいシートを作成します


VBAコードを使用して行ごとに新しいシートを作成します

次のコードを使用すると、列の値に基づいて新しいシートを作成することも、Excelの各行に新しいシートを作成することもできます。

1。 押す 他の + F11 キーを同時に開いて アプリケーション向け Microsoft Visual Basic 窓。

2。 の中に アプリケーション向け Microsoft Visual Basic ウィンドウ、クリック インセット > モジュール。 次に、次のコードをに貼り付けます モジュール 窓。

VBAコード:列に基づいて行ごとに新しいシートを作成します

Sub parse_data()
'Update by Extendoffice 2018/3/2
    Dim xRCount As Long
    Dim xSht As Worksheet
    Dim xNSht As Worksheet
    Dim I As Long
    Dim xTRrow As Integer
    Dim xCol As New Collection
    Dim xTitle As String
    Dim xSUpdate As Boolean
    Set xSht = ActiveSheet
    On Error Resume Next
    xRCount = xSht.Cells(xSht.Rows.Count, 1).End(xlUp).Row
    xTitle = "A1:C1"
    xTRrow = xSht.Range(xTitle).Cells(1).Row
    For I = 2 To xRCount
        Call xCol.Add(xSht.Cells(I, 1).Text, xSht.Cells(I, 1).Text)
    Next
    xSUpdate = Application.ScreenUpdating
    Application.ScreenUpdating = False
    For I = 1 To xCol.Count
        Call xSht.Range(xTitle).AutoFilter(1, CStr(xCol.Item(I)))
        Set xNSht = Nothing
        Set xNSht = Worksheets(CStr(xCol.Item(I)))
        If xNSht Is Nothing Then
            Set xNSht = Worksheets.Add(, Sheets(Sheets.Count))
            xNSht.Name = CStr(xCol.Item(I))
        Else
            xNSht.Move , Sheets(Sheets.Count)
        End If
        xSht.Range("A" & xTRrow & ":A" & xRCount).EntireRow.Copy xNSht.Range("A1")
        xNSht.Columns.AutoFit
    Next
    xSht.AutoFilterMode = False
    xSht.Activate
    Application.ScreenUpdating = xSUpdate
End Sub

注意:A1:C1はテーブルのタイトル範囲です。 必要に応じて変更できます。

3。 押す F5 コードを実行するためのキーを押すと、以下のスクリーンショットのように、現在のワークブックのすべてのワークシートの後に新しいワークシートが作成されます。

列の値を考慮せずに行ごとに新しいシートを直接作成する場合は、次のコードを使用できます。

VBAコード:行ごとに新しいシートを直接作成します

Sub RowToSheet()
	Dim xRow As Long
	Dim I As Long
	With ActiveSheet
		xRow = .Range("A" & Rows.Count).End(xlUp).Row
		For I = 1 To xRow
			Worksheets.Add(, Sheets(Sheets.Count)).Name = "Row " & I
			.Rows(I).Copy Sheets("Row " & I).Range("A1")
		Next I
	End With
End Sub

コードを実行すると、アクティブなワークシートの各行が新しいワークシートに配置されます。

注意:見出し行も、このVBAコードを使用して新しいシートに配置されます。


Kutools forExcelのSplitDataユーティリティを使用して、行ごとに新しいシートを作成します

実際、上記の方法は複雑で理解しにくいものです。 このセクションでは、 分割データ の有用性 Kutools for Excel.

申請する前に Kutools for Excelについては 最初にダウンロードしてインストールします.

1.新しいシートの作成に使用する必要のあるテーブルを選択し、[ クツールズプラス> スピットデータ。 スクリーンショットを参照してください:

2。 の中に データを複数のワークシートに分割する ダイアログボックスは、次のようにしてください。

A.列の値に基づいて新しいシートを作成するには:

1)。 を選択してください 特定の列 オプションを選択し、ドロップダウンリストでデータを分割する列を指定します。
2)。 ワークシートに列の値で名前を付ける場合は、を選択してください 列の値 キャンペーンのルール ドロップダウンリスト;
3)。 クリック OK ボタン。 スクリーンショットを参照してください:

B.各行に新しいシートを直接作成する場合:

1)。 選択する 固定行 オプション、番号を入力 1 ボックスに;
2)。 選択する 行番号 から キャンペーンのルール ドロップダウンリスト;
3)。 クリック OK ボタン。 スクリーンショットを参照してください:

すべての新しいシートが入った新しいワークブックが作成されます。 以下のスクリーンショットを参照してください。

列の値に基づいて各行に新しいシートを作成します。

列の値を考慮せずに各行に新しいシートを作成する:

  無料トライアルをご希望の方は(30-day) このユーティリティの クリックしてダウンロードしてください、次に、上記の手順に従って操作を適用します。

Kutools forExcelのSplitDataユーティリティを使用して、行ごとに新しいシートを作成します


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

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

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

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

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (33)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
こんにちは。テンプレートファイルMyformatに基づいてワークシートを作成し、最初の列のデータに従って名前を付けます。 VBAコードを次のようにカスタマイズしましたが、空白のシートが多すぎます。 白紙の生成をやめるのを手伝ってくれませんか。 ありがとうございました。 Kumar Sub AddSheets()Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook For Each cell In wsWithSheetNames.Range( "A2:A165")With wbToAddSheets Add After:= ActiveSheet Sheets.Add Type:= _ "C:\ Users \ Dimple \ AppData \ Roaming \ Microsoft \ Templates \ MyFormat.xltx" On Error Resume Next ActiveSheet.Name = cell.Value If Err.Number = 1004 Then Debug.Print cell.Value&"すでにシート名として使用されています"End If On Error GoTo 0 End With Next cell End Sub
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、
私は常にA行の一意のエントリごとに2枚のシートを取得します。 なぜですか? また、生成されたシートが作成する行の合計量をシート名に追加するのはどれほど難しいでしょうか。 本当にありがとう! 寄付をお願いします。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは。ExcelファイルテンプレートのMyFormatを使用してワークシートを生成し、最初の列のデータでワークシートに名前を付けます。 次のVBAコードは、MyFormatに従ってワークシートを生成するために正常に機能しています。 しかし、通常のExcelテンプレートでも何百もの空白シートが生成されています。 誰かが余分な空白のシートを生成するのをやめるのを手伝ってくれませんか。 ありがとうKumarSubAddSheets()Dim cell As Excel.Range Dim wsWithSheetNames As Excel.Worksheet Dim wbToAddSheetsTo As Excel.Workbook Set wsWithSheetNames = ActiveSheet Set wbToAddSheetsTo = ActiveWorkbook For Each cell In wsWithSheetNames.Range( "A2:A165")With wbToAddShe .Add After:= ActiveSheet Sheets.Add Type:= _ "C:\ Users \ Dreamline \ AppData \ Roaming \ Microsoft \ Templates \ MyFormat.xltx" On Error Resume Next ActiveSheet.Name = cell.Value If Err.Number = 1004次に、Debug.Print cell.Value&"すでにシート名として使用されています"End If On Error GoTo 0 End With Next cell End Sub
このコメントは、サイトのモデレーターによって最小化されました
ワークシート名の長さはXNUMX文字以下である必要があります。
あまり一般的な知識ではありませんが、そうでない場合、コードはデフォルトの空白の「シート番号」ワークシートを出力します。

解析コードが実行する新しいワークシートを作成し、次のように最初の列を参照します。
= IF(OR('参照元'!B1 <> ""、LEN('参照元'!B1)> 30)、LEFT('参照元'!B1,30)、'参照元'!B1)


必要に応じて、シートの残りの部分をコピーするか参照してください。 他のワークシートの参照で問題が発生した場合は、列にデータ検証の制限がないことを確認してください。
このコメントは、サイトのモデレーターによって最小化されました
これを投稿していただきありがとうございます!!!! チャームのように働いた。 最初のコードセットがどのように機能するか説明できますか?
このコメントは、サイトのモデレーターによって最小化されました
これありがとう!



VBAコードでは、XNUMX列目とXNUMX列目の行データを組み合わせた結果のシートに名前を付ける方法はありますか?



したがって、例のシート2は、自動的に「linda100」という名前になります。
このコメントは、サイトのモデレーターによって最小化されました
親愛なるジョイス、
コメントありがとうございます! 以下のVBAスクリプトがお役に立てば幸いです。

サブparse_data()
薄暗いxRCountAsLong
ワークシートとして薄暗いxSht
ワークシートとしての薄暗いxNSht
薄暗い私は長く
Dim xTRrow As Integer
新しいコレクションとしての薄暗いxCol
文字列としての薄暗いxTitle
エラーで次の再開
Application.ScreenUpdating = False
xSht=ActiveSheetに設定します
xRCount = xSht.UsedRange.End(xlDown).Row
xTitle = "A1:B1"
xTRrow = xSht.Range(xTitle).Row
I=2の場合xRCountへ
xCol.Add(CStr(xSht.Cells(I、1))、CStr(xSht.Cells(I、1)))を呼び出す
次へ
Debug.Print xCol.Count
I=1の場合xCol.Countへ
xSht.Range(xTitle).AutoFilter(1、CStr(xCol.Item(I)))を呼び出します
xNSht=Nothingを設定します
xNSht = Worksheets(CStr(xCol.Item(I)))を設定します
xNShtが何もない場合
xNSht = Worksheets.Add(、Sheets(Sheets.Count))を設定します
xNSht.Name = CStr(xCol.Item(I)&xSht.Cells(I + 1、2))

xNSht.Move、Sheets(Sheets.Count)
終了する場合
xSht.Range( "A"&xTRrow& ":A"&xRCount).EntireRow.Copy xNSht.Range( "A1")
xNSht.Columns.AutoFit
次へ
xSht.AutoFilterMode = False
xSht.Activate
Application.ScreenUpdating = True
End Subの
このコメントは、サイトのモデレーターによって最小化されました
これは非常に役に立ちました。まさに私が探していたものです。 ありがとう!
このコメントは、サイトのモデレーターによって最小化されました
このコードは非常に役立ち、ほとんど私が探していたものです。
しかし、XNUMX枚になるように調整することはできますか?
シート1はデータです-列Aが名前であるデータの表
シート2はテンプレートであり、多数のフィールドに入力が必要です
私が望んでいたのは、マクロを実行することです。
1テンプレートをコピーして同じファイルに貼り付け、セルA1の名前と同じ名前をシートに付けます。
2セルB1をコピーしてから、新しいテンプレートの選択したフィールドに貼り付けます
3行1に沿って空になるまで繰り返します
4次に、行2と各行を最後まで繰り返します。
結果はx番号のファイルです。 シートはすべてテンプレートと同じで、すべてのフィールドに入力されています。
テンプレートからテーブルにデータを抽出するという逆の方法で機能するファイルを継承しましたが、元に戻すことはできません。
このコメントは、サイトのモデレーターによって最小化されました
親愛なるサム、
ここにワークブックを添付していただければ幸いです。
下の[ファイルのアップロード]ボタンを使用してファイルをアップロードできます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは私はあなたのコードを使おうとしましたが、エラーが発生します
実行時エラー'1004':
アプリケーション定義またはオブジェクト定義のエラー
私はVBA(またはそのことに関する技術)の知識がありませんが、プレスデバッグの場合、11行目xRCount = xSht.Cells(xSht.Rows.Count、1)が強調表示されます。 End(xIUp).Row
私は127列と337行(行は列によって異なります)を持つ大きなファイルで作業しています。これは、番号とその詳細が記載されたリストです。
ご指摘のとおり範囲を変更しましたが、まだ機能しませんExcel2010を使用しています。可能であれば機能させる方法を教えてください。
ありがとうございました
このコメントは、サイトのモデレーターによって最小化されました
親愛なるベアトリス、
コードは問題解決で更新されます。 もう一度お試しください。 コメントありがとうございます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、私はここで私の状況に役立つ何かがあると思いますが、私はVBAまたはスクリプトを実行することができます。あなたが助けてくれることを願っています。
データを入力するための多数のセルを含むテンプレートがあり、テンプレートに入力したい検索キー(一意ではない)があります。 検索キーに基づいてデータが検索され、一致したキーの対応するデータがフェッチされ、テンプレートに入力されます。 記入したテンプレートは新しいワークシートに保存されます。 一致するエントリが複数ある可能性があります。 すべての一致が選択され、特定の数の新しいワークシートが作成されるまで、リストを検索し続けるためのスクリプトが必要です。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、新しいワークシートごとに見出し行を保持する方法はありますか? (私の添付ファイルに赤で囲まれています)

コードはマスターワークシートからすべての行を取得し、それらを新しいワークシートに転送します。これはすばらしいことです。 ただし、新しい各ワークシートの上部に「マスター」ヘッダー値(赤で囲まれた値)を保持したいと思います。 ありがとう!



私は上からこのコードを参照しています:

Sub RowToSheet()
xRowを暗くする
薄暗い私は長く
ActiveSheetを使用
xRow = .Range( "A"&Rows.Count).End(xlUp).Row
I=1の場合xRow
Worksheets.Add(、Sheets(Sheets.Count))。Name = "Row"&I
.Rows(I).Copy Sheets( "Row"&I).Range( "A1")
次の私
最後に
End Subの
このコメントは、サイトのモデレーターによって最小化されました
すばらしいコードですが、データが列Aではなく列Gにある場合、助けを得ることができますか? 列Gのデータを別のタブに表示するには何を変更する必要がありますか?

感謝
このコメントは、サイトのモデレーターによって最小化されました
これは素晴らしいコードです。 OfficeExtendのブレインボックスに感謝します!! とにかく、このコードを少し調整して、行ではなく*列*ごとに個別のシートを作成することはできますか? 私が達成しようとしていることの写真を添付し​​ました。 これは可能ですか? 敬具。
このコメントは、サイトのモデレーターによって最小化されました
グッド·デイ、
ここにあなたの写真が見えませんでした。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、私の名前フィールドがC列にある場合のコードの変更方法
このコメントは、サイトのモデレーターによって最小化されました
こんにちはアブドゥルベイシット、
以下のVBAコードが役立ちます。 ぜひお試しください。
次の行:xCName = "3"、3は、Excelの列番号(ここではC列)を示します。 必要に応じて任意の列番号に変更できます。

サブparse_data()
'更新者 Extendoffice 2018 / 3 / 2
薄暗いxRCountAsLong
ワークシートとして薄暗いxSht
ワークシートとしての薄暗いxNSht
薄暗い私は長く
Dim xTRrow As Integer
新しいコレクションとしての薄暗いxCol
文字列としての薄暗いxTitle
Dim xSUpdate をブール値として
Dim xCName を整数として
Dim xTA、xRA、xSRg1 As String
xSht=ActiveSheetに設定します
エラーで次の再開
xRCount = xSht.Cells(xSht.Rows.Count、1).End(xlUp).Row
xTitle = "A1:C1"
xCName = "3"'この番号を、に基づいて新しいシートを作成する列番号に変更します
xTRrow = xSht.Range(xTitle).Cells(1).Row
I=2の場合xRCountへ
xCol.Add(xSht.Cells(I、xCName).Text、xSht.Cells(I、xCName).Text)を呼び出します
次へ
xSUpdate = Application.ScreenUpdating
Application.ScreenUpdating = False
xSRg = xSht.Cells(1、xCName).Address(RowAbsolute:= False、ColumnAbsolute:= False)
I=1の場合xCol.Countへ
xSht.Range(xTitle).AutoFilter(xCName、CStr(xCol.Item(I)))を呼び出します
xNSht=Nothingを設定します
xNSht = Worksheets(CStr(xCol.Item(I)))を設定します
xNShtが何もない場合
xNSht = Worksheets.Add(、Sheets(Sheets.Count))を設定します
xNSht.Name = CStr(xCol.Item(I))

xNSht.Move、Sheets(Sheets.Count)
終了する場合
xSht.Range( "A"&xTRrow& ":A"&xRCount).EntireRow.Copy xNSht.Range( "A1")
xNSht.Columns.AutoFit
次へ
xSht.AutoFilterMode = False
xSht.Activate
Application.ScreenUpdating = xSUpdate
End Subの
このコメントは、サイトのモデレーターによって最小化されました
トリックを行うためのクールなVBAコード。

最初の列をコピーしないように変更するにはどうすればよいですか? そして、列名を削除するには?

よろしく
このコメントは、サイトのモデレーターによって最小化されました
特定の列を使用してシートに自動的に名前を付ける方法についてサポートを受けられますか? これは、行からシートへのVBA用です。 下記参照

Sub RowToSheet()

xRowを暗くする

薄暗い私は長く

ActiveSheetを使用

xRow = .Range( "A"&Rows.Count).End(xlUp).Row

I=1の場合xRow

Worksheets.Add(、Sheets(Sheets.Count))。Name = "Row"&I

.Rows(I).Copy Sheets( "Row"&I).Range( "A1")

次の私

最後に

End Subの
このコメントは、サイトのモデレーターによって最小化されました
それが隠された後続スペースだったことを気にしないでください。 TRIM機能を使用してクリーンアップしました。 行数を持っている(実際には行数なので、シートの前に行-1が追加されるのは素晴らしいことです)
このコメントは、サイトのモデレーターによって最小化されました
上記のコードの使用を参照する方法(クレジット)? コードを変更することは可能ですか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、これはオープンなコミュニケーションプラットフォームです。 コードは参照および変更できます。
このコメントは、サイトのモデレーターによって最小化されました
ナナ
86
2
このコメントは、サイトのモデレーターによって最小化されました
こんにちは! このコードを使用したところ、機能しました。 エントリごとに新しいシートを作成することに加えて、それを列に転置したいのですが、理解できません。 したがって、上記の例では、Nanaの出力は次のようになります- お名前 ナナスコア 86いいえ。 2
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、このコードを使用して機能しましたが、ヘッダーで複数の行を選択したい場合、コードで何が変更されますか? シートには、すべてのシートに必要な複数の行があります。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、どうやってわかりましたか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは。マクロを実行するたびに新しいシートを1つだけ追加するコードはありますか。たとえば、1回目はセルA1の内容に新しいシートの名前が付けられ、2回目はマクロの実行時に新しいシートに名前が付けられます。 A2等の内容を期待して感謝します
ここにはまだコメントが投稿されていません
もっと読む
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護