|
本帖最后由 我行我速2008 于 2022-7-25 17:54 编辑
Sub 清除()
Range("K2").CurrentRegion.Offset(1).ClearContents
End Sub
Sub tt()
Dim Ar, R%, C%, Reg, Str$, Br()
清除
Ar = [A1].CurrentRegion.Offset(2)
ReDim Br(1 To UBound(Ar), 1 To 4)
For R = 1 To UBound(Ar)
For C = 1 To UBound(Ar, 2)
Str = Ar(R, C)
If InStr(Str, "K0+") Then
Br(R, 1) = Str
ElseIf InStr(Str, "填") Then
Br(R, 2) = Application.Round(Br(R, 2) + TQ(Str, 1), 3)
ElseIf InStr(Str, "挖") Then
Br(R, 3) = Application.Round(Br(R, 3) + TQ(Str, 1), 3)
ElseIf InStr(Str, "石方") Then
Br(R, 4) = Application.Round(Br(R, 4) + TQ(Str, 1), 3)
End If
Next C
Next R
Range("K3").Resize(UBound(Ar), 4) = Br
End Sub
Function TQ(Str As String, Optional I As String = "1")
Dim matches, match, A, S
With CreateObject("vbscript.regexp")
Select Case I
Case "1": .Pattern = "\d+\.?\d+"
End Select
.Global = True
Set matches = .Execute(Str)
For Each match In matches
A = A & S & match
Next
TQ = IIf(Len(A) > 0, A, "")
End With
End Function |
|