【问题标题】:How to reference Value instead of formula in a formula using Excel?如何在使用 Excel 的公式中引用值而不是公式?
【发布时间】:2016-06-12 01:56:05
【问题描述】:

Microsoft Excel 2010/2013,我有五个数据列如下:

           | A  | B |  C   | D  |  E  |
          ------------------------------
  line 1   |  12|  7|  1.71|   5| 8.57|



C1: it's a formula ==> A1/B1, and it's formatted as two decimal places.

但是,E1(即C1*D1)的公式给出的是8.57而不是8.55,我发现Excel使用C1的公式而不是显示的值,这不是我的期望!

那么如何强制 Excel 使用单元格的值(显示)而不是其公式来计算另一个公式?

注意:我可以在E1中使用以下公式:

ROUND(C1,2)*D1

...但我想要一个直接获取显示值而不格式化C1 两次的解决方案。

【问题讨论】:

  • 你也可以在C1做=ROUND(A1/B1,2)
  • 其实我很喜欢 scott 对此的回答。将结果四舍五入到要显示的内容。
  • 如果您可以处理其他副作用,您还可以将工作簿设置为使用“显示精度”

标签: excel excel-formula


【解决方案1】:

这是对单元格内容的访问,因为您最初的问题是询问如何访问值而不是生成值的公式:

=CELL("contents",$C$1)

【讨论】:

  • 简单实用!请注意,地址不需要是绝对的,=CELL("contents", C1) 如果我们想在单元格区域或列中使用相同的公式就足够了。
  • OP 问了这个问题:那么我如何强制 Excel 使用单元格的值(显示)而不是其公式 - 它们的意思是当单元格被格式化时你看到的内容,而不是实际存在的内容。
  • Tom- 使用 TEXT(value, format_text) 函数:stackoverflow.com/questions/26163526/…
【解决方案2】:

我想这是问题的实际答案:-

=D1*VALUE(TEXT(C1,"#."&REPT(0,RIGHT(CELL("format",C1),1))))

即使用 CELL 函数找出数字被格式化的位数,然后用这个小数位数创建一个格式,并在 TEXT 函数中使用它来获取 C1 中的数字到它显示的位数。

您是否愿意这样做当然是另一回事。

CELL 的缺点是,如果您更改 C1 中数字的格式,则在您重新计算电子表格之前它不会更新。

VALUE 可以省略,因为乘法会将字符串“1.71”强制转换为数字:-

=D1*TEXT(C1,"#."&REPT(0,RIGHT(CELL("format",C1),1)))

【讨论】:

  • 您的解决方案完美运行,但它有点复杂,因为它可能由初学者用户使用,我更喜欢在斯科特提到的C1E1 中舍入。谢谢
  • 是的,我同意 Scott 的做法是明智的。
  • CELL("contents", address) 简单地给出单元格的内容值时,为什么要使用如此复杂的表达式?
  • 仅仅因为 cell("contents",address) (尽管得到了几个赞成票)给出了与 OP 要求完全相反的结果——能够以某种方式使用单元格的值 因为它在格式化时显示 而不是单元格的实际内容。我在这里有点像魔鬼的拥护者,因为尽管有可能,但这可能不是处理事情的好方法。
猜你喜欢
  • 1970-01-01
  • 2019-02-11
  • 2012-07-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-10-29
  • 2017-06-03
相关资源
最近更新 更多