Excel 如何在带有变量输入的宏中编辑公式栏?
我目前正在处理一个宏,该宏需要从一个单元格复制一个索引函数,该单元格具有不同的信息并运行它。函数可以是“=indexsi(voy!A1:E4;1;0)”或“=indexsi(kto!A1:E4;1;0)”。但当我运行这个宏时,它只使用这两个宏中的任何一个。代码如下: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
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)”
它将始终是这样。此外,你可能会从阅读中受益——你可能会从阅读中受益。