helpf.pro
Регистрация

v8: Удалить определеные строки из Excel

ghostrid3r
20.09.2013 00:23Прочитано: 5799
Доброго времени суток уважаемые форумчане, помогите с кодом для удаления строк из файла Excel

Есть такой код но собака не работает как надо:

Код 1C v 8.х
 	Для НомерСтроки = 11  ПО Число(ВсегоСтрок) Цикл
Если СтрДлина(Лист.Cells(НомерСтроки,1).Value) > 0 Тогда
Лист.Rows((Строка(НомерСтроки) + ":" + Строка(НомерСтроки))).Delete();
Иначе
Прервать;
КонецЕсли;
НомерСтроки = НомерСтроки + 1;
//НомерСтроки = НомерСтроки - 1;

КонецЦикла;


Возводил Счетчик в минус, так как при конце цикла он наращивался, с чего непонятно.
Yandex
Возможно, вас также заинтересует
Реклама на портале
E_Migachev
20.09.2013 00:57Ответ № 1
excel пишет такой код для удаления
Код VBS
    Rows("3:3").S_elect
S_election.Delete Shift:=xlUp
ghostrid3r
20.09.2013 01:28Ответ № 2
(1) E_Migachev, а можно полный код, хотя фишка еще в том что когда при отладке попадает на конце цикла делается +1 и как бы получается что удаляет через строку
Jonsony
20.09.2013 11:06Ответ № 3
я бы использовал обратный цикл
при выборках и удалении в ней

Код 1C v 8.2 УП
 НомерСтроки=Число(ВсегоСтрок);

Пока НомерСтроки > 10 Цикл
здесь твой код.....
НомерСтроки=НомерСтроки-1;
КонецЦикла;

Изменено 20.09.13 11:07:37
Mokey
20.09.2013 11:08Ответ № 4
(2) ghostrid3r, так в коде, который Вы привели, инициируется счётчик по переменной Для НомерСтроки = 11 ПО Число(ВсегоСтрок) Цикл, а потом в конце ещё раз увеличиваете НомерСтроки = НомерСтроки + 1;, поэтому и через одну удаляются.
Mokey
20.09.2013 11:10Ответ № 5
(3) Jonsony, а можно ВсегоСтрок пересчитывать в конце цикла, иначе можно нарваться на ошибку конца таблицы, с экселем, понятно, не будет ошибки.
Jonsony
20.09.2013 11:20Ответ № 6
(5) Mokey, не будет, количество строк садится в переменную и она уменьшается сверяя в цикле с пороговым значением (условием) цикла
например:
в таблице 500 строк, обработать надо до 11, конца таблицы мы явно не получим при шагем = -1
на = 11 цикл закончится

подобное в 7.7 отработано было на справочниках :-)

PS
лучше бы ввели "обратный" цикл в платформу, это когда шаг не +1, а -1
Mokey
20.09.2013 14:48Ответ № 7
(6) Jonsony, я говорил не о конкретном случае, а о более-менее универсальном подходе, например:
надо в таблице удалить все строки с определённым условием.
получаем цикл по всем строкам
тут мы либо каждый раз проверяем текущую строку с количеством строк, либо сразу перечитываем количесвто строк в переменную, которая является итерацией.
Jonsony
20.09.2013 19:31Ответ № 8
(7) Mokey, ну так обратный цикл и будет верным в данном подходе, при удалении строк из таблиц
точнее обход не от начала к концу, ибо будет сбиваться из-за удаления строк
а обход от конца к началу.
Подсказка: Щелкнув по значку (справа от названия вопроса), вы получите список ответов на похожие вопросы!
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.