Поиск строки и сумма значений - VBA

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток! Самостоятельно не нашел решения для задачи... Подскажите пожалуйста, как средствами VBA можно решить такую задачу (состоит из двух шагов):

Шаг 1: нужен макрос для кнопки при нажатии на которую происходит:

Есть таблица, строки которой заполнены в пределах одного столбца. Необходимо в этом столбце построчно найти строки в которых содержится строка

"Q_Вт="

(после которой следует число (в строковом представлении)). Данное число будет находится последним в строке и необходимо

чтобы оно было взять полностью как есть

(если равно 0,90025 то так и берется).если же этого сделать нельзя то ,например, можно взять 8 знаков числа после "Q_Вт="... При нахождении этого числа оно записывается в столбец "I" Далее эти числа в пределах своих непрерывных диапазонов суммируются и результат суммы записывается

по диагонали

вправо-вверх (чтобы было напротив названия помещения) и

выделяется красным цветом и форматирование полужирное.

Шаг 2:

нужен также макрос для кнопки в результате нажатия на которую будут сворачиваться и разворачиваться: При "пробеге" по столбцу "J" - если текст в столбце не красный то строка полностью скрыввается (скрытие строк до последнего заполненного элемента в таблице. Файлы прилагаю Очень жду хоть какой то помощи...

Решение задачи: «Поиск строки и сумма значений»

textual
Листинг программы
  1. Sub Step1()
  2.     Dim x As Range
  3.     Set dc = CreateObject("scripting.dictionary")
  4.     kz = Cells(Rows.Count, 2).End(xlUp).Row
  5.     With CreateObject("vbscript.regexp")
  6.         .Pattern = "\d+,\d+"
  7.         For Each x In Range("B3:B" & kz)
  8.             If x.Font.Bold Then zn = x: dc(zn) = Array(x.Row, 0)
  9.             If .test(x) Then
  10.                 vt = CDbl(.Execute(x)(0))
  11.                 x.Offset(, 7) = vt
  12.                 b = dc(zn)
  13.                 b(1) = b(1) + vt
  14.                 dc(zn) = b
  15.             End If
  16.         Next
  17.     End With
  18.     For Each k In dc.keys
  19.         With Cells(dc(k)(0), "J")
  20.             .Value = dc(k)(1)
  21.             .Font.Bold = True
  22.             .Font.Color = vbRed
  23.         End With
  24.     Next
  25. End Sub
  26. Sub step2()
  27.     Dim x As Range
  28.     kz = Cells(Rows.Count, 2).End(xlUp).Row
  29.     For Each x In Range("B3:B" & kz)
  30.         x.EntireRow.Hidden = Not x.Font.Bold
  31.     Next
  32. End Sub

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


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

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

14   голосов , оценка 3.929 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы