这基本上是一个格式化问题,我想在每行数据中获取某个值,而不是这些值上方的每一行对应于该值。
我很难用措辞来表达我的问题以获得答案,但似乎偏移或匹配函数应该在某个地方完成这项工作。我附上了一张带有我的数据样本的图片。本质上,我希望 A 列中带有 RTR 的所有数据行沿每行返回 COBX,并且我希望 A 列中带有 GPA 的每行数据返回 HTXPOS。这是否可以本质上查找并返回一个长度或文本包含不同元素的值,并将该不同的值返回到其上方的每一行?
A 列中我的 Excel 数据的小样本
我尝试了几种不同的方法来避免手动输入,包括长度代码和一些查找,但它们都以循环引用或手动输入的必要性结束。
编辑:这就是我希望的代码对于我正在处理的 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 个字符的单元格
有多种方法可以做到这一点,具体取决于您想要的输出,您尚未展示。
在下面的公式中,我没有测试长度,而是根据您提供的数据集测试了连字符的存在。
无需硬编码任何前缀或后缀。
假设您的标签没有版本限制,请尝试:
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))
)
)
)
)