将此条件格式转换为c#

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

在这里输入图像说明

我尝试使用下面的代码。 但是因为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。

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

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

使用相对引用时,您input的公式将应用于select的第一个单元格(通常是左上angular的单元格)。 然后,对该范围内的每个其他单元格应用,修改单元格引用。 因此,如果公式引用了要突出显示的范围中的第一个单元格左侧的单元格,则它将引用每个单元格左侧的要突出显示的单元格。

使用绝对引用时,您input的公式将按照您input的公式应用。

例如

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

基本上,如果这个值大于直接在我左边的单元格,然后高亮显示,那么对于每个想要突出显示的单元格(例如D5:F133),都有说明。

从而确定以下单元格:

  • 检查C5对C5的D5
  • 检查D6对C6
  • 检查D7对C7
  • 检查E5对D5
  • 检查E6与D6
  • 等等….

使用绝对引用(单元格值> $ C $ 5应用于D5:F133)

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

从而确定以下单元格:

  • 检查C5对C5的D5
  • 检查D6对C5
  • 检查C5对C5的D7
  • 检查E5对C5
  • 检查E6对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, "=$C$5", oOpt, oOpt, oOpt, oOpt, oOpt); Interior interior = fc.Interior; interior.Color = ColorTranslator.ToOle(Color.Red); 

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

如果这没有帮助,你可能需要更好地解释发生了什么事情。