如何为excel细胞的一半着色?

时间:2016-08-31 08:01:14

标签: c# excel ms-office office-interop

背景:我需要为红色或绿色的优质细胞着色。如果细胞更加零,我需要将细胞染成绿色(从细胞中间开始正确),如果细胞不为零,我需要将细胞染成红色(从细胞中间向左) )。

我使用“Microsoft.Office.Interop.Excel”库。

我该怎么做?

P.S。 Cell color changing In Excel using C#不是重复的,因为我只想为一个excel单元格的一半着色,而不是满。

2 个答案:

答案 0 :(得分:3)

这(a)可能是作弊(b)或许更好作为评论(但后来没有图像)和(c)可能在这里扩展[excel]标签的重要性,但可能有一些兴趣提到CF可以达到某种目的:

SO39243927 first example

使用以下公式规则格式化ColumnB(红色填充):

=$B1<0  

和ColumnC(绿色填充),公式规则为:

=$B1>0  

作弊部分是B:C的宽度减小并且格式化为中心选择。

非常模糊与Sparklines相似:

SO39243927 second example

在评论中(带有图像的链接)@BrakNicku指出可以应用数据条(图像相当证明可以用颜色填充一半的Excel单元格)。变量(也称为数据条)的长度与基础值成比例:

SO39243927 third example

答案 1 :(得分:1)

为了解决这个问题,我使用了给定的方案:

  1. 在VBA中创建宏(使用鼠标)。
  2. 将宏重写为一般形式。
  3. 将宏保存在C#应用程序中。
  4. 通过C#将宏保存在excel文件(xlsm)中。
  5. 从C#运行宏。
  6. 给定的宏:

    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#create macro at runtime in dotnet

    运行他