使用Excel Formula ISNUMBER 和 SEARCH对数据进行分类

16 阅读2分钟

这个公式的需求是什么?

这个公式的需求是:

根据单元格 F2 内容的前缀和关键词,对字段进行分类。

具体分类规则如下(适用于 F2 开头为“HK”的情况):

条件返回值
包含 " OPT " 或 " MCS "HK MOD
同时包含 " MOD " 和 " ROS "HK
仅包含 " ROS "HK ROS
其他情况(但以 HK 开头)HK

对于 F2 开头为“CN”的情况:

条件返回值
包含 " IOS "CN IOS
包含 " MOD "CN MOD
包含 " ROS "CN ROS
其他情况CN

默认返回值(不是 HK 或 CN 开头):

  • 只返回内容本身(即 F2

公式含义解读

=IF(LEFT(F2,2)="HK",
    IF(OR(ISNUMBER(SEARCH(" OPT ",F2&" ")),ISNUMBER(SEARCH(" MCS ",F2&" "))), "HK MOD",
    IF(AND(ISNUMBER(SEARCH(" MOD ",F2)),ISNUMBER(SEARCH(" ROS ",F2))),"HK",
    IF(ISNUMBER(SEARCH(" ROS ",F2&" ")), "HK ROS", "HK")),
IF(LEFT(F2,2)="CN",
    IF(ISNUMBER(SEARCH(" IOS ",F2&" ")),"CN IOS",
    IF(ISNUMBER(SEARCH(" MOD ",F2&" ")),"CN MOD",
    IF(ISNUMBER(SEARCH(" ROS ",F2&" ")),"CN ROS","CN"))),
F2

 总体逻辑结构:

这个公式使用嵌套的 IF(),本质上是一个“优先判断逻辑”,优先处理前缀为“HK”的情况,否则处理“CN”,最后默认返回 F2

公式逻辑分层详解

1. 如果 F2 前两位是 "HK"

IF(LEFT(F2,2)="HK",
    IF(OR(ISNUMBER(SEARCH(" OPT ",F2&" ")),ISNUMBER(SEARCH(" MCS ",F2&" "))), "HK MOD",
    ...
)
  • LEFT(F2,2) : 获取 F2 单元格的前两个字符。
  • SEARCH(" OPT ", F2&" ") : 在 F2 内查找 " OPT "(注意前后有空格),如果存在返回位置(数字),否则返回 #VALUE!
  • ISNUMBER(...) : 判断是否返回数字(即查找是否成功)。
  • OR(...) : 如果 F2 字段包含 " OPT " 或 " MCS ",则返回 "HK MOD"

2. 如果“HK”前缀字段不是“HK MOD” :

进入下一个 IF 判断:

IF(AND(ISNUMBER(SEARCH(" MOD ",F2)), ISNUMBER(SEARCH(" ROS ",F2))) , "HK", ...)
  • 如果同时包含 " MOD " 和 " ROS ",返回 "HK"
  • 否则进入下一个条件判断:
IF(ISNUMBER(SEARCH(" ROS ",F2&" ")), "HK ROS", "HK")
  • 如果只包含 " ROS ",返回 "HK ROS"
  • 否则默认返回 "HK"(即 F2 内容不属于上面任何一种情况,但却以 "HK" 开头)。

3. 如果 F2 前两位是 "CN"

IF(LEFT(F2,2)="CN",
    IF(ISNUMBER(SEARCH(" IOS ",F2&" ")),"CN IOS",
    IF(ISNUMBER(SEARCH(" MOD ",F2&" ")),"CN MOD",
    IF(ISNUMBER(SEARCH(" ROS ",F2&" ")),"CN ROS","CN"))
  • 检查是否包含 " IOS "" MOD "" ROS ",分别返回对应的标签。
  • 如果都不包含,则返回 "CN"(即原字段值)。

4. 默认返回 F2

如果 F2 前两位既不是 “HK” 也不是 “CN”,则直接返回 F2

 这个公式在哪些场景下有用?

  • 自动化标签或分类字段:例如在人力资源系统中,根据员工的职位代码自动标记为“HK MOD”、“CN MOD”等。
  • 数据清洗:对某些格式不统一的字段进行标准化处理。
  • 权限或角色分类:区分不同区域或部门的字段内容。
  • 数据映射:根据自定义字段内容映射到特定的分类值。