将此条件格式转换为c#

时间:2015-02-24 07:36:20

标签: c# excel conditional-formatting

我需要将这种确切的条件格式转换为c#。

enter image description here

我尝试使用以下代码。但由于C5不在范围内,因此不起作用。

Range extendedRange = activeWorksheet.get_Range("D5", oOpt).get_Resize(129, 3);
FormatConditions fcs = extendedRange.FormatConditions;
    FormatCondition fc = (FormatCondition)fcs.Add(XlFormatConditionType.xlCellValue, XlFormatConditionOperator.xlGreater, "=C5", oOpt, oOpt,
                                               oOpt, oOpt, oOpt);

                Interior interior = fc.Interior;
                interior.Color = ColorTranslator.ToOle(Color.Red);

我正在使用interop.excel 12.0.0.0。有人可以帮我解决这个问题吗?提前致谢

编辑: 我希望这是一个实际的参考。那么,excel条件格式中显示的内容正是我想要的。但是,当我尝试使用我的代码时,公式将更改为D5而不是C5。我认为这可能是因为我的范围内没有C5细胞。我正在使用visual studio 2008 SP1。

1 个答案:

答案 0 :(得分:1)

您的代码适合我。它给你一个错误信息吗?

可能的原因可能是您使用的是相对单元格引用而非绝对引用。

使用相对引用,您输入的公式将应用于选择的第一个单元格(通常是左上角的单元格)。然后,对于要应用的范围中的每个另外的单元,修改单元引用。因此,如果公式引用要突出显示的范围内第一个单元格左侧的单元格,则它将引用要突出显示的每个单元格左侧的单元格。

使用绝对引用时,您输入的公式将在您键入时完全应用。

例如

使用相对参考(单元格值> C5应用于D5:F133)

基本上,如果这个值大于我左边的单元格然后突出显示,那么你所拥有的就是你要突出显示的每个单元格(例如D5:F133)。

因此确定以下细胞:

  • 针对C5检查D5
  • 检查D6与C6
  • 检查D7与C7
  • 针对D5检查E5
  • 针对D6检查E6
  • 依旧......

绝对参考(单元格价值> $ C $ 5适用于D5:F133)

条件会说,对于要突出显示的每个单元格,如果此值大于单元格A1中的值,则突出显示。

因此确定以下细胞:

  • 针对C5检查D5
  • 针对C5检查D6
  • 检查D7对抗C5
  • 针对C5检查E5
  • 针对C5检查E6
  • 依旧......

要更改代码以使用绝对引用,您只需将美元符号($)添加到所需的单元格地址,即:

Range extendedRange = activeWorksheet.get_Range("D5", oOpt).get_Resize(129, 3);
FormatConditions fcs = extendedRange.FormatConditions;
FormatCondition fc = (FormatCondition)fcs.Add(XlFormatConditionType.xlCellValue,
    XlFormatConditionOperator.xlGreater,
    "=$C$5",
    oOpt,
    oOpt,
    oOpt,
    oOpt,
    oOpt);

Interior interior = fc.Interior;
interior.Color = ColorTranslator.ToOle(Color.Red);

注意添加到"=$C$5"

的$符号

如果这没有帮助,您可能需要更好地解释发生的事情。