【问题标题】:Use table column as criteria in worksheet function在工作表函数中使用表列作为条件
【发布时间】:2014-04-05 22:03:16
【问题描述】:

我想在我的一个计算中使用averageifs,该计算引用其中一个工作表中名为Table1 的表的列之一。如果我将公式粘贴到单元格中,我可以做到这一点。但是我有很多单元格,所以我想避免粘贴。总之我想说:

Selection.Value = WorkSheetfunction.AverageIff(Table1["Col A"], . . . .

Col A 是包含该数据值的列

目前可行:

With Selection
        .FormatConditions.Add Type:=xlExpression, Formula1:=formula

在哪里

formula = "=AVERAGEIFS(Table1[" + name + "],Table1[CELLNAME],Template!RC1,Table1[Date],Template!R1C)"

但正如我所说,我想让代码更高效,避免粘贴公式。那么如何将表格列作为条件插入到工作表函数中。

谢谢

【问题讨论】:

  • 所以,问题是如何使用WorkSheetfunction.AverageIfsTable1["Col A"]
  • 没错。只想在函数中引用表列!
  • 试试WorkSheetfunction.AverageIfs(Range("Table1[Col A]"),Range("Table1[CELLNAME]"),...)。是你想要的吗?
  • 优秀。正是我想要的!

标签: vba excel


【解决方案1】:

那么如何将表格列作为条件插入到工作表函数中。

使用此代码:

Selection.Value = WorksheetFunction.AverageIfs(Range("Table1[Col A]"), _
                                     Range("Table1[CELLNAME]"), "<criteria1>", _
                                     Range("Table1[Date]"), "<criteria2>")

UPD:

我想用公式填充空白单元格
我不希望公式出现在单元格中

在这种情况下,我建议您采用以下解决方案:

With Selection
    .FormulaR1C1 = "=AVERAGEIFS(Table1[Col A],Table1[CELLNAME],Template!RC1,Table1[Date],Template!R1C)"
    .Value = .Value
End With

它使用公式计算值,然后.Value = .Value 部分用他们的结果重写公式


同时查看此链接:how to avoid using Select/Active statements

【讨论】:

  • 另外,如果我可能会问,我怎样才能使标准从一个单元格移动到另一个单元格。例如,如果您记得 formula = "=AVERAGEIFS(Table1[" + name + "],Table1[CELLNAME],Template!RC1,Table1[Date],Template!R1C)" 我使用 RC1 作为标准,这意味着标准仅在行更改时才会更改?
  • 为了避免很多模棱两可的词,看一下照片(i57.tinypic.com/10gl6iw.jpg)我想用公式填充空白单元格。此外,我使用选择而不是定义范围仅用于测试目的。
  • 你能解释一下为什么不使用公式吗?
  • 我不明白这个问题。但是,如果您的意思是为什么我不想使用formula = "=AVERAGEIFS(Table1[" + name + "],Table1[CELLNAME],Template!RC1,Table1[Date],Template!R1C)",那是因为我不希望公式出现在单元格中。为了避免这种情况,我通常必须再做一步。
  • 感谢您的建议。这就是我一直在使用的,也是我一直试图避免的。出于某种原因,我认为这种方法比使用 worksheetfunction 时要慢。
猜你喜欢
  • 1970-01-01
  • 2017-02-25
  • 1970-01-01
  • 2014-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多