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

Страницы: 1
Формулы для обработки массива по ключу с условиями., Формула для формирования массива
 
Добрый день!
Помогите составить формулы обрабатывающую данные из таблицы.
Сложно сформулировать, т.к. несколько условий есть. В файле приложил пример, как криво "сделал", и как надо.
Для примера сделал через ВПР, но так не нужно, в таблице не будет составных ключей.

Смысл в следующем, данные отсортированы по ключевым полям и дате(по убывающей), для удобства поиска.
1. В столбцах D:G по кварталам, необходимо вернуть первые записи по кварталам, кроме самой первой за год.
2. В столбцах H:I записи из п.1 по порядку с переносом строки с датами, т.е. те самые первые записи для кварталов кроме самой первой за год.
3. В столбцах J:L самая первая запись по году.

Вот как то так, в формулы извлекающие массив по условиям играть что-то не получается(((.
Ни как не могу вернуть строку, значение или массив по нескольким ключевым полям.
Изменено: Mergens - 15.12.2023 17:20:57
Получить диапазон по имени стиля
 
Добрый день!
Как в VBA выбрать все ячейки с заданным стилем на листе?
Скрытие ячеек при печати и вывод после, Печать листа без вывода заданных ячеек строк
 
Привет всем!
Подскажите как при просмотре и печати, не выводить на просмотр и соответственно на печать значения из ячеек строки, при этом другие ячейки в строке должны выходить на печать, поэтому скрывать строку не рассматриваю. Но после печати надо все вернуть назад как было. Скрываемые ячейки засунул в именованный диапазон HidePrint.
Пока реализовал по событию  Workbook_BeforePrint форматирование через цвет шрифта и фона в белый для ячеек.
Назад возвращаю по событию Worksheet_SelectionChange.
Поискал по событиям Листа/Книги, но ничего годного не нашел.

скрываю при печати:
Код
Private Sub Workbook_BeforePrint(Cancel As Boolean)
    With Range("HidePrint")
        With .Font
             .ThemeColor = xlThemeColorDark1
             .TintAndShade = 0
            .ThemeFont = xlThemeFontNone
        End With
        With .Interior
             .Pattern = xlNone
        End With
        .Borders.LineStyle = xlNone
    End With
End Sub

Вывожу после печати:
Код
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    With Range("HidePrint")
        .Columns(1).Style = "Вывод"
        .Columns(2).Style = "Вывод"
    End With
End Sub
Изменено: Mergens - 18.01.2023 02:33:09
VBA. Вызов функции из переменной, Библиотеки VBA
 
Добрый день, друзья!

Мне необходимо использовать переменную, в которую будет подставляться имя вызываемой функции.
Какой синтаксис нужно применить VBA, чтобы вызвать функцию из переменной?

Sub Fill()
Dim sFunct
Dim res

 sFunct = "Mult"   'имя функции в переменной

 res = sFunct(3, 4)
 
End Sub

Function Mult(arg1, arg2)  ' вызываемая функция
 Mult = arg1 * arg2
End Function
Изменено: Mergens - 29.07.2022 11:55:41
Создание плоской многоуровневой иерархии из списка, через связи родитель-потомок., Создание иерархии из списка значений
 
Добрый день, форумчане!
Помогите пожалуйста, мне необходимо сделать список в соответствии с последовательностью значения в иерархии.
Необходимый результат выводится через реализованный макрос CreateHier_V1 на лист2 и группируется по Outlinelevel.
Но на больших объемах строк, выполнение очень долгое. поэтому нужно другое решение.

Делаю на Scripting.Dictionary по полям в таблице
УзелПозиция узла у родителяРодительТип узла
NODEIDNODEPOSITIONPARENTIDNODETYPE
Примечание:
NODEPOSITION - Игнорируем
NODETYPE - определяет уровень вложенности

Условия
1. Ускорить выполнение макроса, путем избавления от рекурсии
2. Записи повторяются, поэтому повторы игнорировать.
3. Самый верхний узел родитель ROOT не нужен.

Примечание: Для типа узла "U" - записи идут вместе, а затем их листья. Наглядно видно если отфильтровать по узлу  "U" (Например строки, 891 - 914, 981 - 1028)
Изменено: vikttur - 20.07.2021 19:30:41
Полезные библиотеки/классы VBA, Библиотеки VBA
 
Всем, добрый день!
Хотел бы поинтересоваться, каким библиотеками Вы пользуетесь в VBA?
Я в основном использую стандартные Scripting и RegExp. Для решения поставленных задач, возможно есть ещё интересные объекты, о которых не в курсе.
Если не сложно, просветите, или скиньте ссылку на методичку)))
Изменено: Mergens - 04.07.2021 01:12:01
Регулярное выражение. Взять часть наименования из столбца А и столбца B и получить новое наименование.
 
Добрый день!
Прошу помочь, не получается получить данные через регулярное выражение.
Файл пример приложил.
в столбце А Наименование 1
в столбце B Наименование 2

Задача Взять часть наименования из столбца А и столбца B. Получив новое наименование.

При это в столбце А надо проигнорировать Маску "*(символы)(Цифра(ы))(символы)"В общем все до 2го пробела, Далее взять все (Символы) до "- (Символ в верхнем регистре)".  = Результат (Символы)

Из столбца B берем последние символы до первого пробела с тире от конца строки : Маска "- (символы)(конец строки)" = результат (символы)

Пример простой:
ВЛ 220кВ Камская ГЭС-Апрельская 1                               |Сегмент 3 - оп.5 - оп.248
Ожидаемый результат: Камская ГЭС - оп.248

Более сложные, где "-" 3 раза
ВЛ 220кВ   П-уральская-С-уральская ГРЭС 2                     |Сегмент 1 - оп.1 - оп.120
Ожидаемый результат: П-уральская - оп.120

В верхнем регистре 5 букв.
ВЛ 220кВ Белоярская   АЭС-Курчатовская2                        |Сегмент 2 - оп.11 - оп.26
Ожидаемый результат: Белоярская АЭС - оп.26

П.С. Все обработки будут работать в VBA. Функции вставлены для подбора паттернов. Так что можно прямо на VBA писать обработку.
Изменено: Mergens - 23.04.2021 15:32:44
Создание паттерна для извлечения времени ЧЧ:ММ через регулярные выражения RegExp
 
Добрый день, помогите пожалуйста!

Часть 1(Решена). Нужно создать паттерн извлекающий все варианты заведения времени такие как , с(от) чч:мм по(до) чч:мм, или просто чч:мм, или с(от) чч:мм, или по(до) чч:мм
В файле анализируемая строка А, результат B, паттерны(С), а в столбце D) желаемый результат
по отдельности создать паттерн получается но сделать общий никак.
Надеюсь понятно описал.
UP темы
Часть 2.(Поиск решения) Подскажите как исключить выборку формата чч:мм использую этот паттерн (([0-1]\d|2[0-3])[^\:][0-5]\d)|([0-1]\d|2[0-3][^\:])
на входе строка может быть как ЧЧ [любой разделитель кроме : ] ММ так и только ЧЧ (перевожу его в ЧЧ:00).
Надо исключить если приходит правильно заведенное время  
Изменено: Mergens - 28.03.2021 01:13:20
Замена символов в строке, Замена спецсимволов в строке
 
Добрый день, всем!
Нужно скорректировать данные в табеле учета. Не могу никак решить проблему по замене в строке спецсимволов.
Кроме того надо проставить запятые, удалить лишние пробелы, привести время к нормальному виду, понимаю, что все не учтешь, но есть некоторые закономерности.
сейчас как раз борюсь за правила ввода, вот макрос как раз служит для корректировки и в случае нарушения правил ввод, предупреждения.
Все пока не реализовал.
Пример в файле, где ст -А то как ввели, стБ - как ожидается, ст С. обработка макросом.
Изменено: Mergens - 19.03.2021 14:14:09
Агрегация данных через Scripting.Dictionary, агрегация данных данных
 
Добрый день, друзья!
Свалилась задача по агрегации данных из таблицы по ключевым полям.
Необходимо просуммировать данные по классу, группе, коду в разрезе категорий и единиц измерения.
Вывести результат в таблицу на листе Result, где класс, группа, и код в иерархическом представлении,а в соседний столбец текстовое описание результата агрегации.
Для реализации цели использовал Scripting.Dictionary + класс.
На данный момент результат достигнут, но что-то меня все равно смущает в "изящности кода". Хочу все засунуть в один класс, чтобы можно было использовать и в дальнейшем, возможно получиться снизить количество константой заданных указателей типа (1,1) т.к. в исходной таблице еще добавится столбец с годами, и его также придется вписывать в общую логику.

П.С. Спасибо за замечания, учту в будущем, писал в преддверии 8 марта, поэтому делалось все в спешке))))
Изменено: Mergens - 10.03.2021 12:34:00
Ribbon динамическое изменение в ленте, Динамическое изменение значений в ленте
 
Добрый день, эксперты!

Нужна помощь в реализации динамических изменений в кастомной ленте.
Реализовывал через RibbonXMLEditor, на листе tech в области Логика работы собственно как должно работать.
При изменении параметра dropDown id="list", нужно изменять,  <editBox id="Cor" и Статус(пока еще не сделал, нужно просто выводить текст текущего статуса, не знаю что корректнее использовать)
Изменено: Mergens - 23.08.2019 12:14:00
Формирование словаря из словарей по уникальному ключу массива.
 
Добрый день!
Не могу сообразить как работать с многомерным массивом, есть исходная таблица, она обработана через словарь. где номер строки это ключ, значение = двумерный массив.
На выходе надо получить для каждого уникального значения в первом столбце(1,1) (желтым в целевой таблице), массив без дубликатов из строк, в которых первый столбец ключевой.
В целевой таблице, это то, что должно получиться в итоговом массиве для каждой записи в словаре.
Нужно именно в словаре, не в коллекции. Не получается именно создать многомерный массив, и заполнить его корректно.
Плюс обработать записи в массиве, чтобы не было совпадений.
Цель, получить в словаре ключ из первого столбца, и массив включая сам первый столбец, с уникальными для первого столбца записями.
Возможно я не в ту сторону рою, и многомерный массив тут не нужен.
 
Изменено: Mergens - 10.02.2019 03:54:02
Страницы: 1
Наверх