小编Mor*_*aki的帖子

Excel:如何将表格转换为记录结构列表

给定下表,我想找到满足输入x值和给定容差的最高标头编号(由 中 的值J4表示)和伴随的行索引(由 中y的值表示J5):I2J2

正如您所看到的,表中有两个值满足输入值和容差:cellsF3G3。然而,由于 中的标题行号G2(48) 高于F2(44),因此我们将作为最终解决方案,并打印出和G3中各自的数字。J4J5

我有一个解决方案,使用具有绝对值的中间矩阵并减去输入值。G然后在一个冗长的公式中使用 IF 和 SMALL向后遍历每一行B(非常有限且相当硬编码)。

我的愿望是使用现代 Excel 函数(LAMBDA、MAP 等)将该表转换为记录列表,然后简单地输出相应的值。本质上,将表转换为内存中的记录结构,而工作表中没有中间矩阵,如下所示(G2G3和 的转换示例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 …

worksheet-function microsoft-excel

5
推荐指数
1
解决办法
1557
查看次数