Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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_Function_Excel Formula - Fatal编程技术网

Excel 如何在带有变量输入的宏中编辑公式栏?

Excel 如何在带有变量输入的宏中编辑公式栏?,excel,vba,function,excel-formula,Excel,Vba,Function,Excel Formula,我目前正在处理一个宏,该宏需要从一个单元格复制一个索引函数,该单元格具有不同的信息并运行它。函数可以是“=indexsi(voy!A1:E4;1;0)”或“=indexsi(kto!A1:E4;1;0)”。但当我运行这个宏时,它只使用这两个宏中的任何一个。代码如下: Range("N1").Select Selection.Copy Range("A3").Select Selection.PasteSpecial Paste:=xlPasteValues, Op

我目前正在处理一个宏,该宏需要从一个单元格复制一个索引函数,该单元格具有不同的信息并运行它。函数可以是“=indexsi(voy!A1:E4;1;0)”或“=indexsi(kto!A1:E4;1;0)”。但当我运行这个宏时,它只使用这两个宏中的任何一个。代码如下:

    Range("N1").Select
    Selection.Copy
    Range("A3").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("A3:E3").Select
    Application.CutCopyMode = False
    Selection.FormulaArray = "=INDEX(kto!R[-2]C:R[1]C[4],1,0)"
    Selection.AutoFill Destination:=Range("A3:E14"), Type:=xlFillDefault
    Range("A3:E14").Select
End Sub
有没有办法解决这一问题:

Selection.FormulaArray=“=INDEX(kto!R[-2]C:R[1]C[4],1,0)”

编辑:

此宏点用于从另一个选项卡中提取车辆信息。索引函数根据用户从下拉菜单中选择的内容而变化,如下所示:“=IFS(A1=“voy””=INDEKSI(voy!A1:E4;1;0)”;A1=“kto”“=INDEKSI(kto!A1:E4;1;0)”。此“IFS”功能位于N1中。然后只需复制该单元格中的值,粘贴它们,选择5个单元格(A3-E3),单击公式栏并按CTRL+SHIFT+ENTER

我真的是这些方面的初学者,我不确定这样做是否可行。

您可以在vba中使用“如果”,如下所示:

If range("A1").value = "voy" then
Selection.FormulaArray = "=INDEX(voy!R[-2]C:R[1]C[4],1,0)"
else
Selection.FormulaArray = "=INDEX(kto!R[-2]C:R[1]C[4],1,0)"
end if

请阅读Foxfire、Burns和Burns&Peh评论中共享的链接,因为这将使您免于许多未来的问题

使用什么逻辑来确定应该使用哪个公式?现在,公式是静态的。如果需要从单元格复制公式,则应将单元格的
.formula
属性存储到
字符串中,然后将其写入单元格。欢迎使用。函数可以是“=INDEKSI(voy!A1:E4;1;0)”或“=INDEKSI(kto!A1:E4;1;0)”这两个函数的用途是什么?将该条件添加到您的代码中,它应该会起作用。现在,因为您得到了
Selection.FormulaArray=“=INDEX(kto!R[-2]C:R[1]C[4],1,0)”
它将始终是这样。此外,你可能会从阅读中受益——你可能会从阅读中受益。