Excel 要连接的逻辑函数

Excel Logical Function to Concatinate

我正在尝试根据单元格的值连接值,但是,这需要一个逻辑函数。我用 FIND、MATCH 和 SEARCH 都试过了,但没有输出预期的结果。

如何让它按预期工作?

假设预期结果必须是电子邮件地址生成,其格式为 名字@company.com,但您的值可能类似于“John Doe”、“Sales”、“John”等

这是我用过的功能,没有成功:

匹配

函数

=IF(COUNTBLANK([@Name]) = 0; IF(MATCH(" "; [@Name]; -1) = 1; CONCATENATE([@Name]; "@company.com"); CONCATENATE(LEFT( [@Name]; FIND( " "; [@Name] ) - 1 ); "@company.com")); "")

注意:已在-1、0 和1 之间测试匹配参数。-1 提供最佳结果。

结果

如果查找单元格包含“John Doe”,串联结果看起来像 John Doe@company.com,而“John”看起来像 约翰@company.com。这似乎不起作用。当 MATCH 的参数变为 0 或 1 时,结果为 #N/A on all.

查找

函数

=IF(COUNTBLANK([@Name]) = 0; IF(FIND(" "; [@Name]) = 1; CONCATENATE([@Name]; "@company.com"); CONCATENATE(LEFT( [@Name]; FIND( " "; [@Name] ) - 1 ); "@company.com")); "")

结果

如果查找单元格包含“John Doe”,串联结果看起来像 John@company.com,而“John”看起来像“#VALUE!”。这似乎没有效果。

搜索

函数

=IF(COUNTBLANK([@Name]) = 0; IF(SEARCH(" "; [@Name]) <= 1; CONCATENATE([@Name]; "@company.com"); CONCATENATE(LEFT( [@Name]; FIND( " "; [@Name] ) - 1 ); "@company.com")); "")

结果

如果查找单元格包含“John Doe”,串联结果看起来像 John@company.com,而“John”看起来像“#VALUE!”。这似乎没有效果。

可以通过使用 FIND 函数解决此问题,但更改逻辑测试以检查查找结果中的错误。

如果您查找不存在的值,FIND 函数将生成“#VALUE!”错误。只需将 FIND 函数嵌套到 ISERROR 函数中,而无需任何 =、< 或 >。这是 FIND 函数的逻辑测试。

=IF(COUNTBLANK([@Name]) = 0; IF(ISERROR(FIND(" "; [@Name])); CONCATENATE([@Name]; "@company.com"); CONCATENATE(LEFT( [@Name]; FIND( " "; [@Name] ) - 1 ); "@company.com")); "")