Приветствую всех участников форума! Создал файл для расчета, но в процессе работы с ним нашел место которое позволит ускорить время расчета и повысить точность. В столбце расходный материал основного файла из других листов сваливаются данные эти данные сопоставляются со справочником цен этой же книги, и через ВПР подставляет необходимые данные. Но случается так что появляется материал который еще не участвовал еще в расчетах и в связи с этим в ячейках появляется признак Н/Д. Для упрощения работы решил создать единый справочник материалов для всех расчетов (это отдельный файл) и по нему вопрос сформирую в отдельной теме. Написал макрос который по признаку Н/Д в столбце "О" запускается процедура передачи такого материала в файл открывающийся по определенному пути и встает в первую свободную строку в конце списка, таким образом получаю накапливаемый справочник материалов. Но столкнулся с проблемой и не могу ее разрешить макрос на перенос срабатывает только по первой позичии с признаком Н/Д и только эта позиция переносится в справочник. Подскажите пожалуйста решение такое, что бы макрос срабатывал на каждый признак Н/Д и следовательно переносил все материалы с признаком Н/Д. Возможно что я очень намудрил с макросом, выслушаю и приму все замечания. Благодарю!
Приветствую всех участников форума! Создал файл для расчета, но в процессе работы с ним нашел место которое позволит ускорить время расчета и повысить точность. В столбце расходный материал основного файла из других листов сваливаются данные эти данные сопоставляются со справочником цен этой же книги, и через ВПР подставляет необходимые данные. Но случается так что появляется материал который еще не участвовал еще в расчетах и в связи с этим в ячейках появляется признак Н/Д. Для упрощения работы решил создать единый справочник материалов для всех расчетов (это отдельный файл) и по нему вопрос сформирую в отдельной теме. Написал макрос который по признаку Н/Д в столбце "О" запускается процедура передачи такого материала в файл открывающийся по определенному пути и встает в первую свободную строку в конце списка, таким образом получаю накапливаемый справочник материалов. Но столкнулся с проблемой и не могу ее разрешить макрос на перенос срабатывает только по первой позичии с признаком Н/Д и только эта позиция переносится в справочник. Подскажите пожалуйста решение такое, что бы макрос срабатывал на каждый признак Н/Д и следовательно переносил все материалы с признаком Н/Д. Возможно что я очень намудрил с макросом, выслушаю и приму все замечания. Благодарю!ASM_0408
Добрый день. Т.к. данных в файле не хватает (в макросе много ссылок на пустые ячейки, вероятно в оригинале они чем-то заполнены) Поэтому всю логику понять не удалось. Но цикл Вы сами заканчиваете после первого раза вот тут [vba]
Код
If IsNumeric(Лист1.Cells(x1, "O")) Then Else x4(x2) = Лист1.Cells(x1, "A") x2 = x2 + 1 End If If x2 > Лист1.Cells(4, "D") Then 'вот тут цикл и заканчивается, по крайней мере в примере, ячейка эта пуста 1>0 x1 = 1000 End If
[/vba] в файле еще пару комментариев, но надо видеть видеть больше данных, чтобы помочь конкретней
Добрый день. Т.к. данных в файле не хватает (в макросе много ссылок на пустые ячейки, вероятно в оригинале они чем-то заполнены) Поэтому всю логику понять не удалось. Но цикл Вы сами заканчиваете после первого раза вот тут [vba]
Код
If IsNumeric(Лист1.Cells(x1, "O")) Then Else x4(x2) = Лист1.Cells(x1, "A") x2 = x2 + 1 End If If x2 > Лист1.Cells(4, "D") Then 'вот тут цикл и заканчивается, по крайней мере в примере, ячейка эта пуста 1>0 x1 = 1000 End If
[/vba] в файле еще пару комментариев, но надо видеть видеть больше данных, чтобы помочь конкретнейsboy
Лист2.Cells(1, "H") - это ячейка со ссылкой на другой лист для запуска по калькуляте макроса расчет_полотен Лист2.Cells(1, "I") - это к этомуже относится сверочная ячейка Лист1.Cells(4, "D") здесь находится вот эта формула =СЧЁТЕСЛИ(O18:P361;"#Н/Д")
Лист2.Cells(1, "H") - это ячейка со ссылкой на другой лист для запуска по калькуляте макроса расчет_полотен Лист2.Cells(1, "I") - это к этомуже относится сверочная ячейка Лист1.Cells(4, "D") здесь находится вот эта формула =СЧЁТЕСЛИ(O18:P361;"#Н/Д")ASM_0408
Подскажите пожалуйста как тогда получить последнюю строку.
Код
PosStr = ActiveSheet.UsedRange.Rows.Count ' не во всех случаях даёт последнюю строку 'For x1 = 1 To Лист1.Cells(4, "D") ActiveSheet.Cells(PosStr + 1, 1).Resize(UBound(x4), 1).Value = x4
Подскажите пожалуйста как тогда получить последнюю строку.
Код
PosStr = ActiveSheet.UsedRange.Rows.Count ' не во всех случаях даёт последнюю строку 'For x1 = 1 To Лист1.Cells(4, "D") ActiveSheet.Cells(PosStr + 1, 1).Resize(UBound(x4), 1).Value = x4