Как покрасить половину клетки Excel?
Фон: мне нужно покрасить выделенную клетку в красный или зеленый цвет. Если ячейка больше нуля, мне нужно покрасить ячейку в зеленый цвет (справа от середины ячейки), если ячейка меньше нуля, мне нужно покрасить ячейку в красный цвет (слева от середины ячейки)).
Я использую библиотеку "Microsoft.Office.Interop.Excel".
Как мне это сделать?
PS Изменение цвета ячейки В Excel использование C# не является дубликатом, потому что я хочу закрасить только половину ячейки Excel, а не полную.
2 ответа
Это (a) может быть обманом (b) возможно лучше как Комментарий (но тогда не было бы изображения) и (c) возможно увеличение значения тега [excel] здесь, но может представлять некоторый интерес упомянуть, что CF можно достичь чего-то в этом роде:
Столбец B (красная заливка) форматируется с помощью правила формулы:
=$B1<0
и ColumnC (зеленая заливка) с правилом формулы:
=$B1>0
Обманная часть состоит в том, что B:C были уменьшены по ширине и отформатированы по центру.
Нечто похожее на Sparklines:
В комментарии (со ссылкой на изображение) @BrakNicku указал, что панели данных могут быть применены (и изображение скорее доказывает, что можно наполовину заполнить ячейку Excel цветом). Вариант, также столбцы данных, должен иметь длину, пропорциональную основному значению:
Чтобы решить эту проблему, я использовал данную схему:
- Создание макросов в VBA (с помощью мыши).
- Перепишите макросы в общий вид.
- Сохраните макросы в приложении C#.
- Сохраните макросы в файл Excel (xlsm) на C#.
- Запустите макросы из C#.
Данный макрос:
Sub CreateGistograms(r As String)
Range(r).Select
Selection.FormatConditions.AddDatabar
Selection.FormatConditions(Selection.FormatConditions.Count).ShowValue = True
Selection.FormatConditions(Selection.FormatConditions.Count).SetFirstPriority
With Selection.FormatConditions(1)
.MinPoint.Modify newtype:=xlConditionValueAutomaticMin
.MaxPoint.Modify newtype:=xlConditionValueAutomaticMax
End With
With Selection.FormatConditions(1).BarColor
.Color = 8700771
.TintAndShade = 0
End With
Selection.FormatConditions(1).BarFillType = xlDataBarFillGradient
Selection.FormatConditions(1).Direction = xlContext
Selection.FormatConditions(1).NegativeBarFormat.ColorType = xlDataBarColor
Selection.FormatConditions(1).BarBorder.Type = xlDataBarBorderSolid
Selection.FormatConditions(1).NegativeBarFormat.BorderColorType = _
xlDataBarColor
With Selection.FormatConditions(1).BarBorder.Color
.Color = 8700771
.TintAndShade = 0
End With
Selection.FormatConditions(1).AxisPosition = xlDataBarAxisAutomatic
With Selection.FormatConditions(1).AxisColor
.Color = 0
.TintAndShade = 0
End With
With Selection.FormatConditions(1).NegativeBarFormat.Color
.Color = 255
.TintAndShade = 0
End With
With Selection.FormatConditions(1).NegativeBarFormat.BorderColor
.Color = 255
.TintAndShade = 0
End With
End Sub
Как сохранить макрос и запустить его из C# создать макрос во время выполнения в dotnet