VBAを使用してExcelシートにトランスポーズ列
シナリオ
あなたがExcelワークブックを持っていると仮定します。 3枚あります。シートには5列が含まれています。各列には、異なる都市のデータがあります。各シートには、同じ都市の異なるデータを含む同様の5列が含まれています。
チャレンジ:
一意の列ごとに異なるシートを含むファイルを作成する必要があります。各シートには、それぞれの列のデータが含まれている必要があります。最終的には、それぞれ3列の5枚のシートになります。ある意味で、それは列をシートに転置することです。
ロジック:
まず、列ごとに異なるシートを含むワークブックを作成する必要があります。これを行うには、元のファイルの最初のシートの見出しを確認します。
次に、元のシートの各シートをループして、各列を新しいブックの対応するシートにコピーする必要があります。
列をシートに転置する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 [
Transpose 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つの重要な機能です。これは、特定の条件で値を合計するのに役立ちます。