我想使用单元格内的值,该单元格会不断从网页更新。单元格 C20 链接到另一个工作表ratedatasheet
,该工作表显示来自在线网站的页面和表格。
RATEDATASHEET.A79
我想在如下公式中使用 C20 内的值(链接为):
=IF(E24=0;A24*C20;A24*C24)
此公式放在 B24 单元格中,结果却显示#VALUE!
错误。我尝试从源单元格中删除字母,但没有帮助。
我究竟做错了什么?
更新
我尝试过下面提到的两种公式:
IF(E24=0;A24*(value(C20));A24*C24)
和
IF(E24=0;A24*(indirect(C20));A24*C24)
作为回报,我面临着ERR502
并且正如我从手册中看到的那样,它的意思是“函数参数具有无效值,例如根函数的负数。”
C20 单元格包含诸如“2,820250 TL”之类的值,该值由另一张名为“ratedatasheet”的工作表不断更新。公式放在单元格 B24 内,我想在其中查看结果。
更新2
好的,我尝试过的新公式是
IF(E24=0;A24*VALUE(LEFT(C20;FIND(",";C20)-1));A24*C24)
这有助于从 C20 中的值(2,826250 TL)中提取“2”我还需要努力实现其余的值(.826250 TL)欢迎您对此提出建议!
最后更新
有人能向我解释一下这个对我有用的公式的解释吗?!
IF(E24=0;A24*VALUE(LEFT(C20;FIND(" ";C20;1)-4))/1000;A24*C24)
答案1
通过您编辑的附加信息,很明显您的问题有两个方面:
- C20 的内容为文本格式,需要先转换为数字格式才能用于计算
- C20 的内容包含文本字符,需要先删除这些字符,然后才能成功转换为数字
如果内容始终采用“数字文本”格式,则可以搜索空格并删除空格及其后面的文本字符,然后再转换为数字。例如
=IF(E24=0;A24*VALUE(LEFT(C20;FIND(" ";C20)-1));A24*C24)
编辑
从 UPDATE2 来看,文本单元格包含一个以 a,
作为小数点的数字,而 OP 的语言环境使用 a.
作为小数点,使用 a,
作为千位分隔符。OP 发现,如果他们将小数点后的数字限制为 3,则该VALUE
函数会将 解释,
为千位分隔符,并且可以将该数字除以 1,000 以将小数点移动到正确的位置。
避免截断最后三位小数的解决方案是在运行该函数之前用SUBSTITUTE
替换:,
.
VALUE
=IF(E24=0;A24*VALUE(SUBSTITUTE(LEFT(C20;FIND(" ";C20)-1);",";"."));A24*C24)
答案2
综上所述,
在研究了函数的工作原理后,我得出了下面的公式,该公式更简短,并给出了所需的精确结果。希望它能对某些人有所帮助。
=IF(E24=0;A24*VALUE(SUBSTITUTE(LEFT(C20;8);",";"."));A24*C24)
无需使用“FIND”函数或除以 1000。
公式中的数字‘8’表示‘从左到右包含全部 8 个字符(即 2,826250)。因此我们以这种方式避免‘空格’等,因为它位于字符串 9 中。
SUBSTITUTE 公式将 ',' 替换为 '.',以使计算成为可能,因为计算机使用 '.' 进行计算。尽管进行了这种替换,但公式的结果仍包含“,”作为小数分隔符。所以,无论如何,我们都会得到我们想要的结果。(在我的国家,逗号用作小数分隔符)
使用此方法,您可以在公式中使用外部在线数据进行计算。
VALUE(SUBSTITUTE(LEFT(C20;8);",";"."))
- 这是上述公式的一部分,将原始数据转换为可用于计算的值
更新:单元格 C20 包含使用 Calc 的“链接到外部数据”功能从网页获取的原始数据 (2,826250 TL)。
感谢贡献者