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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы