excel - 在 Excel 工作表数据验证中比较多个域
问题描述
我在 Excel 中有两个单元格。
单元格 1 包含域名(这可能是多个域名,以分号分隔)。在单元格 2 中,用户只能输入与单元格 1 中的域相关联的电子邮件地址。
在单元格 1 中可能有两个、三个等域。
如何使用数据验证来实现这一点?
解决方案
假设用户在 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)
0
1
要将所有内容组合在一起,我们将"aaa.com"
上面公式中的 替换为第一个公式,得到:If(Iserror(Find(Right(Trim(C2),Len(Trim(C2))-Find("@",Trim(C2)),C1)),0,1)
推荐阅读
- asp.net - 如何在 Web ASP.NET (.NET Framework) 中创建启动文件?
- php - 我正在尝试使用 php 创建一个搜索框。但是,当我搜索代码时它不起作用
- ssh - 如何使用 Python 而不是 CLI SSH 到 Google Compute Engine VM 实例?
- installation - 如何在 Inno Setup TInputQueryWizardPage (CreateInputQueryPage) 上减少两个输入框之间的行距
- java - 如何将 Pyomo 优化模型集成到 Java Web 应用程序中?
- r - 阿森纳汇总统计数据包括千位分隔符
- oracle - 在存储过程中返回多列 - ORACLE 11.2 Up
- rest - 向 Vuforia 的 Web 服务发出 POST 请求总是会导致“失败”,即使 PUT 请求总是使用相同的方法/主体工作
- r - R:如何从 XY 数据框中检测和绘制多边形边缘
- android - 视频无法在 WebView android 中呈现