参考grf1973老师之前的代码- Sub x()
- Dim arr, brr(), i%, x, q%, k%, y, j%, n%
- arr = Sheet1.[a1].CurrentRegion
- ReDim brr(1 To 10000, 1 To 2)
- For i = 1 To UBound(arr)
- If Len(arr(i, 1)) = 0 Then arr(i, 1) = arr(i - 1, 1)
- x = arr(i, 2)
- If InStr(x, "分") > 0 And InStr(x, "付") > 0 Then '同时包含"付""分"
- q = Val(Split(StrReverse(x), "付")(1))
- k = q * Val(Split(x, "分")(1)) '要复制的行数
- x = Replace(x, "*" & q & "付", "") '去掉*付
- ElseIf InStr(x, "分") > 0 Then '含“分”
- k = Val(Split(x, "分")(1))
- ElseIf InStr(x, "付") > 0 Then '含“付”
- y = StrReverse(x) '字符串反转
- k = Val(Split(y, "付")(1))
- k = Val(StrReverse(k)) '字符串反转(两位数以上有用,如31变成13)
- x = Replace(x, "*" & k & "付", "") '去掉“*3付”
- Else
- k = 1
- End If
- If k >= 1 Then
- For j = 1 To k
- n = n + 1: brr(n, 1) = arr(i, 1): brr(n, 2) = x
- Next
- End If
- Next
- Sheet2.Select
- Cells.ClearContents
- [a1].Resize(n, 2) = brr
- End Sub
复制代码 |