我找不到一個好的方法來解決這個問題。我將盡力總結這個問題:
我使用 Hyperion Essbase Excel 外掛程式在 OLAP 多維資料集中導航。我在這裡想要完成的是將某些標籤映射到維度的值。此維度內部有多個層級的資料分組,因此一個子節點可以有多個層級的父節點。我可以事先知道成員有哪些,但它們每個月都會發生變化,並且查找缺少的成員可能很乏味,因此我們所做的就是使用父成員並放大其成員。然而,一個父級內部可以有多個不同的標籤。我已經透過使用 VLOOKUP() 實現了部分目的,如果在表中找不到當前行,那麼我向下查找一行並拖曳該公式,這會產生以下不良效果:
我已經對相輔相成的東西進行了編號。正如您在我的範例中看到的,元素“24566”也在父“FD120465”中找到。結果是同一組中在其先前找到的所有元素都映射到“Expense B”,但目標結果是所有子元素都應映射到“Expense D”但“24566”。這是我在本範例中使用的公式:
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,0), D12)
我想出了幾種解決這個問題的方法,但沒有一個是我喜歡的。我可以建立兩個不同的公式,一個僅查看子元素,另一個僅查看父元素。如果子元素放在前面,即使在群組中放置錯誤的標籤也沒關係(“24566”在橙色部分將被標記為“Expense D”)。這也有一個缺點,會產生更多的工作(定義使用公式 1 和公式 2 的區域,要么手動完成工作,要么用 VBA 過度殺戮......)
另一種方法是簡單地取出每個子元素並將其以其正確的映射放入表中。問題是,父母每個月都會有或多或少的項目,並且映射可能會發生變化(儘管這種情況不應該經常發生),因此管理每個子元素會變得乏味。我提供的樣本與我擁有的樣本相比很小(父母中有 15-20 個孩子)。
在我們選擇缺點最少的解決方案之前,這是我對這項任務的最後一次嘗試。有沒有一個明顯的(甚至不那麼明顯)的方法來解決這個問題乾淨地?
謝謝 !
答案1
如果你想要我懷疑你想要的東西,並且從我懷疑你所在的地方開始,那麼這個方法就有效。 (這不一定是從數據中獲得結果的最佳方法,但至少可以幫助澄清所需的內容。)
新增一個輔助列,以便所有子項目都有一個父項(假設它們有):
B11=IF(LEFT(C11,2)="FD",C11,B12)(依要求抄下來)
=IFERROR(VLOOKUP(C11,$C$3:$D$8,2,FALSE),VLOOKUP(B11,$C$3:$D$8,2,FALSE))
(在 D11 中,根據需要向下複製)。
我假設表中底部的兩個條目包含拼字錯誤。