VBA中如何获取一个表格的行数和列数

VBA中如何获取一个表格的行数和列数,第1张

有的时候在 *** 作excel的时候,涉及到循环什么时候结束,就非常需要知道 *** 作区域的最后一行是第几行,或者最后一列是第几列。

因此这边使用下面两个函数,可以比较快速的获取整个区域的行数和列数(不是指定的的区域)

主要就是使用了CountA来统计非空单元格的数量,然后这边传的参数是一整行或者一整列,计算这行和这列有多少个非空单元格,就知道这个表格的行数和列数了。

亲,是否一定要用VBA?公式岂不是更简单?

如下图,B1的公式如下,右拉到D1,然后下拉到底:

=MID($A1,COLUMN(A$1),1)

E1的公式如下,右拉到G1,然后下拉到底:

=--RIGHT((B1+OFFSET($C$1,COUNTA($C:$C)-1,)),1)

可以使用VBA,读取Word文档中的所有表格,并把数字类型的单元格读出来计算。

下面是示例代码,自己适当改改就可以用了。

Dim tbs,tb, rg
Set tbs = documents(1)Tables
For t1 = 1 To tbsCount
    Set tb = tbs(t1)
    For i = 1 To tbRowsCount
        For j = 1 To tbColumnsCount
            With tb
                rg = Cell(i,j)RangeText
                rg = left(rg, len(rg)-2)
                If IsNumeric(rg) Then
                    '这里可以补充代码,把表格中的数字,参与表达式运算
                End If
            End With
        Next j
    Next i
Next t1
Set tbs = nothing
Set tb = nothing

如果你的数据在A列,代码如下,有问题HI我:
Sub temp1()
For i = [a65536]End(xlUp)Row To 1 Step -1
s = 0
e = 0
s = CLng(InStr(1, Cells(i, 1)Value, "[")) + 1
e = CLng(InStr(1, Cells(i, 1)Value, "]"))
If s > 1 And e > s Then
n = CLng(Mid(Cells(i, 1)Value, s, e - s))
Rows(i + 1 & ":" & i + n)Insert Shift:=xlShiftUp
End If
Next
End Sub

请查收附件。代码如下。

Sub tq()
Dim r, n As Long
Dim rg As Range
Dim BGArr
r = Range("A" & RowsCount)End(xlUp)Row
BGArr = Range("B1:G" & r)
n = Mid(Range("A" & r), 2, 1)
For Each rg In Range("A1:A" & r)
    BGArr(rgRow, 1) = --Left(rg, 1)
    BGArr(rgRow, 2) = --Mid(rg, 2, 1)
    BGArr(rgRow, 3) = --Right(rg, 1)
    BGArr(rgRow, 4) = --Right(BGArr(rgRow, 1) + n, 1)
    BGArr(rgRow, 5) = --Right(BGArr(rgRow, 2) + n, 1)
    BGArr(rgRow, 6) = --Right(BGArr(rgRow, 3) + n, 1)
Next
Range("B:G")ClearContents
Range("B1:G" & r) = BGArr
End Sub


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13399312.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-29
下一篇 2023-07-29

发表评论

登录后才能评论

评论列表(0条)

保存