Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 需要多个嵌套if(ISNUMBER)(查找…)_Excel_Vba - Fatal编程技术网

Excel 需要多个嵌套if(ISNUMBER)(查找…)

Excel 需要多个嵌套if(ISNUMBER)(查找…),excel,vba,Excel,Vba,有可能吗 Sub test() r = ActiveSheet.Range("v" & Rows.Count).End(xlUp).Row Range("$W2:$W" & r & " ").Formula= IF(ISNUMBER(FIND("7212",K2)),"laptop", IF(ISNUMBER(FIND("774",K2)

有可能吗

Sub test()

r = ActiveSheet.Range("v" & Rows.Count).End(xlUp).Row
Range("$W2:$W" & r & " ").Formula=
  IF(ISNUMBER(FIND("7212",K2)),"laptop",
     IF(ISNUMBER(FIND("774",K2)),"laptop",
        IF(ISNUMBER(FIND("7745",K2)),"laptop",
           IF(ISNUMBER(FIND("234",K2)),"desktop","NO")))
End Sub
我必须在if条件下应用这样的条件,但我无法实现这一点


请任何人对此提供帮助

您需要将公式用双引号括起来,但要做到这一点,您需要将公式中的双引号括起来,如下所示:

Range("$W2:$W" & r & " ").Formula = "IF(ISNUMBER(FIND(""7212"",K2)),""laptop"", IF(ISNUMBER(FIND(""774"",K2)),""laptop"", IF(ISNUMBER(FIND(""7745"",K2)),""laptop"", IF(ISNUMBER(FIND(""234"",K2)),""desktop"",""NO"")))"
(很抱歉格式错误,但VBA不允许多行字符串)

顺便说一句,我刚刚编辑了你的公式,让它工作,但我不理解你的逻辑:你的逻辑是:

If <condition1> 
then "laptop"
else if <condition2>
     then "laptop"
     else if <condition3>
          then "laptop"
          else "desktop"
          end if
     end if
end if
If
然后是“笔记本电脑”
否则如果
然后是“笔记本电脑”
否则如果
然后是“笔记本电脑”
else“桌面”
如果结束
如果结束
如果结束
通常,对于这种情况,使用以下逻辑:

if <condition1> OR <condition2> OR <condition3>
then "laptop"
else "desktop"
end if
如果或
然后是“笔记本电脑”
else“桌面”
如果结束

这减少了if循环的数量,使其更具可读性。

有时使用数字列表进行查找会更容易,例如更新数字…vlookup对我没有帮助,因为我发现只有特定的数字存在,如果序列号存在,则将其作为桌面和另一组serail numbexcel中基于笔记本电脑或台式机预定义的ER我必须填写它。您的第二个条件(“查找774”)是否会使第三个条件(“查找7745”)变得毫无意义?如果数字7745存在,则“查找774”无论如何都会找到它记录一个宏,然后在工作表中输入所需的公式,您就可以使用代码了。或者,您也可以使用
。find
来实现您想要的。将启动我必须找到40多个序列号,并根据给定excel she的引用将它们表示为笔记本电脑和台式机et所以我使用了多个if,如下所示范围($M$2:$M“&r&”)。公式=“=if(ISNUMBER(查找)(“12 RACKED 7212”,K2)),“pad laptop”,if(ISNUMBER(查找)(“14 5415 RUGGE”),K,但这种情况仅适用于20个序列号