Как удалить строки, опираясь на наличие пустых ячеек в стб.
wwizard
Дата: Воскресенье, 08.11.2015, 11:39 |
Сообщение № 1
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Данный код удаляет строки в массиве данных, опираясь на наличие пустых ячеек в текущем столбце. [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
Ответить
Сообщение Данный код удаляет строки в массиве данных, опираясь на наличие пустых ячеек в текущем столбце. [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]
...находил в строке номер 8... ...где найдет пустую ячейку в столбце №8... наверное, все-таки столбец 8 вот так попробуйте [vba]Код
Sub ttt() On Error Resume Next ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete End Sub
[/vba]nilem
Яндекс.Деньги 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
Прошу меня простить, все супер заработало. Немогли бы Вы объяснить параметр: SpecialCells(4) ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete - по какому принципу работает такая строка?
Прошу меня простить, все супер заработало. Немогли бы Вы объяснить параметр: SpecialCells(4) ActiveSheet.UsedRange.Columns(8).SpecialCells(4).EntireRow.Delete - по какому принципу работает такая строка? wwizard
Ответить
Сообщение Прошу меня простить, все супер заработало. Немогли бы Вы объяснить параметр: 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) в столбце 8SpecialCells(4) выбираем пустые ячейкиEntireRow.Delete для выбранных ячеек удаляем строку целиком
SpecialCells(4) или SpecialCells(xlCellTypeBlanks) - это все пустые ячейки в диапазонеActiveSheet на активном листеUsedRange в используемом диапазоне (т.е. не весь лист 1048000 строк, а только использ. диапазон)Columns(8) в столбце 8SpecialCells(4) выбираем пустые ячейкиEntireRow.Delete для выбранных ячеек удаляем строку целикомnilem
Яндекс.Деньги 4100159601573
Ответить
Сообщение SpecialCells(4) или SpecialCells(xlCellTypeBlanks) - это все пустые ячейки в диапазонеActiveSheet на активном листеUsedRange в используемом диапазоне (т.е. не весь лист 1048000 строк, а только использ. диапазон)Columns(8) в столбце 8SpecialCells(4) выбираем пустые ячейкиEntireRow.Delete для выбранных ячеек удаляем строку целикомАвтор - nilem Дата добавления - 08.11.2015 в 15:23
wwizard
Дата: Понедельник, 09.11.2015, 17:39 |
Сообщение № 5
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
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
Ответить
Сообщение 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 нет пустых ячеек Возможно, там есть формулы, кот. возвращают пустую строку, или, например, есть пробелы. Примерчик дайте небольшой, посмотрим
потому что в столбце 10 нет пустых ячеек Возможно, там есть формулы, кот. возвращают пустую строку, или, например, есть пробелы. Примерчик дайте небольшой, посмотрим nilem
Яндекс.Деньги 4100159601573
Ответить
Сообщение потому что в столбце 10 нет пустых ячеек Возможно, там есть формулы, кот. возвращают пустую строку, или, например, есть пробелы. Примерчик дайте небольшой, посмотрим Автор - nilem Дата добавления - 09.11.2015 в 20:13
RAN
Дата: Понедельник, 09.11.2015, 20:16 |
Сообщение № 7
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
И далеко не факт, что [vba]Код
ActiveSheet.UsedRange.Columns(10)
[/vba] это столбец 10.
И далеко не факт, что [vba]Код
ActiveSheet.UsedRange.Columns(10)
[/vba] это столбец 10. RAN
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение И далеко не факт, что [vba]Код
ActiveSheet.UsedRange.Columns(10)
[/vba] это столбец 10. Автор - RAN Дата добавления - 09.11.2015 в 20:16
wwizard
Дата: Вторник, 10.11.2015, 18:06 |
Сообщение № 8
Группа: Проверенные
Ранг: Форумчанин
Сообщений: 176
Вот примерчик, с 10sv столбцом
Вот примерчик, с 10sv столбцом wwizard
Ответить
Сообщение Вот примерчик, с 10sv столбцом Автор - wwizard Дата добавления - 10.11.2015 в 18:06
RAN
Дата: Вторник, 10.11.2015, 19:27 |
Сообщение № 9
Группа: Друзья
Ранг: Экселист
Сообщений: 5660
Если выкинуть пустые столбцы, которых в нормальной таблице быть не должно, то [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
Быть или не быть, вот в чем загвоздка!
Ответить
Сообщение Если выкинуть пустые столбцы, которых в нормальной таблице быть не должно, то [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