Динамическое удаление пробелов из ряда ячеек Excel - PullRequest
2 голосов
/ 15 августа 2011

У меня есть именованный диапазон данных, называемый «данными». Я пытаюсь найти формулу или формулу массива, которая будет возвращать данные в новом диапазоне ячеек, но при этом будут пропущены все пустые строки.

т.е. data это:

row   x    y    
1     A    77    
2          
3     B    23    
4     A    100    
5    

А мой новый ассортимент:

row    x    y    
1     A    77    
3     B    23    
4     A    100    

Это нормально, если пустые строки заканчиваются в конце массива. Пока я в тупике

Ответы [ 3 ]

4 голосов
/ 16 августа 2011

Для этого вы должны использовать специальный метод клеток.Либо с помощью VBA, либо вручную.

Вручную

2007/2010

Выбрать столбец A
Вкладка «Домой» - Найти и выбрать - Перейти к спец. -Пробелы - ОК
Домашняя вкладка - Удалить ячейки - Вся строка - ОК

VBA

Sub DeleteBlanks()
    Activesheet.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub

Если вы хотите оставить исходные данные нетронутыми и скопироватьдиапазон на другой лист попробуйте что-то вроде:

Sub DeleteBlanks()

    Dim vArray As Variant
    '// Get an array of your data
    vArray = Sheet1.UsedRange
    '// Copy the data to another sheet
    Sheet2.Range("A1").Resize(UBound(vArray, 1), UBound(vArray, 2)).Value = vArray
    '// Delete blanks
    Sheet2.Columns(1).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

End Sub

ФОРМУЛА

Если вам действительно нужна формула, посмотрите здесь:

Удалить заготовки - Array Formula

2 голосов
/ 15 августа 2011

Мне нравится совет Криса.Это подход VBA.Попробуйте на копии вашего файла.

Sub delete_empty_rows()
Dim last As Long, i As Long
last = Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
For i = last To 1 Step -1
    If Application.CountA(Range("A" & i).EntireRow) = 0 Then
        Range("A" & i).EntireRow.Delete
    End If
Next i
End Sub
2 голосов
/ 15 августа 2011

Почему бы просто не использовать фильтр, в котором вы исключаете пробелы из соответствующего столбца (столбцов)?

В качестве альтернативы, вы можете создать дополнительный столбец флага, который обозначает каждую строку для включения на основе ваших критериев пробелов (например,, IF(OR(X="",Y=""),0,1)) и используйте его для фильтрации ваших данных.

...