因此这边使用下面两个函数,可以比较快速的获取整个区域的行数和列数(不是指定的的区域)
主要就是使用了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, rgSet 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
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)