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

Excel 变量中的公式

Excel 变量中的公式,excel,vba,excel-formula,Excel,Vba,Excel Formula,我有以下问题,是否可以在VBA Excel中的变量中插入公式以在之后使用此变量? 例如: MinO = "=MIN(" & .Cells(3, 7 + NumSheet).Address(False, False) & ":" & .Cells(3, 9 + NumSheet).Address(False, False) & ")" For N = 1 To NumSheet + 1 .Cell

我有以下问题,是否可以在VBA Excel中的变量中插入公式以在之后使用此变量? 例如:

MinO = "=MIN(" & .Cells(3, 7 + NumSheet).Address(False, False) & ":" & .Cells(3, 9 + NumSheet).Address(False, False) & ")"

For N = 1 To NumSheet + 1
    .Cells(4, 5 + N).Value = 80 * ((.Cells(3, 8 + NumSheet).Value - .Cells(3, 5 + N).Value) / (.Cells(3, 8 + NumSheet).Value - MinO))
    .Cells(4, 5 + N).Font.Bold = True
Next N
所以MinO是一个里面有公式的变量,我在
Range()中知道。公式
可以工作,但如何使用变量使其工作?
我知道也有
应用程序.WorksheetFunction.Min
,但我想看看它是否可以用另一种方式来做,因为WorksheetFunction有时会给我一些错误


非常感谢你的回答

您可以这样做,但因此需要该函数。(URL指该功能的官方文档)

因此,在您的情况下,您可以使用:(似乎不完全正确,所以我将在评论中加以说明)

如以下评论所述,以下方法似乎是正确的:

MinO = Evaluate("=MIN(" & .Cells(3, 7 + NumSheet).Address(False, False) & ":" & .Cells(3, 9 + NumSheet).Address(False, False) & ")")

我认为这行不通,因为它基本上只是一个文本字符串。我相信您会尝试研究为什么Application.worksheet函数会给出错误,或者如果您有一些工作表函数无法处理的特殊情况,您会创建自己的函数。

通常,当我使用excel中的公式时,我会将它们写入单元格(检查所有内容是否正常),然后写入VBA即时窗口(CTRL+G)我打字

它会显示你需要的公式。。。这是一个好的开始,然后您开始更改零件以反映所需的变量更改


请记住,此输出是字符串,在代码中需要以1x开头和结尾,当您要在公式中添加字符串时,您需要添加“”有时您还需要为字符串中的字符串添加“”和“”。:)

请看一下
Evaluate
方法。是的,我已经检查过了,但是我不知道如何使用
Cells()使其工作。
我找到了使用Evaluate()的方法,非常感谢!
求值(Min(…)
会做一些与
工作表函数.Min
不同的事情吗?不,我不这么认为。但是,OP可能会遇到他在使用
工作表函数.Min
时提到的相同问题-只是形式复杂得多。我明白了,但是如果我把
MinO=“=Min”(&.Cells(3,7+NumSheet)。地址(False,False)&“&.Cells(3,9+NumSheet).Address(False,False)&”)”
它在那里抛出了一个错误13。因此我也必须重写该行。您可能需要删除起始
“=
在公式字符串中。它不是单元格中的公式。我也会尝试,谢谢。我不知道为什么它会给我带来问题,因为当我使用Min函数时,它不计算范围的Min,它只取范围的一个值,而不取Min。该基本文本字符串可以由
Evaluate()处理
谢谢,但我终于找到了使用Evaluate()的方法,不过我会考虑您的选择:)
MinO = Evaluate("=MIN(" & .Cells(3, 7 + NumSheet).Address(False, False) & ":" & .Cells(3, 9 + NumSheet).Address(False, False) & ")")
 ? Activecell.Formula 
 ? Activecell.FormulaR1C1