Excel中是否有自定义函数可以返回每行下方最接近的值以匹配某些参数?

问题描述 投票:0回答:1

这基本上是一个格式化问题,我想在每行数据中获取某个值,而不是这些值上方的每一行对应于该值。

我很难用措辞来表达我的问题以获得答案,但似乎偏移或匹配函数应该在某个地方完成这项工作。我附上了一张带有我的数据样本的图片。本质上,我希望 A 列中带有 RTR 的所有数据行沿每行返回 COBX,并且我希望 A 列中带有 GPA 的每行数据返回 HTXPOS。这是否可以本质上查找并返回一个长度或文本包含不同元素的值,并将该不同的值返回到其上方的每一行?

A 列中我的 Excel 数据的小样本

Small sample of my excel data in column a

我尝试了几种不同的方法来避免手动输入,包括长度代码和一些查找,但它们都以循环引用或手动输入的必要性结束。

编辑:这就是我希望的代码对于我正在处理的 500k 多行数据的样子。另外值得注意的是,每个唯一代码之间的行数(例如示例中的“COBX”和“HTXPOS”)是不同的。还有 500,000 行数据,因此需要避免任何手动输入,例如 if(left(A2,3)="RTR") 等。如果有什么价值的话,对于所有 500,000 行数据,RTR- 和 GPA- 中的第 4 个字符都是 -,并且绝不会是“COBX”或“HTXPOS”等唯一代码中的第 4 个字符。 所需的代码输出。这些不同值上方的所有行都在行中的某处显示不同的值。

编辑#2:@cybernetic.nomad 找到的最终解决方案。就像魅力一样:=IF(LEN(A2)<13,"",IF(LEN(A3)<13,A3,B3))

问题#2:如果连续的代码行具有连续的唯一值(例如“COBX”和“HTXPOS”),如示例#3 所示。有没有办法返回所有这些唯一值而不是仅返回前 1 个值? 连续行的唯一值,我们希望将两个或所有连续行返回到同一单元格,并在不同列之间或不同列中使用分隔符,直到出现另一个 13 个字符的单元格

excel
1个回答
0
投票

有多种方法可以做到这一点,具体取决于您想要的输出,您尚未展示。

在下面的公式中,我没有测试长度,而是根据您提供的数据集测试了连字符的存在。

无需硬编码任何前缀或后缀。

假设您的标签没有版本限制,请尝试:

A1:A13 = your data

B1: =LET(
    data, A1:A13,
    suffix, FILTER(data, NOT(ISNUMBER(FIND("-", data)))),
    suffixpos, XMATCH(suffix, data),
    MAKEARRAY(
        ROWS(data),
        1,
        LAMBDA(r, c,
            IF(
                OR(r = suffixpos),
                "",
                INDEX(data, XLOOKUP(r, suffixpos, suffixpos, , 1))
            )
        )
    )
)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.