Страница 1 из 1
Удаление строк в Excel
Добавлено: 04 июл 2008, 12:37
Mint86
Здорово живем!
Возникла такая задача. Есть отчет по заявкам на получение кредита в Excel. В этом отчете фиксируется когда клиент оставил заявку, скоко просит, и результат что решил банк, выдать деньги или отказать. Суть задачи в том, что надо удалить выборочно строки где в столбце "Результат" стоит слово допустим "Отказано", а нижние строки поднять на место удаленной. Т.е. удалять надо не саму строку а содержимое (значения). Сам я токо приступил к решению данной задачи. Может паралельно умные люди подскажут как это сделать лучше. Может кому-то приходилось такое делать.
Прикрепил отчет. Подробное объяснение там же.
Заранее спасибо!
Re: Удаление строк в Excel
Добавлено: 04 июл 2008, 13:40
demon416
В принципе ничего сложного

понадобиться переменная "количество удаленных"
1)приравниваеш "количество удаленных" к 0
2)в цикле от 1 до 655536 (с break при нахождении пустой ячейки)пройтись по столбцу "результат"
если в ячейке оказывается значение к-е нужно удалить увеличиваем "количество удаленных" на 1
если в ячейке оказывается любое другое значение - скопировать нужную часть текущей строки вверх со смещением на "количество удаленных"
3)после цикла очистить снизу "количество удаленных" строчек
с учетом того как перемещается выделение при копировании, я бы реализовал последний пункт примерно так:
выделить на строчке ниже текущего выделения нужные части
расширить выделение до 65536 строчки
удалить содержимое выделения
Re: Удаление строк в Excel
Добавлено: 04 июл 2008, 14:34
VictorM
Mint86, может имеется ввиду "Удалить ячейки со сдвигом вверх"?
Selection.Delete Shift:=xlUp'здесь Selection - выделенная строка со словом Отказано.
Re: Удаление строк в Excel
Добавлено: 04 июл 2008, 14:41
Mint86
" писал(а):может имеется ввиду "Удалить ячейки со сдвигом вверх"?
К сожалению нет, так как строк всего 100 и есть формулы. Мне надо удалить только контент и вытащить вверх содержимое нижних строк...
Re: Удаление строк в Excel
Добавлено: 04 июл 2008, 14:42
Mint86
Так же есть защищенные ячейки...
Re: Удаление строк в Excel
Добавлено: 04 июл 2008, 17:04
demon416
Вродеж все понятно обьяснил если не понятно вот пример
Код: Выделить всё
Sub Макрос1()
Dim d As String
Dim col, row, deleted, temp As Integer
col = ActiveCell.Column ' запоминание по какому столбцу делать отбор
d = ActiveCell.FormulaR1C1
deleted = 0
For row = 6 To 65536 Step 1
If (Cells(row, col).FormulaR1C1 = "") Then
GoTo break
End If
If (Cells(row, col).FormulaR1C1 = d) Then
deleted = deleted + 1
Else
temp = row - deleted
Range(Cells(row, 3), Cells(row, 97)).Select
Selection.Copy
Range(Cells(temp, 3), Cells(temp, 97)).Select
ActiveSheet.Paste
Range(Cells(row, 109), Cells(row, 109)).Select
Selection.Copy
Range(Cells(temp, 109), Cells(temp, 109)).Select
ActiveSheet.Paste
End If
Next row
break:
row = ActiveCell.row + 1
Range(Cells(row, 3), Cells(65536, 97)).Select
Selection.Clear
Range(Cells(row, 109), Cells(65536, 109)).Select
Selection.Clear
End Sub
p.s. за такие таблицы разработчикам руки отрубать надо
Re: Удаление строк в Excel
Добавлено: 04 июл 2008, 20:06
VictorM
Mint86,
К сожалению нет, так как строк всего 100 и есть формулы. Мне надо удалить только контент и вытащить вверх содержимое нижних строк...
Так же есть защищенные ячейки...
эт все понятно. У меня подобные вопросы встречались.
Делать не буду Вы и сами знаете как. Только алгоритм.
Снимаем защиту, находим нужную строку, удаляем "Удалить ячейки со сдвигом вверх". В конце процедуры обновляем все формулы, ставим защиту.
Все работает замечательно.
Re: Удаление строк в Excel
Добавлено: 07 июл 2008, 05:59
Mint86
demon416, VictorM, спасибо за участие. Решил задачу используя ваши советы.