シナリオ

あなたがExcelワークブックを持っていると仮定します。 3枚あります。シートには5列が含まれています。各列には、異なる都市のデータがあります。各シートには、同じ都市の異なるデータを含む同様の5列が含まれています。

image

チャレンジ:

一意の列ごとに異なるシートを含むファイルを作成する必要があります。各シートには、それぞれの列のデータが含まれている必要があります。最終的には、それぞれ3列の5枚のシートになります。ある意味で、それは列をシートに転置することです。

image

ロジック:

まず、列ごとに異なるシートを含むワークブックを作成する必要があります。これを行うには、元のファイルの最初のシートの見出しを確認します。

次に、元のシートの各シートをループして、各列を新しいブックの対応するシートにコピーする必要があります。

列をシートに転置するVBAコード。

最初にシートを転置するVBAコードを見てみましょう。以下に説明します。

Sub TransposeColsToSheets()

'varibles

Dim wb As Workbook

Dim twb As Workbook

Dim lstRw As Integer

Dim lstCl As Integer

Dim cols As Range

With Application

.DisplayAlerts = False

.ScreenUpdating = False

End With

'creating new file

Set wb = Workbooks.Add

'saving the file. Replace the path with your destination.

wb.SaveAs "C:\Users\Manish Singh\Desktop\Excel Tip\result.xlsx"

Set twb = ThisWorkbook

twb.Sheets(1).Activate

lstCl = Cells(1, Columns.Count).End(xlToLeft).Column

'identfying headers for city names

Set cols = Range(Cells(1, 1), Cells(1, lstCl))

'loop to create sheets

For x = 1 To cols.Count

wb.Sheets.Add.Name = "page" & x

Next

'loop to transpose columns to sheets

For Each sh In twb.Sheets

For x = 1 To cols.Count

sh.Activate

lstRw = Cells(Rows.Count, 1).End(xlUp).Row

Range(Cells(1, x), Cells(lstRw, x)).Copy

wb.Sheets("page" & x).Activate

lstCl = Cells(1, Columns.Count).End(xlToLeft).Column + 1

Range(Cells(1, lstCl), Cells(1, lstCl)).PasteSpecial xlPasteAll

Next x

Next sh

'saving and closing the result workbook

wb.Save

wb.Close

With Application

.DisplayAlerts = True

.ScreenUpdating = True

End With

End Sub

beloveファイルをダウンロードしてすぐに使用するか、コードをコピーして必要に応じてカスタマイズできます。

コードを実行すると、5枚のシートを含むExcelファイルがすぐに作成され、各シートには同じ都市のデータの3列が含まれます。

`link:/wp-content-uploads-2019-12-Transpose-Column-To-sheets.xls [

image 48Transpose Column To Sheets]

どのように機能しますか?

上記のサンプルコードでは、ファイルは各シートの最初のセルから始まり、各シートには同じ数の列が含まれていると想定しています。

コードの最初の数行で、プロシージャで必要になる変数を宣言しました。列ヘッダーをcolsという名前の変数に保存しました。また、result.xlsx *という名前の.xlsxファイルも作成しました。

次に、ループを使用して、ヘッダーの挿入と同じ数のシートをresult.xlsxに作成しました。

'loop to create sheets

For x = 1 To cols.Count

wb.Sheets.Add.Name = "page" & x

Next

次に、ネストされたループを使用しました。最初のループは、元のファイルのシートを反復することです。各列をコピーしてresults.xlsxファイルの各シートに貼り付けるための次のループ。

最後に、ブックresult.xlsxを保存して閉じます。そして、それは行われます。

そうですね、これは、VBAを使用してExcelで各列を新しいシートにコピーする方法です。これは、userMahmoodinのコメントセクションから質問されました。

私たち全員が利用できるように、記事に値すると思いました。ここにあります。それが十分に説明的だったと思います。それでも疑問やその他の質問がある場合は、以下のコメントセクションで質問してください。

関連記事:

作業ファイルをダウンロードします。

link:/ general-topics-in-vba-turn-off-warning-messages-using-vba-in-microsoft-excel [Microsoft Excel2016でVBAを使用して警告メッセージをオフにする] |実行中のVBAコードを中断する警告メッセージをオフにするには、Applicationクラスを使用します。

link:/ files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Microsoft Excel2016でVBAを使用して新しいブックを追加および保存する] | VBAを使用してワークブックを追加および保存するには、Workbooksクラスを使用します。 Workbooks.Addは、新しいワークブックを簡単に追加しますが…​

人気の記事:

link:/ keyboard-formula-shortcuts-50-excel-shortcuts-to-increase-your-productivity [生産性を高めるための50のExcelショートカット] |あなたの仕事をより速くしてください。これらの50のショートカットにより、Excelでの作業がさらに高速になります。

link:/ forms-and-functions-introduction-of-vlookup-function [ExcelのVLOOKUP関数] |これは、さまざまな範囲やシートから値を検索するために使用される、Excelの最も使用され人気のある関数の1つです。 link:/ Tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] |この驚くべき関数を使用して、条件付きの値をカウントします。

特定の値をカウントするためにデータをフィルタリングする必要はありません。ダッシュボードを準備するには、Countif関数が不可欠です。

link:/ excel-formula-and-function-excel-sumif-function [ExcelでSUMIF関数を使用する方法] |これは、ダッシュボードのもう1つの重要な機能です。これは、特定の条件で値を合計するのに役立ちます。