基本上,我的公式完全符合我现在的需要。然而,手动输入的内容仍然比我想做的要多。这是最小的,但如果我能完全消除它那就更好了。
我目前的公式是=IFERROR(INDEX(RawData[value], MATCH(1, (RawData[plot_id]=$A2)*(RawData[class]=1)*(RawData[metric]=LEFT($B1,FIND("(",$B1)-1)), 0)),0)
。这可以在下面的测试组织选项卡图像中看到。
当我将每个公式移动到新列时,我仍然必须手动更改每个公式的类编号(每列正在搜索的类编号是该列标题中的括号编号:(1)、(2)、(5)) 。我尝试用 替换RawData[class]=1
,RawData[class]=MID(B1, SEARCH("(", B1)+1, SEARCH(")", B1) - SEARCH("(", B1) -1)
但它破坏了公式并且只会给我 0 的错误结果。
但是,如果我=MID(B1, SEARCH("(", B1)+1, SEARCH(")", B1) - SEARCH("(", B1) -1)
在单元格中单独使用相同的 MID ( ) 函数,我将得到我正在寻找的结果:列标题单元格中括号之间的数字(可以在单元格 B4 中看到)前面提到的屏幕截图。
我不知所措,因为它允许我在搜索 RawData[metric] 标准时成功使用 LEFT 函数。
知道这里发生了什么或者我如何让它发挥作用吗?
原始数据表(通用数据)
公制 | 班级 | 绘图 ID | 价值 |
---|---|---|---|
面积_mn | 1 | 1 | 0.720177968 |
面积_mn | 1 | 2 | 0.005311753 |
面积_mn | 2 | 1 | 0.011488774 |
面积_mn | 2 | 2 | 0.435016987 |
编辑 | 5 | 1 | 0.1856209 |
视觉参考屏幕截图
组织数据表(通用数据,显示所需结果)
绘图 ID | 面积_mn(1) | 面积_mn(2) | 编辑(5) |
---|---|---|---|
1 | 0.720177968 | 0.01148877 | 0.720177968 |
2 | 0.005311753 | 0.435016987 | 0 |
视觉参考屏幕截图
这似乎是该部分中数据类型不兼容的问题
RawData[class]=1
。大概
class
是RawData
一个数字(无法知道,因为您没有包含任何数据)。当您自己编写时1
,Excel 会理解它是一个数字并使用它进行比较。MID()
例如,当您使用公式从字符串中提取该数字时area_mn(1)
,您会得到一个字符串1
。数字1
不等于字符串1
,因此比较失败。如果将该
MID()
函数包装在INT()
公式中,字符串将转换为整数(数字),并且比较将再次进行。这是一个例子:
数据表
查找表
如果您在数据表中使用以下公式,您将得到
#N/A
:但是,如果您首先将查找到的值转换为整数,则它可以工作:
看起来您的表标题是 RawData 表中的 [metric] 和 [class] 值的组合。您可以通过使用单个分隔符(例如“.”)来使事情变得更容易。或“,”或“;” 而不是同时使用左括号和右括号,尤其是当您的 [class] 值仅为个位数时。这样你就可以使用
=VALUE(RIGHT(B$1,1))
or=INT(RIGHT(B$1,1))
或=--RIGHT(B$1,1)
来提取数字。例如:通过以这种方式设置标题格式,以下公式将在单元格 B2 中起作用:
请注意上面使用的绝对单元格引用 $A2(绝对列)和 B$1(绝对行)。在您最初的尝试中,您在标题行上错误地使用了 $B1(绝对列),这就是它无法正确向下和横向复制的原因。
更新
今天早上搞乱了一段时间后,我无法使用我得到的精确响应让公式正确运行——在表格的其余部分填充单元格时,我仍然不断收到错误的数据,但是你们所有人非常有帮助,我感谢您的时间和帮助。
对于最终的公式,我想出了
=IFERROR(INDEX(RawData[[value]:[value]], MATCH(1, (RawData[[plot_id]:[plot_id]]=$A2)*(RawData[[class]:[class]]=-MID(B$1, SEARCH("(", B$1), 3))*(RawData[[metric]:[metric]]=LEFT(B$1,FIND("(",B$1)-1)), 0)),0)
。@MGonet 我很欣赏你的评论,它有助于减少公式中拉动类数的部分。这件事已经足够长了。哈哈。
额外的解释:当我自动填充表格中的数据时,我意识到我的表格列正在移动。我没有意识到他们会这样做,我认为指定表列始终是绝对引用 - 今天我了解到不然。所以我更正了这些引用,使它们变得绝对。
之后,我基本上从这里获取了所有的建议和建议(例如,纠正我正在制作的绝对单元格引用的拼写错误的区域,使用更简洁的函数替代方案等),加上我自己的额外研究以及更多的尝试和错误,并能够得到一个完全符合我需要的公式。
说真的,非常感谢大家抽出宝贵的时间!