[英]Excel VBA Code for Multiple Rows
我有用于附加HTML标记的VBA。 我希望该代码适用于多个行,例如J2:J50000
代码就像
Option Explicit
Sub main()
Dim newStrng As String
Dim word As Variant
Dim parTag As String, endParTag As String
Dim dateCounter As Long
parTag = "<p>" '
endParTag = "</p>" '
With Worksheets("TextSheet") '
For Each word In Split(.Range("A1").Text, " ") '<-- Range should be like A1:A50000
If Len(word) - Len(Replace(word, "/", "")) = 2 Then
dateCounter = dateCounter + 1
If dateCounter > 1 Then newStrng = newStrng & endParTag
newStrng = newStrng & parTag & word
Else
newStrng = newStrng & " " & word
End If
Next word
If dateCounter > 1 Then newStrng = newStrng & endParTag
.Range("A2").Value = LTrim(newStrng)
End With
End Sub
尝试将范围读入vba数组,然后循环遍历:
Sub main()
Dim newStrng As String
Dim word As Variant
Dim usedCell As Variant
Dim inputArray() As Variant
Dim outputArray() As Variant
Dim parTag As String, endParTag As String
Dim dateCounter As Long
Dim i As Long
parTag = "<p>" '
endParTag = "</p>" '
With Worksheets("TextSheet") '
inputArray = .Range("A1:A50000").Value
ReDim outputArray(1 To UBound(inputArray, 1))
For i = 1 To UBound(inputArray, 1)
dateCounter = 0
newStrng = ""
For Each word In Split(inputArray(i, 1), " ")
If Len(word) - Len(Replace(word, "/", "")) = 2 Then
dateCounter = dateCounter + 1
If dateCounter > 1 Then newStrng = newStrng & endParTag
newStrng = newStrng & parTag & word
Else
newStrng = newStrng & " " & word
End If
Next word
If dateCounter > 1 Then newStrng = newStrng & endParTag
outputArray(i) = LTrim(newStrng)
Next i
.Range("B1:B50000").Value = Application.Transpose(outputArray)
End With
End Sub
你可以试试这个
Option Explicit
Sub main2()
Dim newStrng As String
Dim word As Variant
Dim usedCell As Variant
Dim dataArr As Variant
Dim parTag As String, endParTag As String
Dim dateCounter As Long
Dim i As Long
parTag = "<p>" '
endParTag = "</p>" '
With Worksheets("TextSheet") '
dataArr = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).Value
For i = 1 To UBound(dataArr, 1)
dateCounter = 0
newStrng = ""
For Each word In Split(dataArr(i, 1), " ")
If Len(word) - Len(Replace(word, "/", "")) = 2 Then
dateCounter = dateCounter + 1
If dateCounter > 1 Then newStrng = newStrng & endParTag
newStrng = newStrng & parTag & word
Else
newStrng = newStrng & " " & word
End If
Next word
If dateCounter > 1 Then newStrng = newStrng & endParTag
dataArr(i, 1) = LTrim(newStrng)
Next i
.Range("B1").Resize(UBound(dataArr, 1)).Value = dataArr
End With
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.