Поиск строки и сумма значений - VBA
Формулировка задачи:
Доброго времени суток!
Самостоятельно не нашел решения для задачи...
Подскажите пожалуйста, как средствами VBA можно решить такую задачу (состоит из двух шагов):
Шаг 1: нужен макрос для кнопки при нажатии на которую происходит:
Есть таблица, строки которой заполнены в пределах одного столбца. Необходимо в этом столбце построчно найти строки в которых содержится строка"Q_Вт="
(после которой следует число (в строковом представлении)). Данное число будет находится последним в строке и необходимочтобы оно было взять полностью как есть
(если равно 0,90025 то так и берется).если же этого сделать нельзя то ,например, можно взять 8 знаков числа после "Q_Вт="... При нахождении этого числа оно записывается в столбец "I" Далее эти числа в пределах своих непрерывных диапазонов суммируются и результат суммы записываетсяпо диагонали
вправо-вверх (чтобы было напротив названия помещения) ивыделяется красным цветом и форматирование полужирное.
Шаг 2:
нужен также макрос для кнопки в результате нажатия на которую будут сворачиваться и разворачиваться: При "пробеге" по столбцу "J" - если текст в столбце не красный то строка полностью скрыввается (скрытие строк до последнего заполненного элемента в таблице. Файлы прилагаю Очень жду хоть какой то помощи...Решение задачи: «Поиск строки и сумма значений»
textual
Листинг программы
Sub Step1() Dim x As Range Set dc = CreateObject("scripting.dictionary") kz = Cells(Rows.Count, 2).End(xlUp).Row With CreateObject("vbscript.regexp") .Pattern = "\d+,\d+" For Each x In Range("B3:B" & kz) If x.Font.Bold Then zn = x: dc(zn) = Array(x.Row, 0) If .test(x) Then vt = CDbl(.Execute(x)(0)) x.Offset(, 7) = vt b = dc(zn) b(1) = b(1) + vt dc(zn) = b End If Next End With For Each k In dc.keys With Cells(dc(k)(0), "J") .Value = dc(k)(1) .Font.Bold = True .Font.Color = vbRed End With Next End Sub Sub step2() Dim x As Range kz = Cells(Rows.Count, 2).End(xlUp).Row For Each x In Range("B3:B" & kz) x.EntireRow.Hidden = Not x.Font.Bold Next End Sub
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д