2015-06-25 2 views
0

Я работаю через 6 столбцов строк данных (AF) 2-4379, и большое количество ячеек отображается как «Заготовки» в столбце фильтра, но не true пробелы, поскольку они кажутся чтобы содержать пробелы в них. Я надеялся найти некоторые примеры vba для поиска всех ячеек в диапазоне, который содержал значения ASCII между 65-90 и 97-122, и если эти значения не содержались в ячейке, а затем полностью очистить их.Удалить все ячейки, если нет AZ

Возможно ли это? Я попробовал sub, который проверял «IsText», но продолжал получать сообщение об ошибке «sub или function not defined», относящееся к строке IsText.

Это то, что я пытался до сих пор:

Dim c As Range 
Dim rng As Range 

Set rng = Range("A2:F4379") 

For Each c in rng 

If Not IsText(c.Value) Then 
c.ClearContents 
End If 

Next c 
+0

это просто пробелы, от которых вы пытаетесь избавиться? или есть другие скрытые символы. Вместо того, чтобы проходить через каждую ячейку, я думаю, что поиск и замена на диапазоне будет намного быстрее. – sous2817

+0

Расширение на sous-сообщении, если вы можете узнать, что такое символ «пробел» (есть разные, это может быть), то вы можете заменить этого конкретного символа на vbnullstring - что ничто не является правильным. Вы можете узнать, используя = code (символ, о котором идет речь) – Trum

+0

Или, возможно, вы можете отсортировать диапазон, пустой символ должен заканчиваться вверху или внизу сортировки – Raystafarian

ответ

1

Это должно устранить большинство пробелов из активного листа:

Option Explicit 

Public Sub trimWhiteSpaces() 

    With ActiveSheet.UsedRange 

     .Replace What:=" ", Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=" ", Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=" ", Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=" ", Replacement:=vbNullString, LookAt:=xlWhole 

     .Replace What:=vbTab, Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=vbCrLf, Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=vbCr, Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=vbLf, Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=vbNewLine, Replacement:=vbNullString, LookAt:=xlWhole 

     .Replace What:=vbNullChar, Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=vbBack, Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=vbFormFeed, Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=vbVerticalTab, Replacement:=vbNullString, LookAt:=xlWhole 
     .Replace What:=vbObjectError, Replacement:=vbNullString, LookAt:=xlWhole 

    End With 

End Sub 

.

Как примечание:

Ваш исходный код имел ошибку, потому что вы не включили его в Sub()

Вы можете это исправить, используя структуру, подобную этой:

Option Explicit 

Public Sub testSub() 
    Dim c As Range 
    Dim rng As Range 

    Set rng = Range("A2:F4379") 

    For Each c In rng 
     If Not IsText(c.Value) Then 
      c.ClearContents 
     End If 
    Next 
End Sub 
+0

Внутри подпрограммы он не работает, потому что вам нужно' application.worksheetfunction.istext() ' – Raystafarian

+0

Вы потрясающий! Отлично! – user3794203

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