Tag: 评估

为什么Excel的“评估”方法是通用expression式评估器?

最近涉及到的一些问题涉及Application.Evaluate方法可以从Excel VBA调用。 旧的XLMmacros语言也暴露了一个EVALUATE()函数。 两者都可以是非常有用的。 有谁知道为什么被暴露的评估者可以处理一般expression式? 我自己的预感是,Excel需要让人们从string地址获取范围,并获得命名公式的值,并且只需打开expression式评估程序的入口是最简单的方法。 (VBA版本的帮助确实表示它将“将Microsoft Excel名称转换为对象或值”)。但是,当然,您不需要评估任意expression式的能力就可以做到这一点。 (也就是说,Excel可以提供一个Name.Evaluate方法或其他东西)。 Application.Evaluate 。评估似乎有点…未完成。 这是完整的行为没有很好的logging,并有一些怪癖和局限性(如查尔斯·威廉姆斯在这里描述: http : //www.decisionmodels.com/calcsecretsh.htm )与暴露。 我想答案可能只是“为什么不揭露它?”,但我有兴趣知道什么样的devise决定导致了这个function的forms。 如果没有,我会有兴趣听到其他的预感。

Excel:如何从单元格的输出中检索公式并对其进行评估?

例如: 我在A1:2 * x + 3 * x中有这个公式 这个公式在B1:= SUBSTITUTE($ A $ 1,“x”,E1),所以我在B1的输出是2 * 1 + 3 * 1 现在,我想要的是评估操作,使其显示5而不是2 * 1 + 3 * 1 我不介意,如果它在同一个单元格或不同的单元格上,但我该怎么做? 我尝试了=值(B1),但它给了我一个错误,我尝试了= INDIRECT(“B1”,0),但它也给我一个错误。 我不熟悉这些function,所以我不确定他们是我需要的。 有什么build议么? 如果可能的话,我希望不使用macros。 谢谢!

Mac Excel 2011 VBA评估

我正将一个Excel的VBA从PC移到Mac,并且一行有一个Evaluatefunction,例如: Public Function test() test = Evaluate("=2+2") End Function 但是,如果我尝试在mac上运行macros,该函数将返回#name。 在Mac上是否有相同的function进行评估?

评估大于x但小于x的VBA

我正在构build一个应用程序,它必须解释由用户设置的一组指令,这些指令在运行时才会知道。 我通过使用Evaluate函数来实现这一点,如下所示: Evaluate("5>4") 如预期的那样返回True。 我的问题是如何评估以下声明: 5大于4,但小于10 当然,我将用variables代替数字。 我意识到我可以将string拆分成两个部分的数组,并单独testing,但是必须有一种方法来传递一个参数来testing。

在Excel和VBA中,如何将单元格的值设置为公式结果而不是公式

我从一张表中获取数值,并使用Excel中的macros将数据放入另一张表中。 我目前有这个工作正常: sheet.range("B2:B35").Value = "=IF(SUMPRODUCT(–(Raw!$B$11:$B$322=$A2),–(Raw!$D$11:$D$322=All!$B$2),Raw!$H$11:$H$322)<>0,SUMPRODUCT(–(Raw!$B$11:$B$322=$A2),–(Raw!$D$11:$D$322=All!$B$2),Raw!$H$11:$H$322),""-"")" 显然,它将整个公式作为单元的价值。 我想要的只是把公式的结果放入单元格中。 我试着在“IF …”部分添加Evaluate(),但是IF没有正确评估(我只是以每个单元格中的“ – ”结尾)。 这是可能的,或者我必须有单独的代码循环,并将值更改为单元格的值?

Excel – 将string转换为公式

我有一个通过一系列连接string生成的公式。 举一个例子来解释一下: 打开一个新的Excel工作簿 A1 = 5 C1 = 5 & "+A1" [A1 is seen as text. C1 will contain "5+A1" ] 我想E1将C1的结果作为一个公式来计算,所以基本在这个例子中。 我试图使用INDIRECT(C1)但它没有工作。 更新:它必须使用自定义单元格名称。 所以如果例如我把名字“mycell”分配给A1,那么字段C1将包含“5 + mycell” 更新2:我的真实数据: 表单1,单元格Y20包含此: -0,0000014369849267*Drehzahl^2 + 0,0401449351560780*Drehzahl – 32,5068828005099000 工作表2,单元格J7包含此: = 'Sheet 1'!Y20 表单2,单元格J8包含这个: = eval(J7) 表格2,单元格C7更名为Drezahl 更新3:一个不适合我的公式: 它需要4个自定义的重命名单元格:“Drezahl”(value = 3550)Kondtemp(45)Saugtemp(-45)Schlitten(100)calc的结果必须是大约91,17 ((((-0,0000014369849267*Drehzahl^2 + 0,0401449351560780*Drehzahl – 32,5068828005099000) + ((8,95609756097562+(18,1/2050)*Drehzahl))*(1/25)*(45-Kondtemp))*((0,0000262088992942*Saugtemp^3 + 0,0050210402289170*Saugtemp^2 […]

当引用不是活动工作表的命名范围时,Excel VBA评估函数错误

编辑更好的例子 我正在尝试使用评估函数来评估命名范围的公式引用。 但是,使用评估函数时,如果您没有明确说明表单引用以及单元格引用,它将假定活动工作表作为单元格引用。 这会导致错误的结果 在我真正的项目中,我试图只评估命名范围公式的一部分,所以它更加棘手。 使用我想要做的基本示例,假设您在Sheet 1单元格A1中的名称为MyCell的公式如下: ="Don't evaluate this part"&"My Result Is " & A2 如果活动工作表是Sheet 2,并且运行下面的代码,它会给你错误的结果(这是一个快速而脏的例子来说明问题) Dim s As String s = Replace(Range("MyCell").Formula, """Don't evaluate this part""&", "") Debug.Print Evaluate(s) 而不是给我的单元格A2单元格中的值,它给了我单元格Sheet2单元格中的值。 任何想法呢? 这是我发现最接近,但它不是我确切的问题(尽pipe类似的标题),它不提供解决scheme: Excel VBA评估公式从另一个工作表

Excel VBA评估中的最后一行

我正在使用下面的代码: Sub Evaluation_Formula() Dim i As Long With Worksheets("Sheet1") i = .Evaluate("MIN(IF((LEFT($B$1:$B$89,5)*1)=C1,$B$1:$B$89,""""))") .Range("F3").Value2 = i End With End Sub 但是,公式仅限于B89,如何在公式列B中使用最后一行?

从VBA执行内置函数(Excel)

我需要有能力从VBA(MS Excel)执行任何types的内置函数(如“sum”或“len”)。 我有一个限制,就是我不能把单元格范围作为parameter passing给这些函数。 相反,我应该能够使用严格的价值观。 我想能够使用下面的expression式SUM(1,2),它应该返回3,而下面的版本SUM(“A1:A2”)将不适用于我。 我设法开发了一些函数,parsing我之前的input,并使其包含一个值列表(例如上面,它使得用户input'A1:A2'看起来像一个由两个值组成的数组数组)。 所以,任何人都可以给我一个使用内置函数的例子,接收一个值列表(不只是单元格的范围)? 我尝试了下面的代码,但由于一些未知的原因,我一直无法得到它的工作(我不断得到1004错误,说:不能运行macros'SUM'。macros可能不会在这个工作簿或所有macros可能被禁用。): Application.Run "SUM", 2, 2 一些有用的build议,这将有助于find解决这个问题将不胜感激。

VBA使用string参数评估函数

我有这个function工作(它返回文本DK001坐在ID范围内的行) Found = Application.Evaluate("=IF(ID=""DK001"",ROW(ID),""x"")") 我想饲料searchcriteria(如DK001)作为一个string,像 Found = Application.Evaluate("=IF(ID=SearchString,ROW(ID),""x"")") 我无法创build一个被接受为search条件的string。 我需要你的帮助! 我究竟做错了什么? 这个评估function是困扰着我…. 如果我现在想要发送一个值(而不是一个string)到函数呢? Found = Application.Evaluate("=IF(ID=1,ROW(ID),""x"")") 以上作品! 但是,如果我想这是一个variables Found = Application.Evaluate("=IF(ID=MyValue,ROW(ID),""x"")") 然后怎样呢?