добавь в макрос условие, что если рядов с одинаковыми значениями в столбцах Интерес к компоненту Х и Влияние на компонент У больше 2, то выравнивание подписи данных будет сппрва от маркера ряда данных, с минимальными отступами от маркера ряда данных - высота и длина окна для текста чтобы подбиралась автоматически,но не длиннее 240 в длину и не больше 180 в высоту: Sub ИзменитьЦвет2() Dim ws As Worksheet Dim chartObj As ChartObject Dim chart As chart Dim series As series Dim targetColorZS As Long Dim targetColor11 As Long Dim chartFound As Boolean Dim iPoint As Long Dim dl As dataLabel ' Объявляем переменную для подписей данных
' Цвет для диаграммы "ZS"
targetColorZS = RGB(68, 114, 116)
' Цвет для диаграммы "Диаграмма11" (белый)
targetColor11 = RGB(255, 255, 255)

' ========== ОБРАБОТКА ДИАГРАММЫ "ZS" ==========
chartFound = False
For Each ws In ActiveWorkbook.Worksheets
    For Each chartObj In ws.ChartObjects
        If chartObj.Name = "ZS" Then
            Set chart = chartObj.chart
            chartFound = True
            Exit For
        End If
    Next chartObj
    If chartFound Then Exit For
Next ws

If chartFound Then
    On Error Resume Next

    For Each series In chart.SeriesCollection
        ' Задаём цвет заливки ряда
        series.Format.Fill.ForeColor.RGB = targetColorZS
        ' Задаём цвет маркеров
        series.MarkerBackgroundColor = targetColorZS
        series.MarkerForegroundColor = targetColorZS

        ' Включаем подписи данных, если их нет
        If Not series.HasDataLabels Then
            series.HasDataLabels = True
        End If
        
        ' Настройка каждого маркера (точки ряда)
        For iPoint = 1 To series.Points.count
            With series.Points(iPoint).Format.Fill
                .Visible = msoTrue
                .ForeColor.RGB = targetColorZS
                .Solid
            End With
            With series.Points(iPoint).Format.Line
                .Visible = msoTrue
                .ForeColor.RGB = targetColorZS
                .Weight = 1.5
            End With
        Next iPoint

        ' Настройка подписей данных
        With series.DataLabels
            .position = xlLabelPositionBelow
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlTop
            ' Отображать только имя ряда
            .ShowSeriesName = True
            .ShowValue = False
            .ShowCategoryName = False
            .ShowPercentage = False
        End With

        With series.DataLabels.Font
            .Size = 27
            .Color = RGB(0, 0, 0)
        End With

        ' Исправленный блок: Устанавливаем свойства для КАЖДОЙ подписи данных
        For Each dl In series.DataLabels
            dl.Width = 250
            dl.Height = 180
            ' Устанавливаем вертикальное выравнивание текста
            dl.Format.TextFrame2.VerticalAnchor = msoAnchorTop
        Next dl
    Next series

    ' Настройка легенды (если она имеется)
    If chart.HasLegend Then
        With chart.legend.Font
            .Size = 27
           .Color = RGB(0, 0, 0)
        End With
    End If

    On Error GoTo 0
End If

' ========== ОБРАБОТКА ДИАГРАММЫ "11" ==========
chartFound = False
For Each ws In ActiveWorkbook.Worksheets
    For Each chartObj In ws.ChartObjects
        If chartObj.Name = "11" Then
            Set chart = chartObj.chart
            chartFound = True
            Exit For
        End If
    Next chartObj
    If chartFound Then Exit For
Next ws

If chartFound Then
    On Error Resume Next

    For Each series In chart.SeriesCollection
        ' Задаём цвет заливки ряда
        series.Format.Fill.ForeColor.RGB = targetColor11
        ' Задаём цвет маркеров
        series.MarkerBackgroundColor = targetColor11
        series.MarkerForegroundColor = targetColor11

        ' Включаем подписи данных (уже включено по условиям задания)
        series.HasDataLabels = False

        ' Настройка каждого маркера (точки ряда)
        For iPoint = 1 To series.Points.count
            With series.Points(iPoint).Format.Fill
                .Visible = msoTrue
                .ForeColor.RGB = targetColor11
                .Transparency = 0
                .Solid
            End With
            With series.Points(iPoint).Format.Line
                .Visible = msoTrue
                .ForeColor.RGB = RGB(68, 114, 116)
                .Weight = 1.5
                .Transparency = 0
            End With
        Next iPoint

        ' Настройка подписей данных
        With series.DataLabels
            .position = xlLabelPositionBelow
            .HorizontalAlignment = xlCenter
            .VerticalAlignment = xlTop
            ' Отображать только имя ряда
            .ShowSeriesName = True
            .ShowValue = False
            .ShowCategoryName = False
            .ShowPercentage = False
            .Transparency = 0.99
        End With

        With series.DataLabels.Font
            .Size = 27
            .Color = RGB(0, 0, 0)
        End With

        ' Исправленный блок: Устанавливаем свойства для КАЖДОЙ подписи данных
        Dim dl2 As dataLabel
        For Each dl2 In series.DataLabels
            dl2.Width = 250
            dl2.Height = 180
            ' Устанавливаем вертикальное выравнивание текста
            dl2.Format.TextFrame2.VerticalAnchor = msoAnchorTop
        Next dl2
    Next series

    On Error GoTo 0
End If
End Sub