Tag: 评估

如何避免Excel评估公式两次?

我刚开始学习Excel,在练习中,我经常发现自己在一个公式中复制了一个子expression式。 例如,如果为了输出一个合理的错误信息而在计算一些expression (比如一个vlookup )时要检查可能的错误,我会尝试类似if(iserror(expression);"error";expression) 。 这工作正常,但留给我是否这意味着Excel评估expression两次,这可能有计算成本的问题。 也许它不会(因为它会使用一些聪明的懒惰策略),但如果这样做,如何避免? 我必须写自己的函数(VBA?),还是有办法做到这一点(例如绑定expression的variables)?

评估调查的最佳方式

我需要评估与展览的参观者进行的调查。 问题是关于参观者的人口统计细节,以及他们如何体验展览(关于质量的问题,他们是否觉得有趣,…) 现在我不需要把每个问题都拿出来,从数据中制作一张条形图或饼图,这个想法就是过滤数据,得到如下结果:25岁以下的人是如何find展览的? 外国人对这个地区的人满意吗? 我的问题:是否有更好的解决scheme/工具,而不是将数据存储在Excel工作表中并使用它构build交互式图表?

用variables评估匹配function

我想通过VBA使用这个 – =MATCH("PlanA",A:A,0) 与EVALUATE 。 Sub Test() Dim SectionStartRow As Integer Dim planname As String planname = "PlanA" SectionStartRow = [MATCH(planname,A:A,0)] 'Error 2029 /// Type mismatch '13 End Sub 我已经试过了: SectionStartRow = Evaluate("MATCH(planname,A:A,0)") 'Error 2029 /// Type mismatch '13 和 SectionStartRow = Evaluate("MATCH(" & planname & ",A:A,0)") 但似乎没有任何工作。 请注意, plannamevariables被一组很长的函数拒绝。

Excel VBA从另一个工作表评估公式

解决:问题是在我的公式中,我使用INDIRECT()引用一个单元格,当sheet不同时它不工作。 见答案。 我在一张纸上有一个公式,我想要做的是使用另一张纸上的公式,使用eval来评估公式。 但是,结果并不是如此。 这似乎是公式使用表A中的值而不是调用者表B. 表A中的公式(请参阅: 屏幕截图A ) =IF(ISERROR(INDEX('1516Activity'!$B:$B,MATCH(INDIRECT(ADDRESS(ROW(),COLUMN(D:D) )),'1516Activity'!$C:$C,0))),"-",IF(LEFT(INDEX('1516Activity'!$F:$F,MATCH(INDIRECT(ADDRESS(ROW(),COLUMN(D:D) )),'1516Activity'!$C:$C,0)))="0","N","Y")) 表B中的用法(请参阅: 屏幕截图表B ) =Eval('CODE-VARS'!$G$5) VBA: Function Eval(Ref As String) Application.Volatile Eval = Application.ThisCell.Parent.Evaluate(Ref) End Function

如何将dynamic创build的向量返回到工作区?

你好我试图写一个函数读取某种types的电子表格,并从它的数据dynamic地创build向量,然后返回到工作区。 我的xlcs是由行构成的,在第一行中有一个string应该成为向量的名称,其余的行包含组成向量的数字。 这是我的代码: function [ B ] = read_excel(filename) %read_excel a function to read time series data from spreadsheet % I get the contents of the first cell to know what to name the vector [nr, name]=xlsread(filename, 'sheet1','A2:A2'); % Transform it to a string name_str = char(name); % Create a filename from it varname=genvarname(name_str); % […]

在消息框中的范围..?

还有一个问题 – >我想在一个消息框中显示范围内容,我该怎么做? 假设有新的投资组合:1)美国广播公司,2)XYZ,3)在一个范围内的GHI ….当我使用下面的代码我没有得到。 的组合作为3,但我真的想要他们的名字 MsgBox“New Portfolios found:”&vbNewLine&Sheets(“Macro”)。Range(“T2:T25”)。Row

EXCEL VBA评估和replace

我需要使评估工作replacefunction。 代码应该是什么都不代替“-0700”。 下面的代码与列C中的数据一起提供: Set sh = ThisWorkbook.Sheets(1) Set rangc = sh.Range("c2:c10") For Each area In rangc.Areas area.Value = Evaluate("IF(ROW(" & area.Address & ")," & Replace(area.Address, " -0700", "") & ")") Next area – 这是工作表中的数据: ColumnC(original data) -0700 sdfg -0700 how -0700 saf 2016-10-16 10:13:41 -0700 ColumnC(After code is run) -700 sdfg -0700 how -0700 saf […]

VBA – 如何获得一个公式的结果? (.Value总是返回0)

我想获得一个单元格中包含的公式的结果,但我总是得到0返回,而不是真正的结果。 我有以下几点: Set c = .Cells (5,5) MsgBox (c.Formula) ' this return the following: = ASIN (W22-V22/$D$7)*180/PI() MsgBox (c.Value) ' this returns 0 MsgBox (c.Value2) ' this returns 0 as well 即使我尝试使用评估: evaluation = Application.Evaluate (c.Formula) MsgBox (c.Value) ' it still returns 0

评估命名范围上的函数,通过EVALUATE自己定义

在Excel 2010中。 给定一个命名范围的名称,我试图评估这个命名范围的公式,当它本身已经通过评估定义。 举个例子可能会更好: 使用这个vba函数: Function eval(str As String) As Variant eval = ActiveSheet.Evaluate(str) End Function 并定义命名范围_xyz(公式选项卡>名称pipe理器,或Alt,I,N,D)(下划线在这里以避免与单元名称冲突): 名称:_xyz 范围:Sheet1 指的是: =ROW(Sheet1!$A$1:$A$10) 如果使用公式= _xyz (然后按Ctrl-Shift-Enter)在Sheet1(作为垂直的1列行)中的某个位置创build一个数组公式,则可以得到值1,2,3 …… 10柱。 然后公式如=AVERAGE(_xyz)或=MAX(_xyz)工作(相应的结果为5.5和10)。 因此,给定名称的范围(这里是“_xyz”)和适当的函数(平均或最大): =eval("AVERAGE(_xyz)")返回5.5和=eval("MAX(_xyz)")返回10.到目前为止这么好。 现在我定义一个新的命名范围_xyz2为: 名称:_xyz2 范围:Sheet1 指的是: =EVALUATE("_xyz*_xyz") 如果用公式= _xyz2 (然后按Ctrl-Shift-Enter)在Sheet1的某个位置(作为垂直的1列的行)创build一个数组公式,则可以得到值= _xyz2 … 100列(即_xyz的值的平方)。 公式如=AVERAGE(_xyz2)或=MAX(_xyz2)都可以正常工作(相应的结果为38.5和100), 但是 eval函数不再有效:公式如=eval("AVERAGE(_xyz2)")和=eval("MAX(_xyz)")现在返回#VALUE !. 我已经尝试了其他types的eval函数。 例如: Function eval2(str As String) As Variant eval2 = Application.WorksheetFunction.Average(ActiveSheet.Evaluate(str)) […]

Excel VBA – 评估和索引函数返回#VALUE! 错误

所以我有一个macros的文件,其中有三列。 macros检测我的三个柱面文件的另一个工作簿中的特定列和行。 请参阅下面的图像的工作簿1。 然后,应查看工作簿2的行和列(请参见下文),并find与工作簿1匹配的列A和B的位置,并将C列的相应值粘贴到工作簿2(值为1)中。 不过,我一直在获得#VALUE! 错误,我不知道为什么发生。 仅供参考 – 列数继续为51,但不适合图像 下面是这个macros的代码: Sub Location() Dim i As Long, k As Long, ws1 As Worksheet, ws2 As Worksheet Dim lastrow As Long Set ws1 = Workbooks("Book3.xlsm").Worksheets("Sheet1") Set ws2 = Workbooks("Book4.xlsm").Worksheets("Sheet1") lastrow = ws1.Cells(ws1.Rows.Count, 1).End(xlUp).Row For i = 2 To ws2.Cells(ws2.Rows.Count, 1).End(xlUp).Row For k = 2 To ws2.Cells(1, ws2.Columns.Count).End(xlToLeft).Column […]