2015-08-25 2 views
1

Моего VBA скрипта должен разделить содержание в одной клетки по линии разбивается на несколько строк, он работает для некоторых клеток, дату в одной ячейке выглядеть следующим образом:Невозможно разделить содержимое ячейки по линии нарушает

a01gestmstrs2a 10.67.15.17 
a01gestmdb2a 10.67.15.19 
a01gstdbldnim1a 
a01rstdbldnim1a 
a01gestmstrs2b (10.67.15.46) 
a01restmdb2a (10.67.15.48) 
a01gestmstrs2z 10.67.15.20 
a01gestmdb2b (10.67.15.47) 
a01restmstrs2a (10.67.15.49) 

Тем не менее, он не может разбиться на некоторые из них, например, приведенный выше пример, я не могу понять, почему. Мой код:

Sub SplitMultipleHostnames() 
Dim tmpArr As Variant 
Dim s As String 

Application.ScreenUpdating = False 
Application.Calculation = xlCalculationManual 

For Each cell In Range("D2", Range("D3").End(xlDown)) 
For Each c In ActiveSheet.UsedRange 
    s = c.Value 
    If Trim(Application.Clean(s)) <> s Then 
     s = Trim(Application.Clean(s)) 
     c.Value = s 
    End If 


If cell.Value <> "" Then 
    If InStr(1, cell, Chr(10)) <> 0 Then 
     tmpArr = Split(cell, Chr(10)) 

     cell.EntireRow.Copy 

     cell.Offset(1, 0).Resize(UBound(tmpArr), 1).EntireRow.Insert xlShiftDown 



     cell.Resize(UBound(tmpArr) + 1, 1) = Application.Transpose(tmpArr) 

    End If 


Else 
    cell.EntireRow.Delete 
    cell.Row = cell.Row - 1 

End If 
Next 
Next 
Application.ScreenUpdating = True 
Application.Calculation = xlCalculationAutomatic 
Application.CutCopyMode = False 


End Sub 

ответ

2

Они на самом деле не Char (10), они являются пространством. Я изменил код на «», и он отлично работал

If cell.Value <> "" Then 
       If InStr(1, cell, " ") <> 0 Then 
        tmpArr = Split(cell, " ") 
+0

Спасибо за исправление моей ошибки. –

3

петля, которая использует TRIM() и Clean() удалит все ASCII 10-х и 13-х из листа.

Ничего не должно быть Split().

Смежные вопросы