|
|
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Подскажиет, пожалуйста, как сделать на VBA следующее: Необходимо перебрать ячейки одного столбца и в случае, если значение этой ячейки равно нулю, необходимо удалить всю строку, в которой находится данная ячейка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 11:01:21 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Покажу тебе часть своего кода... тут я удалял нулевые столбцы... дальше сам разберёшся... т.е вместо Colum будет Row пы.сы. ты случайно не шахматку делаешь? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 11:09:50 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Спасибо за подсказку, но почему-то не работает. Я уже несколько способов попробовал: Sub УдалениеНенужныхСтрок() ' ' MyCount = 0 For i = 17 To 925 If Cells(i, 7).Value = 0 Then MyCount = MyCount + 1 ' ActiveSheet.Range.EntireRow.Cells(i, 7).Delete ' Rows(Cells(i, 7)).Delete Range(Cells(i, 7)).EntireRow.Delete End If Next i MsgBox "Удалено " & MyCount & " строк" ' End Sub Что не так - не пойму! Кстати, что такое шахматка? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 11:28:52 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Да, совсем забыл. Диалог выдает ошибку: Run-time error '1004': Method 'Range' of object '_Global' failed ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 11:33:20 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. по-моему так ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 11:42:37 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Либо Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 11:52:56 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Тут нужно учитывать что когда удаляешь строку, то к ней же нужно и вернутся при следующей проверке... как это сделано у меня, т.е. если значение=0 то удалить эту строку и снова её же проверить иначе проверить следующую строку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 11:54:55 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Попробуйте этот макрос, дпя проверки на листе создадите таблицу с несколькими столбцами и строками, запустите макрос, все строки в третем столбце содержающая 0 будут удалены, удачи! Пример таблицы A B C aaa 223 110.0 bbb 345 0,0 ccc 345 0.01 ddd 567 0,0 kkk 789 12,1 проверяется 3-й столбец (С) и если 0 то строка удаляется. Просто вам надо код переделать под вашу таблицу, ОК? Sub Delete_empty_rows() ' ' Delete_empty_rows Macro ' Macro recorded 24.05.2006 by Admin ' Dim i As Long, x As Long Application.ScreenUpdating = False [A1].Select x = ActiveCell.Offset(65535, 1).End(xlUp).Row For i = x To 1 Step -1 'If IsEmpty(Cells(i, 1)) = True Then If Cells(i, 3) = 0 Then ' проверка на нуль третего столбца Range(Cells(i, 1), Cells(i, 256)).Delete End If Next i Application.ScreenUpdating = True End Sub ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 11:55:49 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Granata005Тут нужно учитывать что когда удаляешь строку, то к ней же нужно и вернутся при следующей проверке... как это сделано у меня, т.е. если значение=0 то удалить эту строку и снова её же проверить иначе проверить следующую строку. Да, точно. Уже столкнулся с этой проблемой и сделал следующим образом, считает уже минут 10 - кошмар. Значит, сделал так: Sub УдалениеНенужныхСтрок() ' ' MyCount = 0 For i = 17 To 925 If Cells(i, 7).Value = 0 Then MyCount = MyCount + 1 Rows(i).Delete i = i - 1 End If Next i MsgBox "Удалено " & MyCount & " строк" ' End Sub Думаю, что причина в том, что если в ячейке пусто, то он ее тоже удаляет, а т.к. количество строк с данными становится меньше 925, то он удаляет последующие строки с пустыми данными, на место которой встает следующая строка и т.д. Вопрос: как сделать условие, чтобы проверялось действительно условие = 0 как число? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 12:23:54 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Потому что нужно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 12:40:20 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Подитожим: Граната + Deggasad - GioCH - Буга-га :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 12:43:17 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Granata005Потому что нужно Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Это бесконечный цикл Подытожим: Granata005 - ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:04:31 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Так попробуй Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:13:13 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
DeggasadТак попробуй Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Ещё разик: Не Код: plaintext А, нужно так Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:18:59 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Ты чё гонишь, нет там бесконечного цикла... пьяный? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:27:35 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Вот так вот вроде хорошо работает: Sub УдалениеНенужныхСтрок() ' ' MyCount = 0 For i = 925 To 17 Step -1 If Cells(i, 7).Text = 0 Then MyCount = MyCount + 1 Rows(i).Delete End If Next i MsgBox "Удалено " & MyCount & " строк" ' End Sub Это как писал GioCH - цикл по убыванию. Вообщем - Спасибо Всем! Есть еще такой нюанс: как сделать так, чтобы диапазон (925) определяля автоматически, т.е. находился последний элемент стобца с данными? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:33:45 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Granata005Ты чё гонишь, нет там бесконечного цикла... пьяный? Код: plaintext 1. 2. 3. 4. 5. 6. Если есть есть хоть одно нулевое значение и при этом после 925 строки тоже нулевые значения 925 строка не будет достигнута никогда, так как будет всё время удаляться одна и та же строка и снова возвращаться к ней же i = i - 1 ! Осмелюсь заметить я Вам не грубил! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:34:42 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Та ладно те... я не грублю :) вообще не люблю вмешиваться в значение переменной цикла FOR... поэтому использовал While... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:39:52 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
SВот так вот вроде хорошо работает: Sub УдалениеНенужныхСтрок() ' ' MyCount = 0 For i = 925 To 17 Step -1 If Cells(i, 7).Text = 0 Then MyCount = MyCount + 1 Rows(i).Delete End If Next i MsgBox "Удалено " & MyCount & " строк" ' End Sub Это как писал GioCH - цикл по убыванию. Вообщем - Спасибо Всем! Есть еще такой нюанс: как сделать так, чтобы диапазон (925) определяля автоматически, т.е. находился последний элемент стобца с данными? Тоже вариант Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:40:24 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Та ладно те... я не грублю :) вообще не люблю вмешиваться в значение переменной цикла FOR... поэтому использовал While... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:42:56 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
SЕсть еще такой нюанс: как сделать так, чтобы диапазон (925) определяля автоматически, т.е. находился последний элемент стобца с данными? Поиск последней ячейки в Excel ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:44:23 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
Deggasad[quot S] Код: plaintext 1. Я с VBA столкнулся только недавно, как расшифровывается сие? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:50:47 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
ПоследняяСтрока= ВДиапазоне("Г:Г").Найти(Что="ЧТО-НИБУДЬ", НаправлениеПоиска=Дальше, ПорядокПоиска=ПоСтрокам).Строка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:56:07 |
|
||
|
Удаление всей строки
|
|||
|---|---|---|---|
|
#18+
S Deggasad[quot S] Код: plaintext 1. Я с VBA столкнулся только недавно, как расшифровывается сие? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. Токлько смотри If Cells(i, 7).Text = 0, находит только нулевые значения, но не пустые ячейки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.04.2007, 13:56:21 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34440430&tid=2183182]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
66ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
88ms |
get tp. blocked users: |
1ms |
| others: | 202ms |
| total: | 409ms |

| 0 / 0 |
