【问题标题】:Converting this conditional formatting to c#将此条件格式转换为 c#
【发布时间】:2015-02-24 07:36:20
【问题描述】:

我需要将此精确的条件格式转换为 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。

【问题讨论】:

    标签: c# excel conditional-formatting


    【解决方案1】:

    您的代码对我有用。它会给你一个错误信息吗?

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

    通过相对引用,您输入的公式将应用于所选内容的第一个单元格(通常是左上角的单元格)。然后,对于要应用的范围中的每个其他单元格,都会修改单元格引用。因此,如果公式引用要突出显示的区域中第一个单元格左侧的单元格,那么它将引用要突出显示的每个单元格左侧的单元格。

    使用绝对引用,您输入的公式将完全按照您键入的方式应用。

    举例

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

    基本上,如果此值大于我左边的单元格,那么您要突出显示的每个单元格(例如 D5:F133)的内容就是突出显示。

    由此确定以下单元格:

    • 对照 C5 检查 D5
    • 对照 C6 检查 D6
    • 对照 C7 检查 D7
    • 对照 D5 检查 E5
    • 对照 D6 检查 E6
    • 等等....

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

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

    由此确定以下单元格:

    • 对照 C5 检查 D5
    • 对照 C5 检查 D6
    • 对照 C5 检查 D7
    • 对照 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" 中添加的 $ 符号

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

    【讨论】:

    • 感谢您的回复。我希望这是相对参考。当我执行代码时,公式变为 D5 而不是 C5。我认为这是因为我正在申请一个没有 C5 的范围。我正在使用视觉工作室 2008 SP1。这可能是个问题吗?。
    • 我不确定它为什么会更改单元格公式。 Visual Studio 的版本应该与它没有任何关系。是否已经有太多的条件格式?一个范围最多可以有 3 个。如果超过该添加将失败。
    • 不,这是该工作表存在的唯一条件格式。你说,我的代码对你有用。你能告诉我你使用的是哪个版本的 excel interop 以及示例 excel。我可以对此进行交叉检查。谢谢
    猜你喜欢
    • 2021-09-25
    • 2021-11-01
    • 1970-01-01
    • 2013-11-10
    • 2020-12-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-14
    相关资源
    最近更新 更多