给定下表,我想找到满足输入x值和给定容差的最高标头编号(由 中 的值J4表示)和伴随的行索引(由 中y的值表示J5):I2J2
正如您所看到的,表中有两个值满足输入值和容差:cellsF3和G3。然而,由于 中的标题行号G2(48) 高于F2(44),因此我们将作为最终解决方案,并打印出和G3中各自的数字。J4J5
我有一个解决方案,使用具有绝对值的中间矩阵并减去输入值。G然后在一个冗长的公式中使用 IF 和 SMALL向后遍历每一行B(非常有限且相当硬编码)。
我的愿望是使用现代 Excel 函数(LAMBDA、MAP 等)将该表转换为记录列表,然后简单地输出相应的值。本质上,将表转换为内存中的记录结构,而工作表中没有中间矩阵,如下所示(G2、G3和 的转换示例E7):
List<Record> vals = [
(36.22, 48, 1),
(69.31, 48, 2),
...
(169.99, 40, 6),
...
]
Run Code Online (Sandbox Code Playgroud)
使用此结构,可以更轻松地找到输入值和容差范围内的第一个值,并输出 x和 yvals.[field1]的相应列表条目。vals.[field2]vals.[field3]
使用现代 Excel 函数和内存计算可以优雅地完成此操作吗?
输入数据可以在这里找到: https: //pastebin.com/JRaA14e8
| 28 | 32 | 36 … |
|---|