我的数据是* _ *格式。 我想申请一个条件条款。 IF(A1 = * _ *,1,0)。 不起作用。 任何其他方式来做到这一点?

我的数据是_的forms(例如,Normal_abcd_2_80_1)。 我想申请一个条件条款。 IF(A1 = *_*_*_*_*,1,0) 。 不起作用。 任何其他方式来做到这一点?

你可以使用这个公式只有4 _ (而不多或less)由其他字符saperated:

 =IF(OR(ISERROR(FIND("_",A1,FIND("_",A1,FIND("_",A1,FIND("_",A1,1)+2)+2)+2)),NOT(ISERROR(FIND("_",A1,(FIND("_",A1,FIND("_",A1,FIND("_",A1,FIND("_",A1,1)+2)+2)+2)+2))))),0,1) 

查找格式化的字符串

如果你想要更多_ ,只需将它们添加到嵌套的FIND 。 但是,这不会在一行中处理多个_ ,如上面的单元格B5所示。

—————-

这是一个更乏味但更精确的方法。 我会用10个帮助栏来解释它,但是你也可以将它们全部打包成一个非常长的不可读的公式。 想法是将string分成10份,分别检查每个部分,然后查看所有检查是否正确。 所以这里是逐列:

  1. string是否以_开头? =NOT(LEFT($A2,1)="_")
  2. 第一个_在哪里? =FIND("_",$A2,1)
  3. 第一个_之后的下一个charachter是不是_NOT(MID($A2,D2+1,1)="_")
  4. 下一个_在哪里? FIND("_",$A2,D2+2)
  5. 下一个_之后的下一个charachter是不是_NOT(MID($A2,F2+1,1)="_")
  6. 下一个_在哪里? FIND("_",$A2,F2+2)
  7. 下一个_之后的下一个charachter是不是_NOT(MID($A2,H2+1,1)="_")
  8. 下一个_在哪里? FIND("_",$A2,H2+2)
  9. 下一个_之后的下一个charachter是不是_NOT(MID($A2,J2+1,1)="_")
  10. 还有其他_FIND("_",$A2,J2+2)

使用10个帮手列

然后你使用公式来testing所有的10个检查是否正确:

 =IF(NOT(ISERROR(AND(B2,C2,D2,E2,F2,G2,H2,I2,J2,ISERROR(K2)))),IF(AND(B2,C2,D2,E2,F2,G2,H2,I2,J2,ISERROR(K2)),1,0),0) 

现在,不是使用10列,而是使用写入的公式replace上面公式中的每个单元格引用。 我只是觉得这样会更清楚;)