如何在excel中使用VBA确定最后一列(带有值的最后一列)?

时间:2012-02-22 13:26:28

标签: vba excel-vba excel

我怀疑是否有人可以帮助我。

我正在做一个需要获得测试结果摘要的项目。我的流程如下,

首先,我需要打开我收集的测试结果,然后创建一个数据透视表,在根据我需要查看的内容进行设置后,我会将表复制到另一个电子表格中。在此电子表格中,它会将某些名称更改为所需的名称,最后,它将被复制到摘要表中。然后我还需要在%中列出摘要。

我面临的问题是,对于我收集的测试结果,当我将其放入数据透视表时,我无法确定将出现的列数。例如

在例子中,我们可以拥有 enter image description here

在另一种情况下,我们可以

enter image description here

如果您注意到第二张图片中使用了更多列。 因此,我想知道您是否有任何方式可以与我分享,以确定最后一个可以复制详细信息的列。

我可以得到最后一列的编号,这样我也可以得到摘要,因为我需要把它放在%的形式。

此刻,我正在使用“范围(A1:Z1000000)”,这对我来说完全不可能,因为我无法手动找到%。

不过,我在VBA代码中需要它。

将欣赏所提供的所有意见和选项!提前谢谢!

2 个答案:

答案 0 :(得分:1)

这应该可以解决问题:

Sub test()

  Dim maxColumn As Long

  'Create the table here
  maxColumn = getMaxUsedColumnNumber("PivotTableSheet")
  'do what you need with the number

End Sub

Function getMaxUsedColumnNumber(sheetName As String) As Long
  With Sheets(sheetName)
    getMaxUsedColumnNumber = .Cells.Find(What:="*", after:=.Range("A1"), LookIn:=xlFormulas, _
            SearchOrder:=xlByColumns, SearchDirection:=xlPrevious).Column
  End With
End Function

答案 1 :(得分:0)

您可以使用.SpecialCells(),如下所示:

ActiveSheet.UsedRange.SpecialCells(xlLastCell).Column

或者,查看数据透视表对象的ColumnRange属性。它有一个Count属性,它将返回数据透视表中的列数,这也可以提供帮助。