大型数据集的vba/excel分析

大型数据集的vba/excel分析

我正在处理 Excel 中的大量数据,我认为 VBA 可能会有所帮助。我有大约 500 行,A 列中有名称(大约 150 个)。当名称匹配时,我想将公式应用于其他列。具有相同名称的行数各不相同,介于 2 到 10 之间。我正在分析数据,并希望查看每个人的数据,包括比较行之间的值和求和值。我不知道如何在不使用整数计数器的情况下执行 for 循环。有人对如何解决这个问题有什么建议吗?谢谢!

电子表格示例:

在此处输入图片描述

答案1

您介意在一栏中列出不同的病人吗?

这可以通过公式来完成,如下所示:

在此处输入图片描述

D2 中的公式列出了不同的患者:

=IFERROR(INDEX($A$2:$A$20,MATCH(0,INDEX(COUNTIF($D$1:D1,$A$2:$A$20),0,0),0)),"")

在 F2 中,我们计算(短)列表中每位患者的服务访问次数:

=COUNTIFS(A$2:A$20,D2,C$2:C$20,">0")

最后,在 E2 中,我们找到了首次服务日期:

=MIN(IF((1*(D2=A$2:A$20)*(C$2:C$20))=0,"",(1*(D2=A$2:A$20)*(C$2:C$20)))

这是一个数组公式,因此要使用 CTRL-Shift Enter 输入,而不是直接按 Enter。如果输入正确,Excel 会用花括号 {} 将公式括起来。

输入公式后,向下填充足够多的内容以列出所有患者。最简单的方法是选择第一个包含公式的单元格(本例中为 D2),然后按住 SHIFT 键并单击 F 列中足够向下的单元格。然后从编辑菜单中选择“填充 > 向下”。

如果您猜错了要走多远,只需从最后一行重复该过程即可。

我希望这会有所帮助,如果我遗漏了什么,请告诉我。

答案2

听起来您可能想要使用 DMIN(),或者如果您有 Excel 2016,则使用 MINIFS()。请参阅示例屏幕截图:

在此处输入图片描述

列 ac 与您的列一样,我自己测试公式时可能更改了数据...

相关内容