Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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/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
Excel 使用宏插入公式_Excel_Vba - Fatal编程技术网

Excel 使用宏插入公式

Excel 使用宏插入公式,excel,vba,Excel,Vba,我试图使用宏插入IF公式,但语法似乎不正确。尝试插入引号使我感到困惑,尝试插入“我必须使用” 这是我需要插入的IF函数 =IF(P14&Q14&R14<>"","<>","") 然而,使用这个插入方法和语法,我得到了一个类型不匹配错误 .Cells(iRow, 3).Value = "=IF(P" + iRow + "&Q" + iRow + &q

我试图使用宏插入IF公式,但语法似乎不正确。尝试插入引号使我感到困惑,尝试插入“我必须使用”

这是我需要插入的IF函数

=IF(P14&Q14&R14<>"","<>","")
然而,使用这个插入方法和语法,我得到了一个类型不匹配错误

.Cells(iRow, 3).Value = "=IF(P" + iRow + "&Q" + iRow + "&R" + iRow + "<>"""""," + ""<>"",""""")"
.Cells(iRow,3).Value=“=IF(P“+iRow+”&Q“+iRow+”&R“+iRow+”、“+”、”)
有人能告诉我为什么收到类型不匹配错误吗?
谢谢你的帮助

首先,不要将
+
用于串联。使用
。在某些特定情况下,您可能会遇到问题

其次,最好使用
.Formula
而不是
.Value

公式字符串应为:

  .Cells(iRow, 3).Formula = "=IF(P" & iRow & "&Q" & iRow & "&R" & iRow & "<>""""," & """<>"","""")"
.Cells(iRow,3).Formula=“=IF(P”&iRow&“&Q”&iRow&“&R”&iRow&“,”和“,”)
五个
仅在字符串末尾有意义…四个是现有字符串的两倍,第五个用于字符串终止。

您可以使用:

.Cells(iRow, 3).Value = Replace("=IF(PX&QX&RX<>"""",""<>"","""")", "X", iRow)
.Cells(iRow,3).Value=Replace(“=IF(PX&QX&RX“”,”“,”“),“X”,iRow)

在这种情况下,当你说“你必须使用。。。“因为
.Value
同样适用于插入公式。不过,如果它更合适的话,我想你是对的=)+@JvdV:我不是说它不起作用!事实上,在这个特定的例子中,使用
+
进行连接也会起作用,因为它用于字符串和数字之间,但我只想强调一些培养他编程习惯的干净方法。。。我认为,当尝试调试时,知道您想要做什么是很好的。当然,它看起来也更合适。只是作为参考提过。@JvdV:但是,也许你是对的。我将“必须”改为“一切都好”…我使用宏将许多公式从模板粘贴到工作表。我在模板上有所有公式,前面没有“=”,因此vba&excel将它们视为文本。事实上,“=”被“xyxy”替换,所以一旦粘贴操作完成,我就用“=”查找/替换“xyxy”,并且所有工作都很好地为我工作。。。
  .Cells(iRow, 3).Formula = "=IF(P" & iRow & "&Q" & iRow & "&R" & iRow & "<>""""," & """<>"","""")"
.Cells(iRow, 3).Value = Replace("=IF(PX&QX&RX<>"""",""<>"","""")", "X", iRow)