你好,
我找不到以下問題的解決方案。
我有兩列,都包含文字。 我想建立一個新列來告訴我是否可以在第 1 列中找到第 2 列中的文字。
我怎樣才能做到這一點 ? 我一開始使用 Excel,但似乎太複雜了。
例 :
Col1 是整個列表
Col2 是我想在 col1 中尋找的文字。
col3 會告訴我同一行的 col2 中的文字是否可以在 col1 的清單中找到
| 第 1 列 | 列2 | 第 3 列 |
| GCF055.TOP | FCN4222 | 未找到 |
| SCF015.下載 | FCNV4222 | 成立 |
| SCFCNV422.TOP | FCNV4222FF | 未找到 |
| SCF866.TOP | GCF009 | 成立 |
| SCGCF009.下載 | | |
| SCF866.UP | | |
| SCF015.UP | | |
感謝您的幫助。
希望我的問題夠清楚。
有很多方法可以做到這一點,解決方案會根據是否需要高效能而有所不同。 下面是一個範例,使用關聯數組來取得唯一值,連接項目以建立要比較的字串,然後使用 Contains 來尋找匹配項。
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"
);
,
""
);
));這是解決此問題的一種方法,即使用列公式。建立一個字元列,然後將其貼到該列的公式中。

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