简单的问题。我在 Excel 2007 中工作,当我在特定单元格中输入 1000g 时,我想将 1000 克转换为 1 千克。所以我决定创建下面的 if 语句。但是这有一个问题。它表明这是一个循环引用,并给我留下了 0 值。有没有简单的方法可以在 excel 中解决这个问题?
这是我的 if 语句。
=IF(C8 >= 1000,CONVERT(C8,"g","k"),C8)
说说大家的想法。
提前致谢。
答案1
- 如果此公式在 C8 中
即使你像我一样打开迭代,你也无法解决这个问题https://stackoverflow.com/questions/7647312/using-max-min-functions-to-remember-highs-lows-in-dynamic-data-in-excel/7647609#7647609
这是因为添加函数将消除 C8 中已经存在的值(在我链接的 SO 示例中,公式可以正常工作,因为它可以查看自身)
- 如果此公式不在 C8 中
那么它应该可以工作,并且你肯定在其他地方有循环引用。要查找并删除循环引用,请查看这里
答案2
为了向 brettdj 的答案添加一些额外的信息,如果您想在修改单元格时更改它,您最好使用活动流程例如Worksheet_Change()
。
例如,你可以这样做:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C8")) Is Nothing Then
Target.Value = Application.WorksheetFunction.Convert(Target.Value, "g", "k")
End If
End Sub
笔记:我在 Excel 2003 中没有该Convert
函数,我不知道它是 UDF 还是最近的函数。
答案3
你为什么不直接格式化单元格呢?
可以在 VBA 中访问数字格式属性 - 尝试以下操作:将 1000 放入单元格,然后从直接窗口 (alt+F11、ctrl+g) 键入
selection.numberformat="0,"" kg"""
这有帮助吗?