你好,
我找不到以下问题的解决方案。
我有 2 列,都包含文本。 我想创建一个新列来告诉我第 2 列中的文本是否可以在第 1 列中找到。
我怎样才能做到这一点 ? 我从 Excel 开始,但似乎太复杂了。
例子 :
Col1 是整个列表
Col2 是我想在 col1 中找到的文本。
Col3 会告诉我是否可以在 col1 的列表中找到同一行 col2 中的文本
| col1 | col2 | col3 |
| GCF055.TOP | FCN4222 | 未找到 |
| SCF015.DOWN | FCNV4222 | 成立 |
| SCFCNV422.TOP | FCNV4222FF | 未找到 |
| SCF866.TOP | GCF009 | 成立 |
| SCGCF009.DOWN | | |
| SCF866.UP | | |
| SCF015.UP | | |
谢谢你的帮助。
希望我的问题足够清楚。
这是解决此问题的一种方法,使用列公式。创建一个字符列,然后将其粘贴到该列的公式中。

x = "not found";
For( i = 1, i <= N Rows( Current Data Table() ), i++,
If( Contains( :col1[i], :col2[Row()] ),
x = "found";
Break();
)
);
x;
请注意,您的示例数据表第 2 行的条目不正确。在 co1 的任何行中都找不到 FCNV4222。第 3 行值包含 FCNV422 但不包含 FCNV4222
有很多方法可以做到这一点,解决方案将根据是否需要高性能而有所不同。 下面是一个示例,使用关联数组获取唯一值,连接项目以生成要比较的字符串,然后包含以查找匹配项。
Names Default To Here(1);
dt = New Table("Untitled",
Add Rows(7),
New Column("col1",
Character,
"Nominal",
Set Values({"GCF055.TOP", "SCF015.DOWN", "SCFCNV422.TOP", "SCF866.TOP", "SCGCF009.DOWN", "SCF866.UP", "SCF015.UP"})
),
New Column("col2", Character(16), "Nominal", Set Values({"FCN4222", "FCNV4222", "FCNV4222FF", "GCF009", "", "", ""})),
New Column("col3", Character(16), "Nominal", Set Values({"not found", "found", "not found", "found", "", "", ""}))
);
dt << New Column("Found", Character, Nominal, << Formula(
If(Row() == 1,
col_vals = Associative Array(:col1 << get values) << get keys; // to eliminate dublicates
search_str = Concat Items(col_vals, " "); // should use some character not found as separator
);
If(!IsMissing(:col2),
If(Contains(search_str, :col2),
"found",
"not found"
);
,
""
);
));