Excel:查找符合多个条件的记录数并使用自第一条记录创建以来的时间

Excel:查找符合多个条件的记录数并使用自第一条记录创建以来的时间

我需要一些公式方面的帮助。在我的“数据”表中,我有以下格式的数据:

   ABCDEFGHIJ
1 UID 记录类型 HCode 录取日期 名字 姓氏 审核日期 性别 STDate RDate
2 87962 STAsses STIV1 01/07/2012 Mark Jones 男 09/12/2012
3 89658 转学 GLSI2 2012 年 1 月 1 日 Alison Aitken 女 2013 年 7 月 8 日
4 87962 出院 STIV1 马克·琼斯 20/07/2012 男 08/07/2013
5 89654 STAsses STGE1 01/01/2012 Andrew Macbeth 男 08/07/2012  
6 89867 转移 KIND1 01/01/2012 George Deas Male 08/07/2013
7 87962 转移 STIV1 马克·琼斯 14/07/2012 男 04/03/2013
8 89654 转移 STGE1 01/01/2012 Andrew Macbeth 男 12/08/2012

在我的“报告”表上,我设置了以下表格:

      加拿大卑诗省
4 HospCode RecordType 0-2 周 2-4 周 4-6 周
5 STIV1 转移
6 出院
7              
8

在我的“报告”表上,我希望计算 D、E、F 等列时间范围内发生的“转移”和“放电”次数(如“数据”表的 b 列中所述)。

总之,我在单元格 D5 中查找的是计算 hospcode 为“STIV1”的“转移”次数(如“数据”表的 b 列中指定),这些次数发生在相应的“STAsses”记录(也在 b 列中指定)的 0-2 周内。D6 也一样,只是在指定时间范围内发生的“出院”记录数。

我不知道从哪里开始,或者是否有可能这样做。每个人至少会有一个 STAsses 记录,但并不总是有“转院”或“出院”记录。每个人的“UID”都相同,因此这可用于将“STAsses”条目与“转院”和“出院”条目进行匹配。

任何指点都将非常感激。

答案1

有很多方法可以解决这个问题,但没有一个方法很简单。一种方法是创建一个合并的日期列,这样就可以求和(stdate,rdate)。看起来一次只填充其中一个日期,因此求和实际上只是将它们正确地合并到单个列中。

在此处输入图片描述

然后,您可以在顶部放置一个数据透视表,将 UID 放在行中,将 RecordType 放在列中,将新的 Combined Date 列放在 Values 中(作为 SUM)。由于 Combined Date 与 UID/RecordType 组合不同,因此这里不会对实际日期进行求和,因此您最终会得到一个漂亮的表格,其中包含不同的 UID 及其各自的 STAsses、Transfer 和 Discharge 日期,它们都位于同一行上。

在此处输入图片描述

有了这些信息,您现在可以从转移和出院日期中减去 STAsses 日期,然后除以 7,得到两次转移之间相隔的周数。您还可以执行 vlookup 来获取 HCode。

在这一组新数据的末尾,您可以创建新的列来捕获 0-2 排放量、0-2 转移量、2-4 排放量、2-4 转移量等...您可以使用 if 语句来填充这些数据,如If(dischargeweeks<2, 1, 0)If(transferweeks<2, 1, 0)等。(请注意,0-2、2-4 类型列中的数据是虚构的,因为您的样本数据吐出了数百周范围内的数字)。

在此处输入图片描述

现在旋转这些新数据(我知道……旋转旋转旋转)……这次将 hcode 粘贴在行中,将 0-2 放电、0-2 传输等粘贴在值中。现在它将为每个不同的 HCode 提供这些计数……这非常接近您想要的结果。

在此处输入图片描述

最后,我只是复制并粘贴(然后您可以排序)以获得正确的格式...我的意思是,此时只需复制和粘贴一点,对吗?

在此处输入图片描述

话虽如此,您可以编写一些 VBA 来浏览列表,计算所有内容并将其输出到新工作表上。我想这取决于这是针对大量数据的一次性操作,还是您每天都会这样做……

最后,由于我无法看到您的数据中可能存在的所有奇怪之处,因此这实际上只是一组建议。这里可能有些部分不起作用,或者有些部分可能需要稍作更改,但要点是一样的……使用数据透视表来汇总您的数据,再进行一些计算,然后再次进行数据透视表……虽然不太美观,但可以完成工作。

相关内容