Добрый день! Помогите составить формулы обрабатывающую данные из таблицы. Сложно сформулировать, т.к. несколько условий есть. В файле приложил пример, как криво "сделал", и как надо. Для примера сделал через ВПР, но так не нужно, в таблице не будет составных ключей.
Смысл в следующем, данные отсортированы по ключевым полям и дате(по убывающей), для удобства поиска. 1. В столбцах D:G по кварталам, необходимо вернуть первые записи по кварталам, кроме самой первой за год. 2. В столбцах H:I записи из п.1 по порядку с переносом строки с датами, т.е. те самые первые записи для кварталов кроме самой первой за год. 3. В столбцах J:L самая первая запись по году.
Вот как то так, в формулы извлекающие массив по условиям играть что-то не получается(((. Ни как не могу вернуть строку, значение или массив по нескольким ключевым полям.
Привет всем! Подскажите как при просмотре и печати, не выводить на просмотр и соответственно на печать значения из ячеек строки, при этом другие ячейки в строке должны выходить на печать, поэтому скрывать строку не рассматриваю. Но после печати надо все вернуть назад как было. Скрываемые ячейки засунул в именованный диапазон 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
Мне необходимо использовать переменную, в которую будет подставляться имя вызываемой функции. Какой синтаксис нужно применить VBA, чтобы вызвать функцию из переменной?
Sub Fill() Dim sFunct Dim res
sFunct = "Mult" 'имя функции в переменной
res = sFunct(3, 4)
End Sub
Function Mult(arg1, arg2) ' вызываемая функция Mult = arg1 * arg2 End Function
Добрый день, форумчане! Помогите пожалуйста, мне необходимо сделать список в соответствии с последовательностью значения в иерархии. Необходимый результат выводится через реализованный макрос CreateHier_V1 на лист2 и группируется по Outlinelevel. Но на больших объемах строк, выполнение очень долгое. поэтому нужно другое решение.
Делаю на Scripting.Dictionary по полям в таблице
Узел
Позиция узла у родителя
Родитель
Тип узла
NODEID
NODEPOSITION
PARENTID
NODETYPE
Примечание: NODEPOSITION - Игнорируем NODETYPE - определяет уровень вложенности
Условия 1. Ускорить выполнение макроса, путем избавления от рекурсии 2. Записи повторяются, поэтому повторы игнорировать. 3. Самый верхний узел родитель ROOT не нужен.
Примечание: Для типа узла "U" - записи идут вместе, а затем их листья. Наглядно видно если отфильтровать по узлу "U" (Например строки, 891 - 914, 981 - 1028)
Всем, добрый день! Хотел бы поинтересоваться, каким библиотеками Вы пользуетесь в VBA? Я в основном использую стандартные Scripting и RegExp. Для решения поставленных задач, возможно есть ещё интересные объекты, о которых не в курсе. Если не сложно, просветите, или скиньте ссылку на методичку)))
Добрый день! Прошу помочь, не получается получить данные через регулярное выражение. Файл пример приложил. в столбце А Наименование 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 писать обработку.
Часть 1(Решена). Нужно создать паттерн извлекающий все варианты заведения времени такие как , с(от) чч:мм по(до) чч:мм, или просто чч:мм, или с(от) чч:мм, или по(до) чч:мм В файле анализируемая строка А, результат B, паттерны(С), а в столбце D) желаемый результат по отдельности создать паттерн получается но сделать общий никак. Надеюсь понятно описал. UP темы Часть 2.(Поиск решения) Подскажите как исключить выборку формата чч:мм использую этот паттерн (([0-1]\d|2[0-3])[^\:][0-5]\d)|([0-1]\d|2[0-3][^\:]) на входе строка может быть как ЧЧ [любой разделитель кроме : ] ММ так и только ЧЧ (перевожу его в ЧЧ:00). Надо исключить если приходит правильно заведенное время
Добрый день, всем! Нужно скорректировать данные в табеле учета. Не могу никак решить проблему по замене в строке спецсимволов. Кроме того надо проставить запятые, удалить лишние пробелы, привести время к нормальному виду, понимаю, что все не учтешь, но есть некоторые закономерности. сейчас как раз борюсь за правила ввода, вот макрос как раз служит для корректировки и в случае нарушения правил ввод, предупреждения. Все пока не реализовал. Пример в файле, где ст -А то как ввели, стБ - как ожидается, ст С. обработка макросом.
Добрый день, друзья! Свалилась задача по агрегации данных из таблицы по ключевым полям. Необходимо просуммировать данные по классу, группе, коду в разрезе категорий и единиц измерения. Вывести результат в таблицу на листе Result, где класс, группа, и код в иерархическом представлении,а в соседний столбец текстовое описание результата агрегации. Для реализации цели использовал Scripting.Dictionary + класс. На данный момент результат достигнут, но что-то меня все равно смущает в "изящности кода". Хочу все засунуть в один класс, чтобы можно было использовать и в дальнейшем, возможно получиться снизить количество константой заданных указателей типа (1,1) т.к. в исходной таблице еще добавится столбец с годами, и его также придется вписывать в общую логику.
П.С. Спасибо за замечания, учту в будущем, писал в преддверии 8 марта, поэтому делалось все в спешке))))
Нужна помощь в реализации динамических изменений в кастомной ленте. Реализовывал через RibbonXMLEditor, на листе tech в области Логика работы собственно как должно работать. При изменении параметра dropDown id="list", нужно изменять, <editBox id="Cor" и Статус(пока еще не сделал, нужно просто выводить текст текущего статуса, не знаю что корректнее использовать)
Добрый день! Не могу сообразить как работать с многомерным массивом, есть исходная таблица, она обработана через словарь. где номер строки это ключ, значение = двумерный массив. На выходе надо получить для каждого уникального значения в первом столбце(1,1) (желтым в целевой таблице), массив без дубликатов из строк, в которых первый столбец ключевой. В целевой таблице, это то, что должно получиться в итоговом массиве для каждой записи в словаре. Нужно именно в словаре, не в коллекции. Не получается именно создать многомерный массив, и заполнить его корректно. Плюс обработать записи в массиве, чтобы не было совпадений. Цель, получить в словаре ключ из первого столбца, и массив включая сам первый столбец, с уникальными для первого столбца записями. Возможно я не в ту сторону рою, и многомерный массив тут не нужен.