2016-03-21 61 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 ...... –