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

Страницы: 1 2 След.
[VBA] Проверка добавленного файла перед запуском макроса
 
Всем здравствуйте!

Подскажите, пожалуйста, можно ли через VBA реализовать проверку добавленного файла перед запуском последующего макроса?
Суть такова: запускаем первый макрос, добавляем файл (в примере это .txt файл). Далее перед запуском второго макроса происходит проверка о наличии файла: если есть - MsgBox "Файл есть", если нет, то MsgBox "Файла нет".

Я ничего лучше не смог придумать, кроме как сделать переменную Public, которая меняется на 1, при добавлении файла. Но его большая проблема в том, что при удалении этого файла обратного изменения на 0 не происходит. Может быть стоит каким-то образом зашить на этот объект сценарий удаления? Или данное решение совсем не в духе правильного направления?

Во вложении пример.
Всем спасибо!
Изменено: BUCK - 02.11.2023 11:05:45
[VBA] Запись уникальных значений массива в одну ячейку через запятую
 
Всем доброго дня!

Я снова за помощью к вам с массивами.
Задача такая: есть массив на листе "Исходник", где мы выбираем определённого поставщика победителем на определенный товар и на определенный рынок сбыта и прописываем победителю % > 0 в колонке D. Далее, запуская макрос, на листе "Вывод" появляется список из поставщиков победителей и в ячейке справа их рынки сбыта через запятую (во вложении наглядный пример).

Я со своей стороны написал код на извлечение двумерного массива, который при наличии в колонке D значения "> 0" записывает поставщика и рынок сбыта. Далее через Словарь вычленил оттуда уникальные значения, но так как у меня со словарями пока все плохо, дальше вообще не понимаю как действовать. Подскажите, пожалуйста, что можно сделать?

Буду рад любой обратной связи! Спасибо!
Изменено: BUCK - 02.11.2023 09:58:11 (Добавил пример)
[VBA] Двусторонняя проверка наличия данных в двух массивах
 
Всем здравствуйте!

Имею на руках два массива:
1. Первый: 3 столбца на n-строк
2. Второй: n-столбцов на n-строк (в примере 2 столбца)
В первый массив товарищи заносят свои данные, а во второй вставляют выгрузку из источников.

Нужно в Массиве 2 проверить по первому столбцу (A) есть ли то или иное значение ячейки в Массиве 1. Если нет - удалить всю строку; если есть - оставить.
Далее после выполнения данной процедуры, проверить каких данных в Массиве 2 (столбец А) нет, которые заявлены в массиве 1, и вывести MsgBox с найденными несоответствиями.
Подскажите, пожалуйста, как можно решить данную задачку? Буду благодарен за любой совет!
Спасибо!
Изменено: BUCK - 27.10.2023 13:42:59
[VBA] Слияние двух массивов с повторением
 
Всем здравствуйте!

Передо мной стоит задачка: нужно из двух колонок с данными сделать двумерную таблицу, где данные первой колонки будут повторяться для каждого уникального значения второй колонки (визуально показал во вложении).
Я со своей стороны создал Dictionary, который записал все уникальные значения второй колонки в массив, но я не могу понять как вычленить все эти Items из словаря и сделать из него обычный массив данных. И в целом я уже запутался... Подскажите, пожалуйста, как можно реализовать данный код в VBA? Спасибо всем заранее!

P.S. похожую тему открывал ранее, но там не нужно было искать уникальные значения по колонке.
Слияние двух массивов в одну со множественной вставкой [VBA] (planetaexcel.ru)
Изменено: BUCK - 24.10.2023 16:07:07
[VBA] Worksheet_Change: срабатывание при вставки диапазона данных
 
Всем доброго дня!

У меня есть код на изменение данных листа (ниже представлен), который прекрасно обрабатывает при изменении данных одной ячейки. Однако при вставке "как значения" данных по диапазону (например, сразу 10 ячеек), то он обработает только ту ячейку, в которую мы вставляем диапазон (на картинке виден результат).
Подскажите, пожалуйста, можно ли как-нибудь зарядить VBA отрабатывать код для всех ячеек куда были вставлены данные (а также удалять там, где диапазоном было сделано очищение)? Всем спасибо!

Код
Private Sub Worksheet_Change(ByVal Target As Range)

Dim sh As Worksheet
Set sh = ThisWorkbook.Sheets("2. Sheet")

a = sh.Cells(sh.Rows.Count, "D").End(xlUp).Row + 1

Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.EnableEvents = False

    If Not Intersect(Target, Range("B4:B" & a)) Is Nothing Then
          
        If IsEmpty(Cells(Target.Row, 2)) Then
            sh.Range("B" & Target.Row & ":F" & Target.Row).ClearContents
            GoTo flag
        End If

        With sh
            .Range("C" & Target.Row).Formula = "=""Done"""
            .Range("D" & Target.Row).Formula = "=""Done"""
            .Range("E" & Target.Row).Formula = "=""Done"""
        End With
               
    End If

flag:

Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.EnableEvents = True
        
End Sub
Изменено: BUCK - 19.10.2023 11:11:32
[VBA] Исключение данных по ключу
 
Всем здравствуйте!

Подскажите, пожалуйста, можно ли в коде VBA при работе со сводными таблицами давать на исключение тех полей, которые содержат определенный текст? Пример ниже, спасибо!

Оригинальный код:
Код
With ActiveSheet.PivotTables("branch").PivotFields("Подотдел")
    .PivotItems("10-удалДВЕР").Visible = False
    .PivotItems("15-удалНАСТЕННЫЕ").Visible = False
    .PivotItems("35-удалЗАЩИТНЫЕ").Visible = False
    .PivotItems("10-удалитьЛЮСТРЫ").Visible = False
End With

Целевое решение (оно у меня не работает, но хотелось бы, чтобы так выглядело):

Код
With ActiveSheet.PivotTables("branch").PivotFields("Подотдел")
    .PivotItems("*удал*").Visible = False
End With
[VBA] Сбор данных из матрицы по критериям (коллекции)
 
Всем здравствуйте!

Появилась задача разделить данные определенных столбцов из исходной таблицы в разные таблицы на другом листе, исходя из критерия. По подсказкам на форуме и в интернете, решил попробовать через коллекции. Написав код (есть в примере и ниже), понял что он очень громоздкий и не совсем удобный. Можете, пожалуйста, подсказать, как лучше переделать код, чтобы я научился чему-то новому, и чтобы он был эффективнее...? Для наглядности привожу описание задачи ниже.

Что имеем:
1. Исходная таблица имеет n столбцов, количество которых не изменяются (в примере для удобства сделал малое кол-во столбцов)
2. Количество строк в исходной таблице меняется (добавляется/убавляется)
3. В отдельном столбце считается критерий ("Категория") исходя из изменения данных год к году
Что хотим получить:
1. На выходе есть три таблицы: уменьшение суммы, увеличение и без изменений
2. Запуская макрос, код пробегает по столбцу "Категория" и разносит данные из определенных столбцов по разным таблицам на листе "Вывод", исходя из критерия

Скрытый текст

Всем неравнодушным заранее спасибо!  
Изменено: BUCK - 22.09.2023 10:59:01
UserForm - название кнопки от данных в ячейке
 
Всем добрый день!

Очередной вопрос по VBA, на этот раз по UserForm. Подскажите, пожалуйста, можно ли как-либо сделать названия кнопок динамичными, которые будут меняться в зависимости от значения в ячейке на рабочем листе?
Дело в том, что у меня есть файл, который будет жить не один год, и было бы здорово, если данные в UserForm обновлялись в зависимости от выбранного года (выпадающий список - выбираем нужный год, потом в скрытых листах формируются данные для кнопок). Попытался через следующий код при запуске формы, но он не работает...
Код
Private Sub UserForm_Initialize()
    Me.CommandButton1 = Sheets("TOTAL").Range("J3").Text
End Sub
Изменено: BUCK - 18.09.2023 17:25:54
[VBA] Работа с переменными листов (1 to n)
 
Всем привет!

Разбираюсь с переменными в VBA и появилась идея облегчить код вводом переменной для листов и с их последующей работой. Ниже код: я задал переменные на листы "sht(1 To 7)", но как объявлять сразу всю группу, чтобы с ней работать так и не понял. Через For Each тоже не догоняю (у нас же не может быть лист в листе уже). Подскажите, пожалуйста, как правильно?
Код
Public sht(1 To 7) As Worksheet

Sub analysis()

Set sht1 = ThisWorkbook.Worksheets("Анализ - 1")
Set sht2 = ThisWorkbook.Worksheets("Анализ - 2")
Set sht3 = ThisWorkbook.Worksheets("Анализ - 3")
Set sht4 = ThisWorkbook.Worksheets("Анализ - 4")
Set sht5 = ThisWorkbook.Worksheets("Анализ - 5")
Set sht6 = ThisWorkbook.Worksheets("Анализ - 6")
Set sht7 = ThisWorkbook.Worksheets("Анализ - 7")

sht(1 to 7).Visible = False 'вот тут очевидная ошибка, для примера привел

End Sub
Изменено: BUCK - 15.09.2023 11:55:08
Ошибка при обработке макроса замены всех данных на значения (UsedRange.Value)
 
Всем здравствуйте!

У меня есть массивный макрос, у которого в конце перед сохранением выполняется код:
Код
Dim sh as Worksheet

For Each sh In ThisWorkbook.Worksheets
    On Error Resume Next
    sh.UsedRange.Value = sh.UsedRange.Value
Next sh
 

Проблема заключатся в том, что (оказывается для меня) данный код не просто вставляет все данные на листах как значения, но еще и заходит в код каждого листа и обрабатывает его.
И на одном из листов, при обработке у меня по какой-то причине меняются данные на огромное количество нулей и формул. Ниже, собственно, код листа, который вызывает проблему. Мне кажется я неправильно указал Target (Target.Column поставить не могу, так как мне нужно пересечение только в определенном диапазоне).

Очень прошу помочь решить проблему! Также прикладываю урезанный файл.

Код
Private Sub Worksheet_Change(ByVal Target As Range)

    If Not Intersect(Target, Range("D3:D12")) Is Nothing Then
        Application.EnableEvents = False
        If IsEmpty(Cells(Target.Row, 4)) Then
            Range("D" & Target.Row & ":K" & Target.Row).ClearContents
            Application.EnableEvents = True: Exit Sub
        End If
        With Target.Offset(0, 1)
         .FormulaR1C1 = "=IFERROR(VLOOKUP(RC4,'R:\Source\[Список поставщиков.xlsx]Export'!C2:C6,5,0),""Не найдено"")"
        End With
        With Target.Offset(0, 2)
         .FormulaR1C1 = "=IFERROR(VLOOKUP(RC4,'R:\Source\[Список поставщиков.xlsx]Export'!C2:C6,2,0),""Не найдено"")"
        End With
        With Target.Offset(0, 3)
         .Value = "Действующий"
        End With
        Application.EnableEvents = True
    End If
    
    If Not Intersect(Target, Range("E3:E12")) Is Nothing Then
        Application.EnableEvents = False
        If IsEmpty(Cells(Target.Row, 5)) Then
            Range("D" & Target.Row & ":K" & Target.Row).ClearContents
            Application.EnableEvents = True: Exit Sub
        End If
        With Target.Offset(0, 2)
         .Value = "Новый"
        End With
        Application.EnableEvents = True
    End If
    

End Sub
Изменено: BUCK - 15.06.2023 11:51:25
Ошибка связей на файлы в сетевых дисках
 
Всем здравствуйте!

При открытии мастер-файла (эксель-сборщик), программа по какой-то причине не видит файлы-источники (эксели), которые расположены на сетевом диске компании, и просит обновить ссылки. Однако при этом ссылки в "связях с файлами" корректные, путь не меняется и названия папок остаются прежними.

К сожалению, переложить файлы на свой рабочий стол переложить не могу, так как мастер-файлом пользуется вся компания...

Подскажите, пожалуйста, может кто-нибудь сталкивался с похожей проблемой и нашел решение?
Склеивание нескольких диапазонов в одну переменную [VBA]
 
Всем здравствуйте!

У меня проблема с кодом VBA, который я не могу понять как написать. Суть такова: есть разные диапазоны ячеек -> в этих диапазонах я проверяю есть ли закрашенные желтым ячейки (условное форматирование) -> если есть, то заканчиваем макрос.

Ниже сам код. В чем проблема: я хочу, чтобы код смотрел все эти диапазоны, но не могу понять как склеить все эти диапазоны в одну переменную. Попытался через Union, но он не работает. Подскажите, пожалуйста, как можно склеить все эти диапазоны?
Код
Dim Rng1 As Range, Rng2 As Range, Rng3 As Range, Rng4 As Range, Rng5 As Range, Rng6 As Range, mRng As Range, rCell As Range
Dim CellAd As String

Set Rng1 = Sheets("1. Карточка проекта").Range("E4:E23")
Set Rng2 = Sheets("2. Поставщики и гамма товаров").Range("B3:E600")
Set Rng3 = Sheets("2. Поставщики и гамма товаров").Range("I3:L60")
Set Rng4 = Sheets("3. Анализ поставщиков").Range("F17:F70")
Set Rng5 = Sheets("4. Анализ цен").Range("F4:F3000")
Set Rng6 = Sheets("4. Анализ цен").Range("K4:K3000")
Set mRng = Union(Rng1, Rng2, Rng3, Rng4, Rng5, Rng6)


        For Each rCell In mRng
            If rCell.DisplayFormat.Interior.Color = 65535 Then
                CellAd = "на листе '" & rCell.Parent.Name & "', ячейка " & rCell.Address(External:=False)
                MsgBox "Не заполнены данные " & CellAd
                Exit Sub
            End If
        Next
Изменено: BUCK - 02.06.2023 11:31:08
Слияние двух массивов в одну со множественной вставкой [VBA]
 
Здравствуйте!

Подскажите, пожалуйста, как с помощью VBA сшить два массива таким образом, чтобы Массив 1 повторялся столько же раз, сколько значений в Массиве 2, а слева от каждого такого повторения Массива 1 вставлялось значение Массива 2 (наглядно показал во вложении)?
Количество значений в Массиве 1 и в Массиве 2 могут меняться.

Спасибо всем за помощь!  
[VBA] Вставка объекта через VBA
 
Подскажите, пожалуйста, есть ли возможность вставки объектов через какой-либо элемент VBA (а-ля "Вставка"->"Текст"->"Объект"->"Из файла" в виде значка, но через макрос, чтобы было проще)? Если да, то как это можно сделать?
Второй вопрос (если первый возможно осуществить), как сделать выведение такой формы по условию из ячейки? Например, в прикрепленном файле, если значение в ячейке В7 >= 100, то выходит форма запроса загрузки файла (допустим письмо из почты).
Спасибо!
Изменено: BUCK - 24.05.2023 09:35:15
Изменение данных в ячейке при изменении данных формулой соседнего листа
 
Всем здравствуйте!

Стоит задача вставить названия компаний (столбец С, лист "Выборка"), у которых формулой подтягивается критерий "+" (столбец Е, лист в "Выборка"), в лист "Результат" с ячейки Е11.
То есть, при возникновении критерия "+", появляются по очереди / по алфавиту их названия в листе "Результат". Если "+" уходит, то должно уходить и название компании.

Подскажите, пожалуйста, можно ли это сделать при помощи макроса, который запускается не от кнопки, а следит за изменениями ячейки, которая изменяется не пользователем, а формулой? Мне казалось, что это можно сделать через Private Sub Worksheet_Calculate(), но изучив немного тему, начал в этом сомневаться.

Всем спасибо!
[VBA - Worksheet_Change] Изменение данных при вводе данных в ячейку
 
Здравствуйте всем!

Очень прошу помощи в написании макроса Worksheet_change. Подробное описание по шагам, как выглядит идея, во вложении на листе "Выборка".
Я сам честно пытался написать макрос, но у меня сразу же возникло несколько трудностей, из-за отсутствия компетенций (код во вложении тоже есть):
1. Не удаляются/криво удаляются данные при удалении данных из таргета
2. Данные появляются, даже если я нажимаю кнопку Delete в таргет столбце

Код написал только для п.1, для остального мозгов не хватает (и то криво).
P.S. п.2 в таблице во вложении больше написал для себя, так что на него можете не смотреть (если не хотите:))

Спасибо всем заранее за отклик и помощь! Буду рад любой обратной связи.
[VBA] Копирование значений в соседний столбец по условию
 
Всем добрый день!

Передо мной стоит тривиальная задача (для знающих VBA), для которого у меня не хватает знаний. Пример файла во вложении.

Вводные: заполняются произвольно данные в столбец "А" (может дойти, допустим, до 100 строк). Далее вручную в столбце "В" проставляются критерии в виде значения "+" или оставляют пустым.
Цель: с ячейки "D2" автоматически подтянуть значениями те наименования, для которых был проставлен критерий "+" (без запуска макроса).

Я понимаю, что это нужно сделать как-то через ByVal Target As Range, но не могу понять как работает эта функция и какие нужно формулы для этого ввести. Очень прошу помочь! Спасибо!
Изменено: BUCK - 14.12.2022 14:22:25
[VBA] Поиск и перенос уникальных данных
 
Всем добрый день!

Очень прошу вас помочь в создании макроса для переноса уникальных данных из одной книги в другую, так как макросами владею не сильно. Пример приложил в файле, для простоты Лист=Книга.

Допущения следующие:
  1. Исходный файл "Книга 2", который выгружается из открытого источника, и куда постоянно добавляются данные в верхнюю часть таблицы, а также обновляются существующие данные
  2. "Книга 1" - рабочий файл, в который мне необходимо перенести новые значения в верхнюю часть таблицы, а также обновить "Статус" и "Кол-во поставщиков" у существующих уже позиций
Порядок действий следующий (как я вижу "в лоб"):
  1. По столбцу ID определить количество неповторяющихся значений в "Книге 2"
  2. Выделить из образовавшегося списка только позиции из России (столбец страна). По данным двум критериям (1 и 2) получаются уникальные данные
  3. Вставить пустые строки в "Книга 1" под шапку таблицы, по количеству равным неповторяющимся значениям из п.1 и п.2. Тут скорее всего подтянется формат ячеек шапки, поэтому нужно подправить формат ячеек исходя из общего формата таблицы.
  4. Вставить значениями те данные уникальных ID, которые пересекаются в обеих таблицах (выделены зеленым в "Книге 1").
  5. ВПР-ом подтянуть данные по "Статусу" и "Кол-ву поставщиков" из "Книги 1" в "Книгу 2" для всех существующих строк. Вставить как значения.
Это основная часть кода, в которой я совсем запутался и не понимаю, какие функции и формулы нужно использовать (кроме, наверное, 5 пункта:)...
Понимаю, что у многих нет времени детально разбираться с задачкой, поэтому буду рад, если вы хотя бы подскажете какие функции нужно использовать для каждого шага.

Спасибо!
Изменено: BUCK - 09.09.2022 14:42:00
Обратный НОМНЕДЕЛИ() с выводом даты последнего дня недели
 
Всем привет!

Простите, если вопрос покажется глупым, но в голову не приходит решение...
Передо мной стоит задача вывода даты последнего дня недели (воскресенья) при известных номера недели и года. То есть, по сути, обратная формула =НОМНЕДЕЛИ(). В приложенном файле данные формулы должны быть на 4 строке.

Я со своей стороны попытался сделать формулу, которая прописана в файле, но она работает только для 2020 г., для всех остальных лет она работает некорректно.

Заранее спасибо за помощь!
VBA: VLOOKUP по условию
 
Всем привет!

Изначально хотелось бы оговорить: вопрос тупой (для тех, кто в этом что-то понимает), с гуглом видимо дружу плохо, с VBA тоже...

Вопрос заключается в следующем. Есть некоторая таблица, которая представлена на листе "Учет доходов", где мне необходимо задать макросом ВПР на "Стоимость", при изменении ячейки "Наименование услуги" (исходник для стоимости на листе "Прайс"). И после этого сохранить итог как значение. Есть несколько моментов: изменение происходит через выпадающий список, значения будут тянуться на 100 тыс. строк, может больше (т.е. скорее всего надо формулу прописывать на всю колонку).

Таким же образом нужно высчитать "ЗП доктора", которая считается как ВПР ставка по ФИО доктора из листа "Данные персонала" * "Стоимость". То есть при изменении колонки "Стоимость" (при помощи VBA), считается ЗП доктора.

Заранее всем спасибо!

Я самостоятельно попытался что-то сделать, но у меня плохо получилось (сделал на 7 ячеек, чтобы файл не упал):
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim p As Range: Application.ScreenUpdating = False
    For Each p In [H3:H10]
        p.FormulaR1C1 = "=VLOOKUP(RC[-3],Прайс!C2:C3,2,0)"
        If IsError(p) Then p = ""
    Next
End Sub
Динамическое наименование заголовка умной таблицы
 
Всем доброго дня!

Подскажите, пожалуйста, есть ли возможность название заголовка умной таблицы отослать на определенную ячейку? В приложенном примере есть умная таблица, и есть необходимость дать название заголовку таблицы значением из ячейки E2.
Если ссылаться напрямую (=Е2), то просто выводит константу 0.

Спасибо!
[VBA] Доработка "Альтернативы выпадающему списку (форма с поиском) " от GIG_ant
 
Добрый день!

Описание проблемы, вложенные файлы раскрыты по этой ссылке в иной ветке форума.
Прошу неравнодушных отписать в личные сообщения примерную стоимость и возможность реализации доработки.

Спасибо.
[VBA] Доработка "Альтернативы выпадающему списку (форма с поиском) " от GIG_ant
 
Ребята, всем привет!

Для начала хотел бы поблагодарить всех, кто был причастен к созданию Альтернативы выпадающему списку (в особенности GIG_ant).

Недавно прилетел вопрос по оптимизации работы в эксель для людей, которые в нем очень плохо разбираются. Сразу же полез рыться на форуме в поиске оптимального решения.
Наиболее крутое для меня решение нашел тут от GIG_ant.

Однако в процессе реализации данного предложения столкнулся с рядом проблем, которые, увы, самостоятельно решить не могу за неимением знаний в данной области.

Что, в общем, имеется:
Есть лист "Потребность", который заполняется из листа "Исходный (changeable)", путем выбора данных из формы со списком. При этом лист Исходный может заполнятся дополнительными строками теми же людьми, через ту же форму (кнопка Добавить).

Какие проблемы возникли:
1. Сейчас на листе Исходный имеется всего несколько столбцов и только в одном из них порядка 5000 строк. В будущем во всех 4 столбцах планируется ввести порядка 50 тысяч строк. Но проблема заключается в том, что уже сейчас форма при даблклике на листе Потребность вызывается порядка 2 минут. Я блюсь представить что будет потом. Можно ли это как-нибудь исправить и как?

2. Выбираемые названия зачастую очень длинные и в форме их иногда бывает невозможно разобрать. Можно ли данную форму сделать таким образом, чтобы окошко формы растягивалась и как?

Спасибо каждому, кто останется неравнодушным к моей проблеме!
[VBA] VLOOKUP при появлении значения в соседней ячейке
 
Привет всем!

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

Процесс:
Обычный человек вводит значения в столбцы В и С (ИНН и Партнер). На текущий момент этот человек вводит значения и туда и сюда.

Что-бы хотелось сделать:
Когда человек введет, допустим, только "ИНН", справа от него ВПРом (в поле "Партнер") автоматически подтягивалось наименование партнера. И наоборот, если он ввел данные в "Партнер", то выводилась бы автоматически ИНН (прошу обратить внимание на обратный ВПР, если возможно). Если макрос выводит #Н/Д, то заменить его на "ИНН не найден"/"Партнер не найден" (=ЕСЛИОШИБКА). Макрос нужен на все 2 столбика, т.к. в последующем будут добавляться в базу данных новые контрагенты.

Прошу Вас помочь в решении данной задачки.
Если кому-то она покажется слишком простой, прошу простить.
Поиск первого отличающегося значения в строке.
 
Здравствуйте!

Есть строки со значениями для каждого месяца. Допустим:

22 22 22 22 22 25 25 25 25 25 25 25
30 30 30 30 30 30 30 30 32 32 32 32
15 15 15 15 15 0   0   0   0   0   0   0

Как формулой найти позицию первого числа в строке, которое отличается от первого значения (январь)? При этом сумма может быть как меньше первого так и больше.

Спасибо!
Суммирование с условиями по столбцам и строкам
 
Всем привет!

Появилось некоторое затруднение при придумывании формулы, прошу Вас помочь.
Описание следующее:
На листе "Расходы на персонал" есть условный сотрудник "Номер 1". По этому сотруднику мне необходимо посчитать количество отработанных дней (просуммировать) из листа "Табель уч. раб. времени". При этом необходимо учитывать несколько условий: месяц (по столбцу В) и, собственно, ФИО сотрудника по строке 1 листа "Табель учета раб. времени".

В будущем планируется ввод новых сотрудников, поэтому формулу нужно будет протянуть по всей таблице листа "Расходы на персонал".

P.S. пароль от файла "1".
Спасибо большое!
Изменено: BUCK - 01.02.2018 21:49:04
Автоматическая замена номера на соответствующий текст (VBA)
 
Уважаемые, добрый день!

Описание просьбы:
Появилась задача о создании графика выполнении ремонта оборудования. Пример графика во вложении.
Мне (для общего развития и увеличения скорости создания графика) хотелось бы уйти от полного написания каждого оборудования (их всего 28) на каждую дату и на каждого подрядчика, а ввести понятие "ID оборудования". То есть, при вводе в ячейку, допустим, цифры "1", выходило бы название "Один" и так далее.

В поисках решения своего вопроса, наткнулся на данную тему. Однако, в данном случае автор просит создать форму, в котором он смог бы зашить данные в сам код макроса, а мне при этом хотелось бы зашить ее на таблицу в листе (для того, чтобы была возможность изменить название оборудования или добавить новый пункт).
Для практики попробовал зашить формулу в книгу, вроде работает, но этого недостаточно..

Прошу Вас помочь с этим вопросом. Спасибо!
Код макроса ниже, также во вложении сама таблица.
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub 'выделено больше одной ячейки
    If Not Intersect(Target, Range("G3:AK6")) Is Nothing Then
        Application.EnableEvents = False
        Select Case LCase(Target)
            Case ""
                Target = "Введите ID оборудования"
            Case "1"
                Target = "Один"
            Case "2"
                Target = "Два"
            Case "3"
                Target = "Три"
        End Select
    End If
        Application.EnableEvents = True
End Sub
Изменено: BUCK - 23.10.2017 10:11:08
Оптимизация формулы с множественным условием ЕСЛИ(ИЛИ...
 
Уважаемые знатоки, добрый день!

Имеется формула: =ЕСЛИ(ИЛИ(J8=O77;J8=P77;J8=Q77;J8=R77);M8*G8;0).
Вопрос как можно ее оптимизировать, вынеся за скобки ИЛИ ячейку J8? В моей голове, допустим, это выглядит так:
=ЕСЛИ(J8=ИЛИ(O77;P77;Q77;R77);M8*G8;0) , но она, к сожалению, не работает...

Если кто-нибудь знает ответ, прошу помочь.
Спасибо!
Замена ячейки в формуле на ссылку в виде функции
 
Всем привет!

Подскажите, пожалуйста, есть ли функция в Excel, при которой можно заменить ячейку в формуле другой функцией? Мне в голову приходит только функция =АДРЕС, но она у меня не работает...
К примеру, есть формула =СУММ(А1:А10), заменяем в ней А1 на АДРЕС(D3;1) и должны получить тот же результат, где:

АДРЕС(D3,1) - ссылка на ячейку с плавающей строкой

Функция АДРЕС для меня была бы очень удобной, так как для меня важно, чтобы был плавающий номер строки.
Пример во вложении.

Спасибо!
Макрос поиска значений и суммы по заданному критерию.
 
Всем привет!:) Я как полный новичок в макросах столкнулся с большой проблемой автоматизации своей работы и очень прошу Вас помочь.

Немного вводная информация: Есть некоторая исходная форма данных (лист "Общий" в примере) откуда выгружаются данные на лист "Summary_Office". При этом данные выгружается за 1 месяц в левой части листа "Summary_Office" и Накопительно (сумма всех значений с Января до заданного месяца) - правая часть "Summary_Office"

Моя цель: написать макрос, который, при выборе месяца из выпадающего списка и нажатием некоторой кнопки, будет автоматически выгружать данные в столбики листа "Summary_Office". Я попытался подписать столбики, но объясню подробнее:
  1. Левая часть
  • 1 столбик - Наименования статей (неприкасаемый столбик)
  • 2 столбик - Факт выбранного месяца за 2016 г.
  • 3 столбик - План выбранного месяца за 2016 г.
  • 4 столбик - Дельта (неприкасаемый столбик)
  • 5 столбик - Факт выбранного месяца за 2015 г.
  • 6 столбик - Дельта (неприкасаемый столбик)
2. Правая часть
  • 1 столбик - Наименования статей (неприкасаемый столбик)
  • 2 столбик - Сумма фактических значений от января 2016 г. до выбранного месяца 2016 г.
  • 3 столбик - Сумма плановых значений от января 2016 г. до выбранного месяца 2016 г.
  • 4 столбик - Дельта (неприкасаемый столбик)
  • 5 столбик - Сумма фактических значений от января 2015 г. до выбранного месяца 2015 г.
  • 6 столбик - Дельта (неприкасаемый столбик)
Очень нужна Ваша помощь:
1. Если это возможно, оптимизировать то, что я написал. Я уверен, что есть что-то попроще, просто я непонятливый в этом...
2. Возможно ли сделать правую часть Отчёта? То есть это накопительные суммы?

В примере надеюсь сможете хоть что-нибудь понять. Если что попытаюсь всё объяснить. Хочу еще обратить Ваше внимание на то, что у меня каждый месяц разделен на 2 части: Факт и План (лист "Общий")

Заранее большое спасибо.

P.S. Пришлось урезать очень сильно файл. В оригинальной версии все 12 месяцев и намного больше статей.
Страницы: 1 2 След.
Наверх