В отчете всегда одинаковое кол-во столбцов, меняется только кол-во строк. Инструмент Выделение группы ячеек->Пустые ячейки->Delete не помогает. Причина в том, что в ячейках есть пробелы. Однако фильтр строк "Пустые" эти ячейки распознает. Мне необходим макрос, преобразующий "пустые ячейки" в реально пустые.
В отчете всегда одинаковое кол-во столбцов, меняется только кол-во строк. Инструмент Выделение группы ячеек->Пустые ячейки->Delete не помогает. Причина в том, что в ячейках есть пробелы. Однако фильтр строк "Пустые" эти ячейки распознает. Мне необходим макрос, преобразующий "пустые ячейки" в реально пустые.Scolt
Sub ertert() With Range("A1:F" & Cells(Rows.Count, 1).End(xlUp).Row) .Value = Application.Clean(.Value) 'или даже так '.Value = Application.Trim(Application.Clean(.Value)) End With End Sub
[/vba]
попробуйте вот такую очистку [vba]
Код
Sub ertert() With Range("A1:F" & Cells(Rows.Count, 1).End(xlUp).Row) .Value = Application.Clean(.Value) 'или даже так '.Value = Application.Trim(Application.Clean(.Value)) End With End Sub
Я для чистки текста от всяких лишних пробелов такой процедурой пользуюсь:[vba]
Код
Sub Trim_By_Formula() ' применить функцию СЖПРОБЕЛЫ к видимым ячейкам выделенного диапазона Dim rRng As Range, rSubRng As Range Set rRng = Intersect(ActiveWindow.RangeSelection.SpecialCells(xlCellTypeVisible), ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)) If rRng Is Nothing Then: Call Groups_Tuning: Exit Sub Application.ScreenUpdating = False: Application.EnableEvents = False With rRng .Replace Chr(160), " ", xlPart ' Chr(160) - неразрывный пробел For Each rSubRng In .Areas rSubRng.Value = Application.Trim(rSubRng) ' СЖПРОБЕЛЫ Next .Replace " " & Chr(10), Chr(10), xlPart ' пробел перед LF .Replace Chr(10) & " ", Chr(10), xlPart ' пробел после LF .Select End With Application.ScreenUpdating = True: Application.EnableEvents = True End Sub
[/vba]
Я для чистки текста от всяких лишних пробелов такой процедурой пользуюсь:[vba]
Код
Sub Trim_By_Formula() ' применить функцию СЖПРОБЕЛЫ к видимым ячейкам выделенного диапазона Dim rRng As Range, rSubRng As Range Set rRng = Intersect(ActiveWindow.RangeSelection.SpecialCells(xlCellTypeVisible), ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)) If rRng Is Nothing Then: Call Groups_Tuning: Exit Sub Application.ScreenUpdating = False: Application.EnableEvents = False With rRng .Replace Chr(160), " ", xlPart ' Chr(160) - неразрывный пробел For Each rSubRng In .Areas rSubRng.Value = Application.Trim(rSubRng) ' СЖПРОБЕЛЫ Next .Replace " " & Chr(10), Chr(10), xlPart ' пробел перед LF .Replace Chr(10) & " ", Chr(10), xlPart ' пробел после LF .Select End With Application.ScreenUpdating = True: Application.EnableEvents = True End Sub
nilem, а что за метод Application.Clean ? Что чистит? Если только непечатаемые символ как ПЕЧСИМВ, так это, наверное, не совсем то, что нужно Scolt. Что-то я этот метод в справке VBA не нашёл. Но твой код работает. Подумал было, что это ты WorksheetFunction опустил как это иногда делают и правильнее было бы писать [vba]
nilem, а что за метод Application.Clean ? Что чистит? Если только непечатаемые символ как ПЕЧСИМВ, так это, наверное, не совсем то, что нужно Scolt. Что-то я этот метод в справке VBA не нашёл. Но твой код работает. Подумал было, что это ты WorksheetFunction опустил как это иногда делают и правильнее было бы писать [vba]
Привет, Алекс, чистит, например, апострофы и еще много всякой ерунды (в файле ТС как раз не пробелы, а "ерунда":)). И да, некоторые методы Application и WorksheetFunction работают по-разному, хотя называются одинаково.
Привет, Алекс, чистит, например, апострофы и еще много всякой ерунды (в файле ТС как раз не пробелы, а "ерунда":)). И да, некоторые методы Application и WorksheetFunction работают по-разному, хотя называются одинаково.nilem