Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Форма пользователя: выводить только те коды товара, у которых есть количество, оптимизировать форму
 
Kuzmich, IsEmpty(Cells(i, 3)) и Cells(i,3) = "" это одно и тоже?
у Екселя значение "пусто" крайне ноднозначно

Я бы менял условие на isNumeric и >0, чтоб уж точно...
Расчет нагрузки по фазам для трехфазной цепи 380В, оптимальный расчет из введенных значений
 
Ну Вы уж как-нибудь под себя подстройте сами, я не думаю что это так сложно  :)
Расчет нагрузки по фазам для трехфазной цепи 380В, оптимальный расчет из введенных значений
 
Это вариант задачи о рюкзаке или транспортной задачи. Есть несколько алгоритмов (помимо тупого перебора)
Выбор конкретно алгоритма зависит от входящих данных и от критичности конечного результата.

Я бы решал "жадным алгоритмом":
1. Отсортировать последовательность по убыванию
2. Посчитать сумму последовательности
3. Взять с начала списка максимально возможное количество элементов, чтобы их сумма не превышала сумму/3
4. Оставшиеся   так же включить во вторую группу
5. оставшиеся - так же в 3ю

Если входящие данные более-менее однородные и не важно, по сколько элементов в группе, то это самое простое, если большая дисперсия - нужно что-то посложнее

Вот тут есть алгоритмы решения: Задача о рюкзаке
Изменено: Belfi - 30.10.2015 14:15:40
Удаление пустой строки если есть пустая ячейка
 
ну если совсем просто, то так:
J_start - первая проверяемая строка
J_end  - последняя
I_start - первый столбец
I_end - последний столбец
(их определяйте как хотите, способов куча)

А дальше простой цикл снизу вверх
Код
For j = J_end to J_start step -1
   For i = I_start to i_end
      if cells(j,i) = "" then 
         rows(j).delete
         exit for
      end if
   next i
next j
Если строк много, то сначала все в массив. Я это расписывать не буду


На второй вопрос - конечно можно. Запишите один раз от и до макрорекодером - проще всего понять будет.
Изменено: Belfi - 30.10.2015 13:38:55
Пауза при выполнении макроса с передачей управления пользователю
 
Да я в других местах обычно так и делаю.
Но тут спецефичная задача - файлов много, много всяких "но" + записи в базы ведутся + много комплексной доп. фигни. Проще всего было бы именно паузить макрос.
Я чувствую, что придется так и тут сделать (вести какой-то лог сделанного, и перезапускать макрос с последнего этапа ручками)

Для примера, поясню.
У нас, скажем, 100 файлов. В файле, скажем, по 10 колонок с данными. Не должно быть пропусков, и, например, в первом столбце должна быть дата.
И тут какой-нибудь Вася при заполнении файла случайно ставит лишний пробел в конце даты в какой-нибудь 387й строке 33го файла. (Это пример!)
Если пропускать файл из-за такой фигни и править руками и запускать заново - уйдет прорва времени (реально проще на дебаге остановить, исправить, и продолжить)
Изменено: Belfi - 30.10.2015 12:50:35
Пауза при выполнении макроса с передачей управления пользователю
 
Всем добрый день. думаю что что-то такое могло уже обсуждаться, но честное слово, понятия не имею по каким ключевым словам это искать.
Гугл я уже поносиловал, но пока безрезультатно.
А дело в вот в чем
Есть у меня макрос, который перебирает ворох файликов однотипных, считывает из них инфу и отправляет в базу.
Файлики заполняют какие-то человеки, и, бывает, косячат (то заголовок потрут, то столбец добавят не туда, то еще что-то придумают).
Хотелось бы, чтобы макрос проверял файл на предмет основных косяков и, если их обнаруживает, давал управление листом мне, я бы их прям на листе исправлял и продолжал выполнение. Делать предварительную проверку всех файлов, конечно, вариант, но это усложняет код и увеличивает время работы.
InputBox'ами это не решится 100%.
Я пока это делаю через дебаггер (макрос натыкается на ошибку, там MsgBox +Stop, я правлю ошибку и передвигаю каретку на начало считывающей процедуры). Хотелось бы понять, можно ли это сделать не прибегая к дебаггеру

Я пока нашел только вариант с какой-нибудь немодальной формой и бесконечным циклом, но он отдает гнильцой. Мне кажется, должно быть что-нибудь более вменяемое


Заранее спасибо за адекватные ответы
Чем заменить n вложенных циклов?
 
Я бы макрос писал на подобие вот такого:
( на работоспособность не тестил, пишу именно идею)

Код
Sub Main
      X_start  = X1 '
      X_end = X2
      Циклов = N
      call Cicle(X_start, X_end, Циклов)
end sub

Sub Cicle(Начало, Конец, Циклов)
       
   For j = НАЧАЛО to КОНЕЦ       
      If Циклов  = 1 then
         тело макроса
      Else
         Call Cicle(X_start_2, X_end_2, Циклов-1)
      end if 
   next j

End sub




Рекурсия!
Изменено: Belfi - 26.12.2013 14:23:39
Страницы: 1
Наверх