将列转置为Excel工作表

场景

假设您有一个Excel工作簿。它有3张纸。一张纸包含5列。每列都有不同的城市数据。每个工作表包含相似的5列,其中包含相同城市的不同数据。

image

挑战:

我们需要为每个唯一列创建一个包含不同工作表的文件。每张表应包含其各自列的数据。最后,我们将有5张纸,每张3列。在某种程度上,它会将列转换为工作表。

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文件以立即使用它,也可以根据需要复制代码以对其进行自定义。

运行代码后,它将立即创建一个Excel文件,该文件将有5张纸,每张纸包含3列相同城市的数据。

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

image 48Transpose Column To Sheets]

如何运作?

在上面的示例代码中,我们假设文件从每张工作表的第一个单元格开始,并且每张工作表包含相同数量的列。

在代码的前几行中,我们已经声明了过程中所需的变量。我们将列标题保存在名为cols的变量中,还创建了一个名为result.xlsx *的.xlsx文件。

接下来,我们使用循环在header.cols中在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中的新工作表的方法。这是我们的用户Mahmoodin的评论部分提出的。

我认为该当之无愧地写一篇文章,以便我们所有人都可以使用。这边有我希望这是可以解释的。如果您仍然有任何疑问或其他疑问,请在下面的评论部分中提问。

相关文章:

下载工作文件。

在Microsoft Excel 2016中使用VBA关闭警告消息 ||要关闭中断正在运行的VBA代码的警告消息,我们使用Application类。

在Microsoft Excel 2016中使用VBA添加和保存新工作簿] |要使用VBA添加和保存工作簿,我们使用Workbooks类。 Workbooks.Add可以轻松添加新工作簿,但是…​

热门文章:

50 Excel快捷方式以提高生产率更快地完成任务。这50个快捷键将使您在Excel上的工作速度更快。

Excel中的VLOOKUP函数在Excel 2016中为COUNTIF使用此惊人的功能对条件进行计数。

您无需过滤数据即可计算特定值。 Countif功能对于准备仪表板至关重要。

如何在Excel中使用SUMIF函数这是仪表板的另一个重要功能。这可以帮助您汇总特定条件下的值。