0

我正在使用 If 语句将整数分配给来自另一个单元格的字符串。这似乎有效,但如果我引用这些列,我会得到一个 NaN 值。这是我下面的公式。我尝试在输出值周围添加 INT() ,但这似乎破坏了一切。我错过了什么吗?

IF(FIND('1',{Functional response}),-4,
IF(FIND('2',{Functional response}),-2,
IF(FIND('3',{Functional response}),0,
IF(FIND('4',{Functional response}),2,
IF(FIND('5',{Functional response}),4,"")))))
4

1 回答 1

1

假设功能响应只能将数字 1 到 5 存储为字符串,excel 中的一个简单选项是首先将字符串转换为数字,然后使用选择函数分配值。这是有效的,因为数字是连续的整数。假设单元格 K2 具有功能响应的值,您的公式可能是:

=CHOOSE(--K2,-4,-2,0,2,4)
=CHOOSE(K2+0,-4,-2,0,2,4)
=CHOOSE(K2-0,-4,-2,0,2,4)
=CHOOSE(K2*1,-4,-2,0,2,4)
=CHOOSE(K2/1,-4,-2,0,2,4)

基本上通过数学运算发送纯数字的字符串已经将其转换为数字。通过不改变其值的数学运算发送它,您可以将字符串作为一个数字。

CHOOSE就像一个顺序IF函数 提供一个整数作为第一个参数,然后它将从后续列表中返回与该数字匹配的值。如果您提供的数量大于选项的数量,您将收到错误消息。

或者,您可以使用以下公式对存储为 K2 中的字符串的数字进行直接数学转换:

=(K2-3)*2

作为我的最终选择,您可以构建一个表格并使用VLOOKUPor INDEX/MATCH

POC

注意:如果 B2:B6 存储为字符串而不是数字,则需要使用 K2 而不是 --K2。

于 2019-03-19T02:28:06.913 回答