2016-10-18 2 views
0

HTML 태그를 추가 할 때 VBA가 있습니다. 나는 J2 같은 여러 행에 대한 그 코드가 작동합니다 :여러 행의 Excel 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 

답변

0

그 통해 반복 다음 VBA 배열로 범위를 읽는 시도하고 같은 J50000

코드입니다 이것을 시도하십시오

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 
0

당신이 할 수있는을 :

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 
+0

안녕하세요 @ user3598756 숫자로 출력을 표시합니다 –

+0

아무 문제없이 테스트 해 보았습니다. 원하는 모든 셀을 "A"열에서 처리해야하고 처리 된 결과가 해당 열의 "B"행에 표시됩니다. "A"와 "B"와는 다른 입력 및/또는 출력 열이 필요하면'.Range ("A1", .Cells (.Rows.Count, 1) .End (xlUp))에 적절한 참조를 채택하면됩니다. '입력란과'.Range ("B1"). Resize (UBound (dataArr, 1)) .Value = dataArr' 출력의 경우 – user3598756

+0

@ShantanuMahajan, 그것을 통과 했습니까? – user3598756