在最后一行和列中列出表名和单元格

时间:2017-12-20 07:42:31

标签: vba excel-vba excel

我希望列出表格中的所有表格名称,以及最后一行和列中表格的相应单元格。下面的代码在工作表" A1.6Laster"中查找表名。 (除了表" Lastkategori")然后将它们列在表格" A1.6.5Lastkombinationer"中。

由于我可以添加/删除表格" A1.6Laster",首先删除/清除列表。

换句话说;下面的代码可以很好地列出表的名称,但是在名单旁边的列中,我希望列出最后一行和列中每个表的相应单元格。我是否需要在For Each循环中添加一些代码?

欢迎任何输入,如果您需要更多信息,请询问!

Sub Laster()
Dim tbl As ListObject
Dim wsSummary As Worksheet
Dim ws As Worksheet
Dim lRow As Long
Dim SearchText As String
Dim GCell As Range

SearchText = "Laster"
Set GCell = Worksheets("A1.6.5Lastkombinationer").Cells.Find(SearchText).Offset(0)
Set wsSummary = Worksheets("A1.6.5Lastkombinationer")
Set ws = Worksheets("A1.6Laster")

With Worksheets("A1.6.5Lastkombinationer").ListObjects("Laster").DataBodyRange
If .Rows.Count > 1 Then
  .Offset(1, 0).Resize(.Rows.Count - 1, .Columns.Count).Rows.Delete
End If
End With
Worksheets("A1.6.5Lastkombinationer").ListObjects("Laster").DataBodyRange.Rows(1).ClearContents

lRow = GCell.Row
    For Each tbl In Worksheets("A1.6Laster").ListObjects
        If tbl.Name <> "Lastkategori" Then
        lRow = lRow + 1
        With wsSummary
            .Cells(lRow, "A") = tbl.Name
        End With
        End If
    Next tbl

ws.ListObjects("Lastkategori").ListColumns(1).DataBodyRange.Copy
wsSummary.ListObjects("Laster").DataBodyRange(1, 1).End(xlDown).Offset(1).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False

End Sub

1 个答案:

答案 0 :(得分:0)

我假设当你说最后一行时,列是指每张桌子的右下角单元格。

在wsWsummary ... End With中添加以下代码段。它的作用是获取每个表的数据范围的单元格范围,并获取最后一行的最后一列,并将该单元格中的数据吐出到表名旁边的列中。

        Dim r As Range
        Dim last As Range

        Set r = tbl.DataBodyRange
        Set last = r.Cells(r.Rows.Count, r.Columns.Count)
        ws.Cells(lRow, "B").Value = last