VBA Excel DataBar не с положительными и отрицательными числами, два цвета, мне нужно заполнить минимум негатива полностью - PullRequest
0 голосов
/ 24 ноября 2018

У меня есть столбец в Excel, содержащий положительные и отрицательные числа, и я делаю панель данных.Я хотел бы, скажем, у меня есть 55, 24, 0, -10 и -45 55, которые будут полностью заполнены максимальным диапазоном зеленой полосы и -45 то же самое, но красным.Это код VBA, который у меня есть:

Это визуализация, которой я хочу достичь:

DataBar

||||||||||||(зеленый) 12

||||||(зеленый) 6

||||||||||(красный) -10

||||||||||||||(красный) -14

и т. д. .....

Function UpdateAmountBars(rng As Range)
    Dim min As Double, max As Double
    Let min = Application.min(rng)
    Let max = Application.max(rng)

    rng.FormatConditions.AddDatabar
    rng.FormatConditions(rng.FormatConditions.Count).ShowValue = True
    rng.FormatConditions(rng.FormatConditions.Count).SetFirstPriority
    With rng.FormatConditions(1)
            .MinPoint.Modify newtype:=xlConditionValueAutomaticMin
            .MaxPoint.Modify newtype:=xlConditionValueAutomaticMax
    End With

    With rng.FormatConditions(1).BarColor
        .Color = RGB(100, 255, 100)
        .TintAndShade = 0
    End With

    rng.FormatConditions(1).BarFillType = xlDataBarFillGradient
    rng.FormatConditions(1).Direction = xlContext
    rng.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor
    rng.FormatConditions(1).BarBorder.Type = xlDataBarBorderNone

    With rng.FormatConditions(1).NegativeBarFormat.Color
        .Color = RGB(255, 100, 100)
        .TintAndShade = 0
    End With

End Function

, и это результат кода: VBA DataBAR положительный отрицательный

Обновление: у меня есть некоторый прогресс, теперь панели данных выглядят хорошо, но я не хочу делить ячейки

Function UpdateAmountBars(rng As Range)
    Dim min As Double, max As Double, databar As databar
    Let min = Application.min(rng)
    Let max = Application.max(rng)

    Set databar = rng.FormatConditions.AddDatabar
    databar.AxisPosition = xlDataBarAxisAutomatic
    rng.FormatConditions(rng.FormatConditions.Count).ShowValue = True
    rng.FormatConditions(rng.FormatConditions.Count).SetFirstPriority
    With rng.FormatConditions(1)
            .MinPoint.Modify newtype:=xlConditionValueAutomaticMin, newvalue:=min
            .MaxPoint.Modify newtype:=xlConditionValueAutomaticMax, newvalue:=max
    End With

    With rng.FormatConditions(1).BarColor
        .Color = RGB(100, 255, 100)
        .TintAndShade = 0
    End With

    rng.FormatConditions(1).BarFillType = xlDataBarFillGradient
    rng.FormatConditions(1).Direction = xlContext
    rng.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor
    rng.FormatConditions(1).BarBorder.Type = xlDataBarBorderNone

    With rng.FormatConditions(1).NegativeBarFormat.Color
        .Color = RGB(255, 100, 100)
        .TintAndShade = 0
    End With
End Function

это результат обновления: Данные VBAось стержняPosition

Ответы [ 2 ]

0 голосов
/ 14 декабря 2018

У меня та же проблема с панелями данных.Столбцы являются самыми большими для отрицательных значений, ближайших к 0, и столбцы становятся тем меньше, чем больше отрицательное число, что противоположно тому, чего я хочу достичь.

0 голосов
/ 24 ноября 2018

Добавьте и попробуйте следующий код.

.FormatConditions(1).AxisPosition = None

Используйте приведенный выше код где-то здесь, в вашем коде.

rng.FormatConditions(1).BarFillType = xlDataBarFillGradient
rng.FormatConditions(1).Direction = xlContext
rng.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor
rng.FormatConditions(1).BarBorder.Type = xlDataBarBorderNone
...