Vba 动态调整表大小到最后一行?

Vba 动态调整表大小到最后一行?,vba,excel,excel-2010,Vba,Excel,Excel 2010,我有一个表,我想在VBA中动态调整大小。 我目前的代码是: Sub resizedata() Dim ws As Worksheet Dim ob As ListObject Dim Lrow1 As Long Lrow1 = Sheets("Sheet4").Cells(Rows.Count, "J").End(xlUp).Row Set ws = ActiveWorkbook.Worksheets("Sheet4") Set ob = ws.ListObjects("Table28")

我有一个表,我想在VBA中动态调整大小。 我目前的代码是:

Sub resizedata()
Dim ws As Worksheet
Dim ob As ListObject
Dim Lrow1 As Long

Lrow1 = Sheets("Sheet4").Cells(Rows.Count, "J").End(xlUp).Row
Set ws = ActiveWorkbook.Worksheets("Sheet4")
Set ob = ws.ListObjects("Table28")

ob.Resize ob.Range.Resize(Lrow1)

End Sub
我想在这上面加一个条件

  • 表格大小应调整到第J列中第一个0之前
  • 例如:

    +-------+--------+-------+
    |Date(I)|Hours(J)| Sal(K)|
    +-------+--------+-------+
    | Aug   | 150000 | 12356 |
    | Sep   |  82547 |  8755 |
    | Oct   |  92857 | 98765 |
    | Nov   |  10057 | 45321 |
    | Dec   |      0 |     0 |
    | Jan   |      0 |     0 |
    +-------+--------+-------+
    
    上表的最后一行应该是十一月行,因为十二月是第J列中的第一个0值

    有人能帮助修改我现有的代码吗?

    类似于:

    With Sheets("Sheet4")
    
        Lrow1 = .Cells(.Rows.Count, "J").End(xlUp).Row
        Do While .Cells(Lrow1, "J").Value=0
            Lrow1 = Lrow1 - 1
        Loop
    
    End With
    

    您想在VBA中执行此操作有特殊原因吗?您只需创建一个已定义的名称,并使用以下方法创建一个自调整范围:

    OFFSET(Sheet!$A$1,0,0,COUNTA(Sheet!$A:$A),COUNTA(Sheet!$1:$1))
    OFFSET(reference, rows, cols, [height], [width])
    
    顶行显示典型用法,第二行是官方语法

    进入“公式”选项卡上的“名称管理器”,单击“新建”,为其命名并将代码粘贴到引用:

    需要注意的是,您的数据似乎有0,其中没有值。如果真的是这样的话,你必须做一个不同的测试来确定高度

    这种方法的一个好处是它总是经过计算的。如果数据发生更改,则命名范围的大小定义将根据需要进行调整


    我希望这是有帮助的,我经常使用它…

    这将帮助您自动调整表的大小

       With Worksheets("sheet-name").ListObjects("table-name")
            .Resize .Range(1, 1).CurrentRegion
        End With
    

    您正在将
    lRow1
    检查为最后一行…因此VBA正在“正确”调整到
    0
    行的大小。相反,您需要在这些行中循环,直到一行不等于零。通常情况下,我只会使用透视表,但对于这个特定的数据集,我需要使用一个计算字段,我不确定该字段是否可以在透视表中完成(至少就我所知)。基本上,我将表格导出到图表中进行可视化。动态调整大小的效果是因为如果选择了存在空值的切片器项,则图表看起来非常难看。谢谢你提供的信息。我以后肯定会用这个。你在透视表中使用过计算字段吗?它们有些有限,但可能非常有用。要添加计算字段,请选择数据透视表,然后单击“数据透视表工具”选项卡上的“选项”,在“计算”区域的右侧是“字段、项目和集”。单击计算字段,让乐趣开始!(直观af,不是吗?)是的,我已经广泛使用了计算字段。不过,我相信这次我遇到了计算字段的“限制”之一,这就是为什么我只想在这个例子中使用标准表的原因。