将列数据复制到新工作表并循环遍历列

时间:2016-08-30 16:07:21

标签: excel-vba powerpivot vba excel

我有一个包含超过60列的Excel电子表格。每列包含来自SharePoint调查的数据。列标题是从SharePoint数据连接导入的实际调查问题。我试图在这里做几件事。

首先,我想将每一列复制到一个新的工作表。(我需要这样做的原因是我可以将每列中的数据添加到PowerPivot数据模型.PowerPivot识别将整个工作表作为一个表,因此不允许我只选择" A列和#34;添加到数据模型中,它会自动添加包含所有60列的整个表格。

由于我不希望在此之前先手动添加60张新表,因此我希望将每列复制到新创建的工作表中。 (工作表不需要命名,我可以手动完成,除非有人也有这么简单的方法!)

然后,我希望代码循环执行复制并粘贴到新创建的工作表的每一列。

我在这里找到了几个相关主题的代码示例,但我对VBA这么新,我很难把它们放在一起。非常感谢你的时间!

我已经尝试过将其复制过来的以下内容,但我不确定如何添加新工作表并循环遍历列

Sub CopyColumnToNewSheet()

    Dim lastRow As Long
    lastRow = Sheets("Sheet1").Range("A" & Rows.Count).End(xlUp).Row
    Sheets("Sheet2").Range("A1:A" & lastRow).Value = Sheets("Sheet1").Range("A1:A" & lastRow).Value

End Sub

1 个答案:

答案 0 :(得分:0)

您应该这样做,请注意,没有错误处理,适合您的需求

Sub CopyColumnToNewSheet()
    Const MySourcheSheetName = "Sheet1"
    Dim CounterColumn As Long
    For CounterColumn = 1 To Sheets(MySourcheSheetName).Cells.SpecialCells(xlCellTypeLastCell).Column
    Sheets.Add
    ActiveSheet.Name = Sheets(MySourcheSheetName).Cells(1, CounterColumn).Value 'ideally the title is unique and it's in the first row of each column
    Sheets(MySourcheSheetName).Columns(CounterColumn).Copy Destination:=ActiveSheet.Columns(1)
    Next CounterColumn
End Sub

enter image description here