Поиск строки и сумма значений - 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