Формулы и макросы

Шпаргалка по Excel-формулам и VBA-макросам для работы с таблицами уязвимостей (CVSS).

Критичность по CVSS-баллу (одна строка в ячейке)

=ЕСЛИ(
    ЗНАЧЕН(ПОДСТАВИТЬ(B2;".";","))>=9; "Критический";
ЕСЛИ(
    ЗНАЧЕН(ПОДСТАВИТЬ(B2;".";","))>=7; "Высокий";
ЕСЛИ(
    ЗНАЧЕН(ПОДСТАВИТЬ(B2;".";","))>=4; "Средний";
ЕСЛИ(
    ЗНАЧЕН(ПОДСТАВИТЬ(B2;".";","))>0; "Низкий"; "None"
))))

Генератор — поменяй ячейку и пороги, формула ниже перестроится сама:


Критичность по CVSS-баллу (ячейка с переносом строки)

Берёт значение после первого переноса строки в ячейке, если он есть, иначе — всю ячейку:

=ЕСЛИ(
    ЕСЛИОШИБКА(НАЙТИ(СИМВОЛ(10);B2);0)>0;
    ЕСЛИ(
        ЗНАЧЕН(ПОДСТАВИТЬ(ПРАВСИМВ(B2;ДЛСТР(B2)-НАЙТИ(СИМВОЛ(10);B2));".";","))>=9; "Критический";
    ЕСЛИ(
        ЗНАЧЕН(ПОДСТАВИТЬ(ПРАВСИМВ(B2;ДЛСТР(B2)-НАЙТИ(СИМВОЛ(10);B2));".";","))>=7; "Высокий";
    ЕСЛИ(
        ЗНАЧЕН(ПОДСТАВИТЬ(ПРАВСИМВ(B2;ДЛСТР(B2)-НАЙТИ(СИМВОЛ(10);B2));".";","))>=4; "Средний";
    ЕСЛИ(
        ЗНАЧЕН(ПОДСТАВИТЬ(ПРАВСИМВ(B2;ДЛСТР(B2)-НАЙТИ(СИМВОЛ(10);B2));".";","))>0; "Низкий"; "None"
    ))));
    ЕСЛИ(
        ЗНАЧЕН(ПОДСТАВИТЬ(B2;".";","))>=9; "Критический";
    ЕСЛИ(
        ЗНАЧЕН(ПОДСТАВИТЬ(B2;".";","))>=7; "Высокий";
    ЕСЛИ(
        ЗНАЧЕН(ПОДСТАВИТЬ(B2;".";","))>=4; "Средний";
    ЕСЛИ(
        ЗНАЧЕН(ПОДСТАВИТЬ(B2;".";","))>0; "Низкий"; "None"
    ))))
)

VBA: автоподбор высоты строк

Без переменных — работает с текущим выделением, генератор тут не нужен.

Sub AutoFitSelectedRows()
    ' Автоподбор высоты для выделенного диапазона
    Selection.EntireRow.AutoFit
End Sub

VBA: раскраска ячеек по критичности

Sub ColorizeCVE()
    Dim cell As Range

    ' Проходим по всем выделенным ячейкам
    For Each cell In Selection
        Select Case cell.Value
            Case "Критический"
                cell.Interior.Color = RGB(255, 0, 0) ' Красный
                cell.Font.Color = RGB(255, 255, 255) ' Белый текст для контраста
            Case "Высокий"
                cell.Interior.Color = RGB(255, 192, 0) ' Оранжевый
                cell.Font.Color = RGB(0, 0, 0)
            Case "Средний"
                cell.Interior.Color = RGB(255, 255, 0) ' Желтый
                cell.Font.Color = RGB(0, 0, 0)
            Case "Низкий"
                cell.Interior.Color = RGB(146, 208, 80) ' Зеленый
                cell.Font.Color = RGB(0, 0, 0)
            Case Else
                ' Оставляем без изменений, если текст другой
        End Select
    Next cell
End Sub

Подсчёт по уровням критичности

=СЧЁТЕСЛИ(C:C; "Критический")
=СЧЁТЕСЛИ(C:C; "Высокий")
=СЧЁТЕСЛИ(C:C; "Средний")
=СЧЁТЕСЛИ(C:C; "Низкий")
=СЧЁТЕСЛИ(C:C; "None")





Regex для IPv4

Статический паттерн, переменных нет:

\b(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b

Поиск по подстроке (СЧЁТЕСЛИ с маской)

=СЧЁТЕСЛИ(A:A; "*" & B1 & "*")

Фильтрация по вхождению подстроки

Первая возвращает адреса подходящих ячеек, вторая — сами значения:

=ФИЛЬТР(АДРЕС(СТРОКА(A1:A1000); 1); ЕЧИСЛО(ПОИСК(B1; A1:A1000)); "Ничего не найдено")
=ФИЛЬТР(A1:A1000; ЕЧИСЛО(ПОИСК(B1; A1:A1000)); "Ничего не найдено")