Добрый день, Не могу понять почему не работает макрос. На листе есть много Scrollbar'ов. Чтобы не прописывать для каждого свои действия, решил создать класс описывающий действия для них. Но он не работает. Не могу понять почему. Делал на примере описанном на http://www.excel-vba.ru/chto-umeet-excel/rabota-s-modulyami-klassov/.
Добрый вечер, Нужна помощь в обработке массива данных. В файле в качестве примера выложена часть массива, который собирается с нескольких листов. Массив отсортирован по дате. Необходимо выделить уникальные значения для каждого месяца и прибора, просуммировать значения потребностей для этих месяцев и приборов и произвести дальнейшие манипуляции, которые указаны в файле (текстом сложно объяснить, проще показать в примере).
В итоге должен получится массив как показан в конце листа в файле, который необходимо перенести на лист. Заранее спасибо.
Добрый день, Нужна помощь в написании формулы или модуля VBA. Способ решения не принципиален (важен результат). В примере на листе 1 в ячейке С7 результат, который хотелось бы получить без промежуточных таблиц. Таблица "Пример для "Провод ПВС 0.5 (белый)"" нарисована для наглядности того что хочется получить в ячейке C7.
Добрый день, Помогите решить проблему. На форумах и просторах интернета много тем про поиск и удаление дубликатов в столбцах. Мне же нужно найти дубликаты в 1-ой строке и вывезти уникальные значения во 2-ю строку. Нужен именно макрос, т.к. этим действием будет формироваться шапка таблицы. Заранее спасибо.
Добрый день, подскажите пожалуйста, почему данная часть макроса срабатывает только на активном листе, а не на всех указанных:
Код
wsArr = Array("лист1", "лист2", "лист3", "лист4", "лист5", "лист6")
For Each wsName In wsArr
Set ws = Worksheets(wsName)
iLastRow = ws.Cells(Rows.Count, 18).End(xlUp).ROW
'ws.Range("AA4", Cells(iLastRow, 27)).ClearContents
ReDim avArr(1 To Rows.Count, 1 To 1)
With New Collection
On Error Resume Next
For Each vItem In ws.Range("A4", Cells(iLastRow, 1)).Value
.Add vItem, CStr(vItem)
If Err = 0 Then
li = li + 1: avArr(li, 1) = vItem
Else: Err.Clear
End If
Next
End With
If li Then ws.Cells(4, 27).Resize(li).Value = avArr
Next
Переменная wsArr задается в начале кода. Дальше происходит выполнение части кода совершенно без каких либо проблем пока не доходит до указанной части. Если активный лист входит в заданный диапазон, код отрабатывает только на нём, если переключится на др. лист вообще ничего не происходит....
Добрый день Помогите, пожалуйста дописать макрос для "поиска решения" В вызываемом UserForn необходимо прописывать условия для "поиска решения", не могу осилить(((((
Sub Ìàò_óðîâåíü1()
Dim iLastRow1 As Long
Dim iLastRow2 As Long
Dim iLastRow3 As Long
Dim iLastRow4 As Long
Dim j As Long
lLastCol = Cells(4, Columns.Count).End(xlToLeft).Column
Range(Cells(4, 4), Cells(4, lLastCol)).ClearContents
lLastCol = Cells(4, Columns.Count).End(xlToLeft).Column + 1
iLastRow1 = Cells(Rows.Count, 3).End(xlUp).Row
Range(Cells(5, 1), Cells(iLastRow1, 1)).ClearContents
Range(Cells(5, 2), Cells(iLastRow1, 2)).ClearContents
Range(Cells(5, 3), Cells(iLastRow1, 3)).ClearContents
iLastRow1 = Cells(Rows.Count, 3).End(xlUp).Row + 1
For Each wsName In Array("Кордон", "Крис", "МБС", "Крис_2003", "Кордон_С")
Set ws = Worksheets(wsName)
iLastRow2 = .Cells(.Rows.Count, 2).End(xlUp).Row
For j = 3 To iLastRow2
If Not IsEmpty(.Cells(j, 5)) Then
If .Cells(j, 19) = "полуфабрикат" Or .Cells(j, 19) = "продукция" Then
Cells(4, lLastCol + 2) = .Cells(j, 5)
lLastCol = lLastCol + 1
End If
End If
Next
iLastRow4 = .Cells(.Rows.Count, 2).End(xlUp).Row
For j = 3 To iLastRow4
If Not IsEmpty(.Cells(j, 6)) Then
Cells(iLastRow1 + 3, 1) = .Cells(j, 6)
Cells(iLastRow1 + 3, 2) = .Cells(j, 19)
iLastRow3 = iLastRow1 + 1
End If
Next
Next aSheet
End Sub
Добрый день Ругается на 22 строчку (на 32 думаю тоже будет ругаться), помогите, что не так... если цикл для каждого листа делать отдельно, то всё нормально, в такой форме ругается.... Структура всех листов одинаковая, только данные нужно брать с листов перечисленных в Array(). Заранее спасибо
Sub Ìàò_óðîâåíü1()
Dim iLastRow1 As Long
Dim iLastRow2 As Long
Dim iLastRow3 As Long
Dim iLastRow4 As Long
Dim j As Long
iLastRow1 = Cells(Rows.Count, 3).End(xlUp).Row
Range(Cells(5, 1), Cells(iLastRow1, 1)).ClearContents
iLastRow1 = Cells(Rows.Count, 3).End(xlUp).Row + 1
iLastRow3 = Cells(Rows.Count, 3).End(xlUp).Row
Range(Cells(5, 1), Cells(iLastRow3, 1)).ClearContents
iLastRow3 = Cells(Rows.Count, 3).End(xlUp).Row + 1
With Sheets("товар5")
iLastRow2 = .Cells(.Rows.Count, 2).End(xlUp).Row
For j = 3 To iLastRow2
If Not IsEmpty(.Cells(j, 6)) Then
If .Cells(j, 19) = "Полуфабрикат" Or .Cells(j, 19) = "Продукция" Then
Cells(4, iLastRow1 + 2) = .Cells(j, 6)
iLastRow1 = iLastRow1 + 1
End If
End If
Next
End With
With Sheets("товар5")
iLastRow4 = .Cells(.Rows.Count, 2).End(xlUp).Row
For j = 3 To iLastRow4
If Not IsEmpty(.Cells(j, 7)) Then
Cells(iLastRow3 + 3, 1) = .Cells(j, 7)
Cells(iLastRow3 + 3, 2) = .Cells(j, 19) 'тип
iLastRow3 = iLastRow3 + 1
End If
Next
End With
.......
end sub
Добрый день, помогите ускорить работу макроса. Данный макрос собирает на отдельный лист в строку все наименования с типом "полуфабрикат" или "продукция" c листа "товар5", а в столбец все включения на один уровень ниже. Таблица с исходными данными выглядит как в примере http://www.planetaexcel.ru/techniques/9/47/ . Если листов с исходными данными хотя бы 5 а данных 500-1000 строк, работает очень долго
Добрый день Есть монотонная операция, которую я попытался упростить с помощью макроса, но возникли некоторые трудности.
В приложенном файле в ячейке G7 находится фильтр по фамилиям. Необходимо по очереди выбрать каждую фамилию и распечатать на отдельном листе. В модуле VBA есть пример для двух фамилий, сделанный через запись макроса. Фамилии будут меняться, соответственно если записывать макрос для всех фамилий, как сделано через запись будет еще дольше, чем вручную. Хочется, чтобы макрос выбирал по очереди все фамилии и печатал каждую выборку на отдельном листе.
Заранее спасибо. Пример прикрепляйте, пожалуйста, в архиве, иначе не скачаю. (сисадмин на работе нехороший человек....)
День добрый Нужна помощь в корректировке макроса, нужно чтобы сначала открывались все скрытые строчки, а потом срабатывал макрос
Код
Private Sub Worksheet_Activate()
Dim ra As Range, delra As Range
скрыть = Array("скрыть")
For Each ra In ActiveSheet.UsedRange.Rows
For Each word In скрыть
If Not ra.Find(word, , xlValues, xlPart) Is Nothing Then
If delra Is Nothing Then Set delra = ra Else Set delra = Union(delra, ra)
End If
Next word
Next
If Not delra Is Nothing Then delra.EntireRow.Hidden = True
End Sub
Добрый день Нужна ваша помощь. В примере 3 листа (Два отчета и свод, который формируется из данных отчётов). Сотрудник при заполнении отчета выбирает наименование красителя из выпадающего списка, при отсутствии наименования вбивает его ручками. И он должен добавится в список напротив определённого наименования в списке на листе отчета.
Имеется диапазон ячеек P69:P80 с формулой ="='\\5serv\Reglament\Производство\ПЕРВИЧКА ПРОИЗВОДСТВА\ПЕРВИЧКА\"&ГОД($K$4)&"\"&СМЕЩ(Р!$B$3;Р!$A$2-1;0;1;1)&"\["&ЕСЛИ(ДЕНЬ($K$4)<=10;СЦЕПИТЬ(0;ДЕНЬ($K$4)-1);ДЕНЬ($K$4)-1)&"."&ЕСЛИ(МЕСЯЦ($K$4)<10;СЦЕПИТЬ(0;МЕСЯЦ($K$4));МЕСЯЦ($K$4))&"."&ГОД($K$4)&".xls]Панель_ночь'!$J$"&СТРОКА()
С помощью макроса: Sub вставка()
Range("I69:I80").Value = Range("P69:P80").Value
End Sub
результат вычисления вставляется в ячейки I69:I80
Внимание вопрос, как вставить данную формулу в макрос и результат вычисления вставлять в диапазон I69:I80?
Добрый день. Возникла проблема. Есть таблица, в которой нужно просуммировать данные если есть одинаковые значения в столбцах с 1 по 3, причем суммировать нужно только если все 3 значения совпадают и вывести это в отдельную таблицу, с уже просуммированными данными.
Добрый день. Тем по данному вопросу просмотрел много, но к сожалению мне не подходят((( Суть проблемы в том, что есть отчёт, который формируется из данных с других листов по формулам, результатом может быть как значения, так и #Н/Д. Отчёт состоит из данных по 4 участкам, соответственно если в одном из участков нет данных, то его нужно скрыть полностью (сделано группировкой для примера), если же есть данные и заполнены строки, то отображаться должны только строки с данными, итого и название участка.
Вечер добрый. Прошу помочь... Есть две таблицы - исходные данные и результат. Необходимо в результат внести данные относительно исходных, но со смещением на заданную величину (ячейки A14:A16).
Добрый вечер. Есть листы с данными о компоновке приборов (пока 2, будет порядка 20), каждый прибор состоит из "товара", "полуфабриката", "тех. операции", находящихся в разных столбцах по уровню. На каждом листе о приборе есть поиск значений по полю вид (например для вида "товар" - это столбец B) и присваивание ему номера от 1 до фиг знает сколько их будет (думаю порядка 3000))). Необходимо на отдельном листе с именем Товар в столбце C найти все наименования с типом "товар" и вывести их названия (причем поиск делать на всех листах с приборами). Вся проблема в том, что значение могут находится в столбцах с D по H.
Есть таблица со связанными выпадающими списками. К примеру В10 => D10 => D11 => E10. Хочется, чтобы при изменении значения в ячейке B10, последующие ячейки (D10 => D11 => E10) становились пустыми, а так же если меняется значение, например, в D11, то пустой становилась бы только ячейка E10 и соответственно при изменении значения в D10. пустыми стали ячейки D11 и E10
Добрый день Прошу помощи. Ссылка типа 'Y:\Б.Д.И\Первичка\2012\Декабрь\[01.12.2012.xls]Офсет_день'!$J$17 срабатывает при закрытой книге 01,12,12 а ссылка типа =ДВССЫЛ("'Y:\Б.Д.И\Первичка\"&ГОД($A$1)&"\"&'Анализ по позициям'!$B$1&"\["&СЦЕПИТЬ(0;ДЕНЬ($A$1))&"."&МЕСЯЦ($A$1)&"."&ГОД($A$1)&".xls]Офсет_день'!$J$17") отображает данные данные только при открытой книге 01,12,12. При закрытии данной книги выдает ошибку #ССЫЛКА! Преобразования внутри формулы ДВССЫЛ все верные и приводят к результату как в первом абзаце, но данные отображаются только при открытой книге(((( Зарание спасибо.
Добрый вечер У меня есть вопрос по копированию формул. Есть ячейка с формулой, в ней ссылка на лист с именем 1.12.12 причем в формуле ссылка повторяется 2 раза, таких листов 31 (на каждый день месяца), таких ячеек 2 столбца по 120 штук в каждом. Необходимо скопировать формулы в соседние столбцы с изменением только ссылки на лист (2.12.12, 3.12.12 и т.д.). Таблица в листе "анализ по позициям". Заранее спасибо.
Есть почти готовый табель который мне помогли сделать на этом форуме. Не могу ни как посчитать отработку в праздничные дни. Только есть одна особенность.... Допустим праздник 2 числа, а работник выходит в ночь первого - ему считается 8.5 часов, а если он выходит второго то - 3.5 часа, а если работает непосредственно 2 числа то 12
Здравствуйте, есть маленькая проблема..... Хочется создать автоматическое заполнение листа (в виде списка) с названием Ведомость данными с 5 других листов (все в одной книги), причем на конкретную дату, которую я сам выбираю. Данные - это ФИО сотрудника, табельный номер, должность, причина не выхода на работу. Критерии вывода данных - это отсутствие сотрудника на рабочем месте по каким либо причинам (отпуск, прогул, простой оборудования из за отсутствия работы, больничный). Причины отсутствия вводят мастера смен в своих листах (табели), согласно условным обозначениям (о-отпуск, б/л-больничный, пр-простой, н/в-прогул). К тому же людей много и они часто меняются, соответственно постоянно табели редактируются. Помогите плз, а то всю голову сломал, пока думал это сделать(((((