我有一个名为InputData的Excel工作表。我目前有9个不同的专栏。我想要一个循环来计算Excel工作表中的列数。此外,对于计数器的每个值,我想选择单个列和最后一列(每次迭代选择默认值)。一旦我选择了必要的列,我们的想法是创建一个数据透视表并绘制一个条形图。然后再次通过计数器值和最后一列(要为每次迭代选择默认值)动态转到下一列,依此类推。我无法弄清楚如何去做。对此事的任何帮助都非常感谢。在此先感谢!!
For i = 1 To lastColno
' Pivot Table Code
Range("B1").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Copy
Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Paste
Sheets("BuildData").Select
Range("J1").Select
Range(Selection, Selection.End(xlDown)).Select
Application.CutCopyMode = False
Selection.Copy
Sheets("Sheet1").Select
Range("B1").Select
ActiveSheet.Paste
Range("A1").Select
Application.CutCopyMode = False
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
"Sheet1!R1C1:R2641C2", Version:=xlPivotTableVersion14).CreatePivotTable _
TableDestination:="Sheet2!R3C1", TableName:="PivotTable1", DefaultVersion _
:=xlPivotTableVersion14
Sheets("Sheet2").Select
Cells(3, 1).Select
With ActiveSheet.PivotTables("PivotTable1").PivotFields("_KOLA_5SX")
.Orientation = xlRowField
.Position = 1
End With
With ActiveSheet.PivotTables("PivotTable1").PivotFields("Claim?")
.Orientation = xlColumnField
.Position = 1
End With
ActiveSheet.PivotTables("PivotTable1").AddDataField ActiveSheet.PivotTables( _
"PivotTable1").PivotFields("Claim?"), "Count of Claim?", xlCount
Next i
答案 0 :(得分:1)
我将假设你已经尝试了一些了解excel-vba基础知识的事情(对于未来的问题,也许还有这个问题,展示你到目前为止所做的工作)。
我会创建一个公式单元格,计算那里有多少列。将其放在另一张表中,使公式为=COUNTA('InputData'!1:1)
。 COUNTA计算范围内不为空的单元格数。假设没有空白列,这将为您提供最后一列的位置。然后,您可以在VBA循环中使用它。
如果你的公式字段在单元格中,那么#" A1"然后循环可能看起来像:
Dim lastColumn As Integer
lastColumn = Range("A2").Value
For i = 1 To lastColumn
# rest of your code here
Next i
请尝试使用此vba tutorial获取有关如何抓取列并开始制作数据透视表的提示。祝好运。希望这有助于您入门。
答案 1 :(得分:0)
很遗憾,我无法为您提供答案,但代码可以指导您完成开始。以下代码将找到您的上一栏并重复您的代码,直到" i"点击您的列号。在两者之间,您可以添加要重复的代码。
Sub rowvscol()
Dim lastColno As Long
Dim lastCol As Range
lastColno = Cells(1, Columns.Count).End(xlToLeft).Column
Set lastCol = Range(lastColno & ":" & lastColno).EntireColumn
For i = 1 To lastColno
' Pivot Table Code Goes here
Next i
End Sub
祝你好运。