基于Excel中的数组计算

时间:2016-12-23 18:36:43

标签: excel excel-vba excel-formula vba

我有一个数据透视表,我可以根据月过滤器(更改表的数据)在不同月份循环。我试图根据价值变化进行计算。我正在记录工作日中使用许可证的次数。一个月中的工作日数根据月份而变化。我用

计算了每个月的工作日
=NETWORKDAYS(H34,EOMONTH(H34,0),J34:J45)

H34引用我的1/1/2016日期。 J34:J45引用我的假期日期以避免。

我正在尝试编写一个公式,上面写着“如果在月份列表中列出的月份(来自我的月份过滤器)”,则打印相应的工作日值。

=IF(G34:G46=H48, I34:I46)

它仅适用于1月份。其余值返回False。我把它计算为数组函数。它返回False。我想不出可以取代它的另一个功能。任何帮助,将不胜感激。

2016            
   Month    Date    Workdays    Holiday Dates   Holidays
  January   1/1/2016    19       1/1/2016   New Year's day
  February  2/1/2016    20       18-Jan     Holiday 2
  March     3/1/2016    22      2/15/2016   Valentines day
  April     4/1/2016    21     3/25/2016    St. Patrick's Day
   May      5/1/2016    21     5/30/2016    Memorial Day
  June      6/1/2016    22      7/4/2016    Independence Day
  July      7/1/2016    21      9/5/2016    Labor Day
  August    8/1/2016    23      10/10/2016  Holiday
September   9/1/2016    22      11/8/2016   Columbus Day
 October    10/1/2016   21      11/11/2016  Veteran's Day
 November   11/1/2016   21      11/24/2016  Thanksgiving
 December   12/1/2016   21      12/26/2016  Christmas
  All              235      

  Selected Month            
    March   FALSE       

2 个答案:

答案 0 :(得分:2)

VLOOKUP()功能将大大简化此过程。此特定功能非常适合基于键查找字段提取列表中的值。

在您的示例中,您希望根据输入月份轻松从假期日期列中提取值。

enter image description here

此函数中的输入参数函数需要注意以下几点:

  • 表数组中的第一列必须包含查找值,在本例中为月份列。
  • 如果可能需要锁定数组尺寸,请使用列字母和行号前面的 $ 符号。
  • 应为 range_lookup 选择FALSE,以便为查找值进行精确匹配。如果你选择假,你可能会得到虚假的假设。
  • 列表中的每一行对于查找值都应该是唯一的。让我们说1月被列出两次,返回的值将是第一次出现。

其他信息:

答案 1 :(得分:0)

您可以使用LOOKUP功能,如下所示:

=VLOOKUP(G48,G34:I45,3)

此公式在G列(第一个矩阵列)中查找“G48”值,并返回同一行中第I列(第三个矩阵列)的值。

阅读此官方办公室page了解更多详情。

请给我们您的反馈。