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

Страницы: 1
Модуль классов для нескольких Scrollbar'ов на листе excel
 
Добрый день,
Не могу понять почему не работает макрос. На листе есть много Scrollbar'ов. Чтобы не прописывать для каждого свои действия, решил создать класс описывающий действия для них. Но он не работает. Не могу понять почему.
Делал на примере описанном на http://www.excel-vba.ru/chto-umeet-excel/rabota-s-modulyami-klassov/.
Преобразование массива по условию (VBA)
 
Добрый вечер,
Нужна помощь в обработке массива данных.
В файле в качестве примера выложена часть массива, который собирается с нескольких листов. Массив отсортирован по дате. Необходимо выделить уникальные значения для каждого месяца и прибора, просуммировать значения потребностей для этих месяцев и приборов и произвести дальнейшие манипуляции, которые указаны в файле (текстом сложно объяснить, проще показать в примере).

В итоге должен получится массив как показан в конце листа в файле, который необходимо перенести на лист.
Заранее спасибо.
суммирование на нескольких листах по нескольким условиям
 
Добрый день,
Нужна помощь в написании формулы или модуля VBA. Способ решения не принципиален (важен результат).
В примере на листе 1 в ячейке С7 результат, который хотелось бы получить без промежуточных таблиц. Таблица "Пример для  "Провод ПВС 0.5 (белый)"" нарисована для наглядности того что хочется получить в ячейке C7.
Поиск дубликатов в строке, макрос VBA
 
Добрый день,
Помогите решить проблему. На форумах и просторах интернета много тем про поиск и удаление дубликатов в столбцах. Мне же нужно найти дубликаты в 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 задается в начале кода. Дальше происходит выполнение части кода совершенно без каких либо проблем пока не доходит до указанной части. Если активный лист входит в заданный диапазон, код отрабатывает только на нём, если переключится на др. лист вообще ничего не происходит....
Формула масива в макросе не хочет переносится в ячейку
 
Доброе утро, помогите пожалуйста разобраться
Почему макрос не воспринимает данную форму записи как формулу массива? Выдает ошибку.
Код
 Worksheets("1").Cells(x, y).FormulaArray = "=SUMPRODUCT('2'!R5C:R9C,TRANSPOSE('3'!RC4:RC8))-VLOOKUP(RC4,'4'!C24:C43,MATCH(R4C,'4'!R4C25:R4C43,0)+1,FALSE)" & _
          "+IF('4'!RC[-1]>0,0,IF((RC[-1]-'5'!RC[-1])<0,RC[-1]-'5'!RC[-1],0))"
Если записывать как обычную формулу, то всё хорошо, так же всё хорошо если записать формулу без условия IF
Код
Worksheets("1").Cells(x, y).FormulaArray = "=SUMPRODUCT('2'!R5C:R9C,TRANSPOSE('3'!RC4:RC8))-VLOOKUP(RC4,'4'!C24:C43,MATCH(R4C,'4'!R4C25:R4C43,0)+1,FALSE)"
 
Визуальное отображение работы "поиск решения" VBA
 
Добрый день
Подскажите пожалуйста, какой параметр в поиске решения указывает на этап выполнения?
В коде:

Код
    ActiveSheet.Range(Cells(5, i), Cells(9, i)).ClearContents    
    bar.Start    
    SolverReset    
    SolverOk SetCell:=Cells(1, i), MaxMinVal:=1, ValueOf:=0, ByChange:=Range(Cells(5, i), Cells(9, i)), _
    Engine:=1, EngineDesc:="GRG Nonlinear"
   
    SolverAdd CellRef:=Range(Cells(5, i), Cells(9, i)), Relation:=4, FormulaText:="öåëîå"   
    SolverAdd CellRef:=Cells(12, i), Relation:=3, FormulaText:="0"   
    SolverAdd CellRef:=Range(Cells(5, i), Cells(9, i)), Relation:=3, FormulaText:="0"  
    SolverAdd CellRef:=Cells(5, i), Relation:=P1, FormulaText:=TextBox2.Value
       SolverAdd CellRef:=Cells(6, i), Relation:=P2, FormulaText:=TextBox3.Value  
    SolverAdd CellRef:=Cells(7, i), Relation:=P3, FormulaText:=TextBox4.Value  
    SolverAdd CellRef:=Cells(8, i), Relation:=P4, FormulaText:=TextBox5.Value
      SolverAdd CellRef:=Cells(9, i), Relation:=P5, FormulaText:=TextBox6.Value  
    SolverOk SetCell:=Cells(1, i), MaxMinVal:=1, ValueOf:=0, ByChange:=Range(Cells(5, i), Cells(9, i)), _
    Engine:=1, EngineDesc:="GRG Nonlinear"
    SolverOk SetCell:=Cells(1, i), MaxMinVal:=1, ValueOf:=0, ByChange:=Range(Cells(5, i), Cells(9, i)), _
    Engine:=1, EngineDesc:="GRG Nonlinear"
       
    bar.Update           
    SolverSolve True  
    Set bar = Nothing
Для прогресс бара необходимо указать по какому параметру его обновлять. В поиске решения какой параметр за это отвечает и как его добавить в :
Код
bar.Update
И еще вопрос, почему когда я задаю целые значения для изменяемых ячеек, макрос всё равно выдает результат с не целыми числами?

Прогресс бар взял отсюда http://office-menu.ru/index.php/inye-kategorii/gotovye-resheniya/42-progressbar-sozdanie-polosy-zagruzki-na-vba
Изменено: Дмитрий Бобровников - 15.09.2014 12:47:14 (Добавил источник прогресс бара)
Поиск решения через UserForm, VBA
 
Добрый день
Помогите, пожалуйста дописать макрос для "поиска решения"
В вызываемом UserForn необходимо прописывать условия для "поиска решения", не могу осилить(((((
Помощь в оптимизации макроса сбора данных с листов по условию VBA, Ругается на переменную iLastRow2 = .Cells(.Rows.Count, 2).End(xlUp).Row
 
Код
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().
Заранее спасибо
Помощь в оптимизации макроса сбора данных с листов по условию VBA
 
Код
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 строк, работает очень долго
Автопечать, после автофильтра (VBA)
 
Добрый день
Есть монотонная операция, которую я попытался упростить с помощью макроса, но возникли некоторые трудности.

В приложенном файле в ячейке G7 находится фильтр по фамилиям. Необходимо по очереди выбрать каждую фамилию и распечатать на отдельном листе. В модуле VBA есть пример для двух фамилий, сделанный через запись макроса. Фамилии будут меняться, соответственно если записывать макрос для всех фамилий, как сделано через запись будет еще дольше, чем вручную. Хочется, чтобы макрос выбирал по очереди все фамилии и печатал каждую выборку на отдельном листе.

Заранее спасибо.
Пример прикрепляйте, пожалуйста, в архиве, иначе не скачаю. (сисадмин на работе нехороший человек....)
Макрос ругается на диапазон, VBA
 
Добрый день
Объясните дураку почему макрос ругается на диапазон?
Код
    Range("R11C5:R20C5").Select
    Selection.FormulaArray = "=[01.02.2014.xls]Сайдинг_день!R105C19:R113C19"
    Range("R22C5:R31C5").Select
    Selection.FormulaArray = "=[01.02.2014.xls]Сайдинг_день!R105C20:R113C20"
    
    Range("R11C6:R20C6").Select
    Selection.FormulaArray = "=[01.02.2014.xls]Сайдинг_ночь!R105C19:R113C19"
    Range("R22C6:R31C6").Select
    Selection.FormulaArray = "=[01.02.2014.xls]Сайдинг_ночь!R105C20:R113C20"
 
Скрытие и отображение строк по условию, 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
 
заранее спасибо
Выпадающий список с добавлением новых элементов в определённую строку. VBA
 
Добрый день
Нужна ваша помощь. В примере 3 листа (Два отчета и свод, который формируется из данных отчётов). Сотрудник при заполнении отчета выбирает наименование красителя из выпадающего списка, при отсутствии наименования вбивает его ручками. И он должен добавится в список напротив определённого наименования в списке на листе отчета.
Изменено: Дмитрий Бобровников - 19.12.2013 23:10:33 (внесение ясности)
Запрет печати при условии отрицательных значений в ячейке, VBA
 
Доброе утро
Как поставить запрет на печать листа при условии отрицательных значений в определённых ячейках?
Изменено: Дмитрий Бобровников - 17.12.2013 23:51:00 (орфография))))
Вставка результата вычисления формулы средствами VBA
 
Добрый день

Имеется диапазон ячеек 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?
Суммирование данных по строкам по 3 условиям
 
Добрый день.
Возникла проблема. Есть таблица, в которой нужно просуммировать данные если есть одинаковые значения в столбцах с 1 по 3, причем суммировать нужно только если все 3 значения совпадают и вывести это в отдельную таблицу, с уже просуммированными данными.
Скрытие строк с ошибкой #НД, Макрос
 
Добрый день.
Тем по данному вопросу просмотрел много, но к сожалению мне не подходят(((
Суть проблемы в том, что есть отчёт, который формируется из данных с других листов по формулам, результатом может быть как значения, так и #Н/Д. Отчёт состоит из данных по 4 участкам, соответственно если в одном из участков нет данных, то его нужно скрыть полностью (сделано группировкой для примера), если же есть данные и заполнены строки, то отображаться должны только строки с данными, итого и название участка.

Заранее спасибо
Разница во времени при переходе одних суток в другие
 
Всем добрый вечер
как сделать, чтобы Excel правильно считал разницу во времени:
Пример
простой с 23:00 по 02:00 = 3:00 (цифры в разных ячейках)

заранее спасибо....
Смещение значений в таблице относительно исходных данных по условию
 
Вечер добрый. Прошу помочь...
Есть две таблицы - исходные данные и результат. Необходимо в результат внести данные относительно исходных, но со смещением на заданную величину (ячейки A14:A16).
Поиск значений в нескольких листах и столбцах по условию
 
Добрый вечер.
Есть листы с данными о компоновке приборов (пока 2, будет порядка 20), каждый прибор состоит из "товара", "полуфабриката", "тех. операции", находящихся в разных столбцах по уровню. На каждом листе о приборе есть поиск значений по полю вид (например для вида "товар" - это столбец B) и присваивание ему номера от 1 до фиг знает сколько их будет (думаю порядка 3000))). Необходимо на отдельном листе с именем Товар в столбце C найти все наименования с типом "товар" и вывести их названия (причем поиск делать на всех листах с приборами). Вся проблема в том, что значение могут находится в столбцах с D по H.
Связанные выпадающие списки и VBA
 
Добрый всем вечер и с праздничками

Есть таблица со связанными выпадающими списками. К примеру В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 других листов (все в одной книги), причем на конкретную дату, которую я сам выбираю. Данные - это ФИО сотрудника, табельный номер, должность, причина не выхода на работу. Критерии вывода данных - это отсутствие сотрудника на рабочем месте по каким либо причинам (отпуск, прогул, простой оборудования из за отсутствия работы, больничный). Причины отсутствия вводят мастера смен в своих листах (табели), согласно условным обозначениям (о-отпуск, б/л-больничный, пр-простой, н/в-прогул). К тому же людей много и они часто меняются, соответственно постоянно табели редактируются.  
Помогите плз, а то всю голову сломал, пока думал это сделать(((((
Страницы: 1
Наверх