2016-03-21 23 views
0

有点棘手的问题 - 我可能只需要通过VBA使用正确的脚本来完成它,但是如果有人真的有复杂的答案(让我们老实说,我认为这是一个超级简单的公式)我是接受者。我宁愿尽我所能地通过公式来做。我附上了一个样本。棘手的重复控制:满足Excel数组公式中的要求

该数据:我有与国家有关的数据。在每个国家,你可以有多个网站。对于每个站点,您可能有或没有不同的分布。当这些分布符合给定的标准时,我想统计为“休息”&统计了多少个国家,地点等。

工作原理:我为此使用了sumproduct()的数组公式。好的是,你可以轻松地添加标准,每个标准返回你的0/1,所以当你乘以它们时,它会给你数组,你需要总结一下,看看你有多少次休息。

问题:我无法格式化公式,以便在同一站点有两种不同分布类型并且都满足中断条件的情况下,我只能计算每个站点只计算一次。如果两个发行版都符合中断标准,我不希望将其记录为2个中断,否则我可能会以更多的网站记录中断,而不是中断站点的数量。问题的部分是我占了网站的unicness:

(tdata[siteid]>"")/COUNTIF(tdata[siteid],tdata[siteid] &"") 

这实际上是一个黑客位的,在这个意义上,而不是其他公式不会返回0/1,但可能分数。他们确实加起来,并允许我说,正确地计数网站的数量,但该数组并非为0/1,因此,当与其他0/1阵列相乘时,它会扰乱结果....

我控制的数据,所以我有一些余地。我使用表格(可以看到)和VBA已经被使用。如果有帮助,我可以对源表进行排序。源数据:

1行= 1只分配1个网站上1个月

每个国家我联系汇总表是基于这些源数据。

有什么想法?

编辑 - 过滤分配不是一个真正的选择。我确实已经有了一个基于事件的源数据过滤器,并且我已经可以正确计算分布过滤数据的指标。但我也需要显示全局数据(目前不工作)。还有其他一些指标需要计算,如果我筛选数据(这是很大的仪表板),这将不起作用。编辑2:换句话说,我需要找到某种方式来解释这样的事实,即如果在2个网站中找到具有相同siteid但2个不同分布的相同标准(中断或不中断),我想要计算仅作为1次突破。请记住,如果一个分配有中断(而另一个分配不中断),我仍然希望将其记录为在该国有中断的1个站点。编辑3:我决定创建一个新表格,它为每个网站分别汇总数据(每个网站可能有多个分发)。然后我可以从中计算全局的东西。

我的回答是:我认为,如果您在Excel公式中有很多级别的数据(例如国家/地区,某些分布级别的子级别),则很难不总结数据用于您想要关注的分析级别的中间表。例如。在我的情况下,我对国家层面的分析感兴趣,这是分布层次以上的2个“层次”。这意味着将从站点级角度出现“重复”数据。你可能能够解决这个问题,但我认为到目前为止,更简单的解决方案就是把它吸收并制作一张中间表。我确实也缩短了你的公式。

我不会将此标记为解决方案,因为这不是我正在寻找的。仍然是开放的更好的建议,允许只用公式工作....

文件:https://www.dropbox.com/sh/4ofctha6qhfgtqw/AAD0aPJXr__tononRTpKc1oka?dl=0

回答

0

也许下面可以提供帮助。

首先,筛选不满足分配条件的条目。

第二步,根据列siteid将A到Z的表排序。

然后在最后一列之后添加一个额外的列,公式= C3 <> C4,其中列C包含siteid条目。通过这种方式,所有副本在助手列中都由FALSE值表示。

之后,您将过滤此列中的FALSE值。

然后您将获得唯一的站点ID。

如果我把你的问题弄错了,我会很乐意为了帮助你而更新。

+0

问题是我不能这样做,如果我想保持基于公式的表。如果网站A有两个发行版,并且它们都有中断,我不能只过滤NORM(正常)发行版和计数 - 因为网站B可能只是针对TRG(目标)发行版中断。我需要为任何类型的分配计算休息时间,并将网站作为休息时间。 有一个下拉菜单让用户选择一种特定的分布类型 - 问题是我目前无法获得全局图片。还有其他的指标,我需要计算哪些不会与这些过滤器... –

+0

好吧,如果你从第二步开始,并退出第一步呢?您然后获得独特的siteids。然后必须在上述步骤之前选择用户,以便只显示所需的分配。但只要筛选结果根据siteid从A到Z排序,该过程应该工作? – LMM9790

+0

沿着一些相似的方向:我实际上是通过计划和实际数字之间的差异(例如,如果它高于给定的阈值,这是一个休息时间,那就是我想要查明的)来排序(而不是筛选)。然后我可以使用index(match())只返回第一个这样的匹配,如1,然后剩下的为0. 问题是,只有这是我需要的唯一指标。现在没关系。如果我有新的要求,它会打破它,我回到方块1,重新回顾我解决了同样的问题。如果我不能做得更好,它必须通过VBA ...... –