Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Как удалить строки, опираясь на наличие пустых ячеек в стб. - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Как удалить строки, опираясь на наличие пустых ячеек в стб.
wwizard Дата: Воскресенье, 08.11.2015, 11:39 | Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Данный код удаляет строки в массиве данных, опираясь на наличие пустых ячеек в текущем столбце.

[vba]
Код

Sub Rows_Delete_1()
Dim cnt_Rows As Long, curr_Row As Long, curr_Column As Long, i As Long

    cnt_Rows = ActiveCell.CurrentRegion.Rows.Count
    curr_Row = ActiveCell.Row
    curr_Column = ActiveCell.Column

    For i = cnt_Rows To curr_Row Step -1
        If Cells(i, curr_Column) = Empty Then Cells(i, curr_Column).EntireRow.Delete
    Next i
    
End Sub
[/vba]

Мне надо, чтобы пустые ячейки он находил в строке номер 8, Листа 1
И удалил всю строку, где найдет пустую ячейку в столбце №8.

Что я только НЕ переделывал, НЕ помогает. Как ему это указать?
 
Ответить
СообщениеДанный код удаляет строки в массиве данных, опираясь на наличие пустых ячеек в текущем столбце.

[vba]
Код

Sub Rows_Delete_1()
Dim cnt_Rows As Long, curr_Row As Long, curr_Column As Long, i As Long

    cnt_Rows = ActiveCell.CurrentRegion.Rows.Count
    curr_Row = ActiveCell.Row
    curr_Column = ActiveCell.Column

    For i = cnt_Rows To curr_Row Step -1
        If Cells(i, curr_Column) = Empty Then Cells(i, curr_Column).EntireRow.Delete
    Next i
    
End Sub
[/vba]

Мне надо, чтобы пустые ячейки он находил в строке номер 8, Листа 1
И удалил всю строку, где найдет пустую ячейку в столбце №8.

Что я только НЕ переделывал, НЕ помогает. Как ему это указать?

Автор - wwizard
Дата добавления - 08.11.2015 в 11:39
nilem Дата: Воскресенье, 08.11.2015, 12:19 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
...находил в строке номер 8...
...где найдет пустую ячейку в столбце №8...

наверное, все-таки столбец 8
вот так попробуйте
[vba]
Код
Sub ttt()
On Error Resume Next
ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete
End Sub
[/vba]


Яндекс.Деньги 4100159601573
 
Ответить
Сообщение...находил в строке номер 8...
...где найдет пустую ячейку в столбце №8...

наверное, все-таки столбец 8
вот так попробуйте
[vba]
Код
Sub ttt()
On Error Resume Next
ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete
End Sub
[/vba]

Автор - nilem
Дата добавления - 08.11.2015 в 12:19
wwizard Дата: Воскресенье, 08.11.2015, 15:03 | Сообщение № 3
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Прошу меня простить, все супер заработало. Немогли бы Вы объяснить параметр: SpecialCells(4)

ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete - по какому принципу работает такая строка?
 
Ответить
СообщениеПрошу меня простить, все супер заработало. Немогли бы Вы объяснить параметр: SpecialCells(4)

ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete - по какому принципу работает такая строка?

Автор - wwizard
Дата добавления - 08.11.2015 в 15:03
nilem Дата: Воскресенье, 08.11.2015, 15:23 | Сообщение № 4
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
SpecialCells(4) или SpecialCells(xlCellTypeBlanks) - это все пустые ячейки в диапазоне

ActiveSheet на активном листе
UsedRange в используемом диапазоне (т.е. не весь лист 1048000 строк, а только использ. диапазон)
Columns(8) в столбце 8
SpecialCells(4) выбираем пустые ячейки
EntireRow.Delete для выбранных ячеек удаляем строку целиком


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеSpecialCells(4) или SpecialCells(xlCellTypeBlanks) - это все пустые ячейки в диапазоне

ActiveSheet на активном листе
UsedRange в используемом диапазоне (т.е. не весь лист 1048000 строк, а только использ. диапазон)
Columns(8) в столбце 8
SpecialCells(4) выбираем пустые ячейки
EntireRow.Delete для выбранных ячеек удаляем строку целиком

Автор - nilem
Дата добавления - 08.11.2015 в 15:23
wwizard Дата: Понедельник, 09.11.2015, 17:39 | Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

UsedRange в используемом диапазоне (т.е. не весь лист 1048000 строк, а только использ. диапазон)
Columns(8) в столбце 8


Почему же тогда, если я ставлю так:

[vba]
Код
Sub Удаление_строки_с_пустой_производителя()
On Error Resume Next
ActiveSheet.UsedRange.Columns(10).SpecialCells(4).EntireRow.Delete
End Sub
[/vba]

То в 10м столбце оно не работает?
 
Ответить
Сообщение
UsedRange в используемом диапазоне (т.е. не весь лист 1048000 строк, а только использ. диапазон)
Columns(8) в столбце 8


Почему же тогда, если я ставлю так:

[vba]
Код
Sub Удаление_строки_с_пустой_производителя()
On Error Resume Next
ActiveSheet.UsedRange.Columns(10).SpecialCells(4).EntireRow.Delete
End Sub
[/vba]

То в 10м столбце оно не работает?

Автор - wwizard
Дата добавления - 09.11.2015 в 17:39
nilem Дата: Понедельник, 09.11.2015, 20:13 | Сообщение № 6
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
потому что в столбце 10 нет пустых ячеек
Возможно, там есть формулы, кот. возвращают пустую строку, или, например, есть пробелы.
Примерчик дайте небольшой, посмотрим


Яндекс.Деньги 4100159601573
 
Ответить
Сообщениепотому что в столбце 10 нет пустых ячеек
Возможно, там есть формулы, кот. возвращают пустую строку, или, например, есть пробелы.
Примерчик дайте небольшой, посмотрим

Автор - nilem
Дата добавления - 09.11.2015 в 20:13
RAN Дата: Понедельник, 09.11.2015, 20:16 | Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
И далеко не факт, что
[vba]
Код
ActiveSheet.UsedRange.Columns(10)
[/vba]
это столбец 10.


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеИ далеко не факт, что
[vba]
Код
ActiveSheet.UsedRange.Columns(10)
[/vba]
это столбец 10.

Автор - RAN
Дата добавления - 09.11.2015 в 20:16
wwizard Дата: Вторник, 10.11.2015, 18:06 | Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Репутация: 0 ±
Замечаний: 40% ±

Вот примерчик, с 10sv столбцом
К сообщению приложен файл: PROBA-33.xlsm (24.5 Kb)
 
Ответить
СообщениеВот примерчик, с 10sv столбцом

Автор - wwizard
Дата добавления - 10.11.2015 в 18:06
RAN Дата: Вторник, 10.11.2015, 19:27 | Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Репутация: 1163 ±
Замечаний: 0% ±

2010
Если выкинуть пустые столбцы, которых в нормальной таблице быть не должно, то
[vba]
Код
Sub qq()
    With ActiveSheet
        Set r = .Range("A1").CurrentRegion
        r.Offset(, r.Columns.Count).Resize(, 1).FormulaR1C1 = "=LEN(RC[-2])"
        If .AutoFilterMode Then r.AutoFilter
        Set r = ActiveSheet.Range("A1").CurrentRegion
        r.AutoFilter Field:=r.Columns.Count, Criteria1:="0"
        Application.DisplayAlerts = False
        .AutoFilter.Range.Delete
        .Columns(r.Columns.Count).Delete
        Application.DisplayAlerts = True
    End With
End Sub
[/vba]


Быть или не быть, вот в чем загвоздка!
 
Ответить
СообщениеЕсли выкинуть пустые столбцы, которых в нормальной таблице быть не должно, то
[vba]
Код
Sub qq()
    With ActiveSheet
        Set r = .Range("A1").CurrentRegion
        r.Offset(, r.Columns.Count).Resize(, 1).FormulaR1C1 = "=LEN(RC[-2])"
        If .AutoFilterMode Then r.AutoFilter
        Set r = ActiveSheet.Range("A1").CurrentRegion
        r.AutoFilter Field:=r.Columns.Count, Criteria1:="0"
        Application.DisplayAlerts = False
        .AutoFilter.Range.Delete
        .Columns(r.Columns.Count).Delete
        Application.DisplayAlerts = True
    End With
End Sub
[/vba]

Автор - RAN
Дата добавления - 10.11.2015 в 19:27
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!