计算每个字符串每月发生的时间

时间:2016-03-29 11:20:19

标签: excel vba date statistics countif

在我的公司,我们为每个报告和我们发布的文件预订序列号。这些是通过在一列(A)中输入您的名字然后在另一列(B,格式化的dd / mm / yyyy)中添加日期来预订的。我看起来如下:

(A) (B) Initials Date A. Mustermann 16.03.2016 B. Mustermann 17.03.2016

根据使用的类型,有很多种数字,每月需要完全分解哪种类型的序列号及其数量。我已将其移植到另一张纸上的表格中,并且只需要一种方法来读取纸张并打印相应的数字。像这样;

        (A)       (B)      (C)
              Serial 1  Serial 2    etc…
A. Mustermann           
B. Mustermann 

理想情况下,这应避免使用宏,因为许多人在不同的软件版本上使用此文件。我尝试使用CountIfs函数并使用Month函数绘制月份的数字并将其与set字段中的数字相匹配,这样您只需更改该字段即可更新统计数据。

我尝试使用:COUNTIFS('Sheet1'!A:A;A29;Month('Sheet1'!B4:B500);V2)

如果sheet1是初始的序列日志表,则A29是统计页面上的样本字符串,其确实出现在A:A范围内,V2是月份数字,即3月份的3。我想知道A.Mustermann在3月份推出了多少次串行类型1。这就是这项任务的目的。上述功能确实识别所有输入,即范围,甚至能够识别每个日期的月份,但由于某种原因,它无法将这两个数字匹配在一起并获得最终答案。

我感谢所有人的帮助。

谢谢

1 个答案:

答案 0 :(得分:2)

尝试以下sumproduct公式。它基本上是计算A列中某些内容出现的次数,而同时B列中有不同标准的匹配。

=SUMPRODUCT(--($A$2:$A$9=F2)*--(MONTH($B$2:$B$9)=G2))

作为标准检查的公式部分发生在 -

之后的括号内
 ($A$2:$A$9=F2)

我们使用 - 将得到的真假结果转换为数字1或0。

*完成AND语句的工作。因此,只要它们各自用*分隔,并且 - ()中的部分计算为true或false,就可以实际进行多次检查。最后一个问题是范围必须相等。

因此在上面的示例A2中:A9是包含名称的范围,B2:B9是包含日期的范围,如第一个示例数据中所示。 F2是我正在检查匹配的名称的单元格,而单元格G2是包含一个月份匹配的数字的单元格。

       (A)              (B)
(1)    Initials         Date
(2)    A. Mustermann    16/03/16
(3)    B. Mustermann    16/03/17
(4)    A. Mustermann    16/03/18
(5)    B. Mustermann    16/04/19
(6)    A. Mustermann    16/03/20
(7)    B. Mustermann    16/03/16
(8)    A. Mustermann    16/05/22
(9)    B. Mustermann    16/03/16

       (F)                 (G)
(1)    name                Month
(2)    A. Mustermann       3

我遇到的问题是基于您的问题,序列1如何适用于所有问题。现在,上面的等式只计算列a中名称与其名称旁边的匹配月份的次数。希望这会指出你正确的方向。