我需要一些公式方面的帮助。在我的“数据”表中,我有以下格式的数据:
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 来浏览列表,计算所有内容并将其输出到新工作表上。我想这取决于这是针对大量数据的一次性操作,还是您每天都会这样做……
最后,由于我无法看到您的数据中可能存在的所有奇怪之处,因此这实际上只是一组建议。这里可能有些部分不起作用,或者有些部分可能需要稍作更改,但要点是一样的……使用数据透视表来汇总您的数据,再进行一些计算,然后再次进行数据透视表……虽然不太美观,但可以完成工作。