首页 > 解决方案 > 在 Excel 工作表数据验证中比较多个域

问题描述

我在 Excel 中有两个单元格。

单元格 1 包含域名(这可能是多个域名,以分号分隔)。在单元格 2 中,用户只能输入与单元格 1 中的域相关联的电子邮件地址。

在此处输入图像描述

在单元格 1 中可能有两个、三个等域。

如何使用数据验证来实现这一点?

标签: excelexcel-formula

解决方案


假设用户在 Cell2 中只能输入 1 个电子邮件地址:

第一步是将电子邮件提供商与电子邮件地址隔离开来。幸运的是,电子邮件地址配置整齐,使用 将@电子邮件名称与电子邮件提供商分开。我们想找到 的确切位置@,因为我们可以使用=Find("@",C2)Where C2 is your cell 2。

abc@aaa.com结果=Find("@",C2)将是 4,因为位于@字符串的第四个位置。

一旦我们知道 的位置,我们可以使用,@的组合提取域Right(),如下所示:函数用于删除任何前导或尾随空格。Len()Trim()Right(Trim(C2),Len(Trim(C2))-Find("@",Trim(C2))Trim()

abc@aaa.com在公式的同一示例中,计算结果如下:

  • -Find("@",Trim(C2)评估为-4
  • Len(Trim(C2))计算结果为 11,因为原始地址中有 11 个字符。
  • Len(Trim(C2))-Find("@",Trim(C2)因此评估11 - 4哪个是7
  • Right(Trim(C2),7)C2 从右到左取前 7 个字符,结果是aaa.com

要查看是否aaa.com存在于 C1 中,我们可以在语句中结合使用Find()错误处理程序:如果没有匹配项,则会返回,如果有匹配项。Iserror()If()If(Iserror(Find("aaa.com",C1)),0,1)01

要将所有内容组合在一起,我们将"aaa.com"上面公式中的 替换为第一个公式,得到:If(Iserror(Find(Right(Trim(C2),Len(Trim(C2))-Find("@",Trim(C2)),C1)),0,1)


推荐阅读