從索引匹配中取得數組結果

從索引匹配中取得數組結果

所以與大多數索引匹配數組問題有點不同

我有一個從 A 到 B 的運動表。

這些動作中的每一個都對應於一組不同的「滾動步驟」。這些將是步驟 1、步驟 2 或步驟 3。

這種關係被記錄在一張簡潔的表格中,如下所示:

Step      Type   Relationship
Step 1 - Type 1 - 1
Step 2 - Type 1 - 0
Step 3 - Type 1 - 0
Step 1 - Type 2 - 1
Step 2 - Type 2 - 1
Step 3 - Type 2 - 0
Step 1 - Type 3 - 0
Step 2 - Type 3 - 0
Step 3 - Type 3 - 1
Step 1 - Type 4 - 1
Step 2 - Type 4 - 1
Step 3 - Type 4 - 1

其中 1 表示“是的,它們相關”,0 表示“不,它們不相關”。

現在步驟表中有一個子步驟,如下所示:

SubStep  --- Step
1             1
2             1
3             1
4             1
5             1
6             1
7             2
8             2
9             2
10            3
11            3
12            3

現在,我有一個子步驟表,以及我需要執行多少個子步驟。我有一個動作表,以及有多少個動作單位從 A 移動到 B。

例如:

如果我的移動類型1 為100 個單位,我需要在子步驟1 - 6 中新增100 個單位。單位,總共移動 300 個單位,然後將 200 個單位加到子步驟 7-9。

我發現求和可能是實現此目的的最佳方法。目前,它的第一部分如下所示:

=SUMPRODUCT(UnitMovementWorksheetCurrent[Units],--(UnitMovementWorksheetCurrent[Month]=[@Month]),--(UnitMovementWorksheetCurrent[Year]=[@Year]),--(UnitMovementWorksheetCurrent[From]=[@[Lab Abbr]]),--(INDEX(MovementToStepLookup[Roll up Step],MATCH(UnitMovementWorksheetCurrent[Movement Type],MovementToStepLookup[Movement Number],0))=[@[Roll up Step]]))

然而,不起作用的部分是(INDEX(MovementToStepLookup[Roll up Step],MATCH(UnitMovementWorksheetCurrent[Movement Type],MovementToStepLookup[Movement Number],0))=[@[Roll up Step]]))- 我希望從中得到一個 TRUE/FALSE 數組,但我只是得到一個 #VALUE 錯誤。索引正確地為我提供了數組,匹配正確地生成了一個數組,當合併兩個時(單步執行時),它只給我一個數字作為結果,而不是一個數字數組,然後它給我(例如){ 1} = 1,則為單一 TRUE。

當我逐步執行公式時,這是有效的,但是當我突出顯示要計算的整個內容時,它只會給我#VALUE。所以我想我有兩個問題(實際上,唯一的問題是如何獲取我的數據,但將其分解一下...):

1)如何讓索引匹配傳回數組結果?
2)我的公式做錯了什麼?

答案1

因此,經過更多的谷歌搜索後,答案很奇怪並且違反直覺,並且在撰寫本文時,我實際上並不知道它起作用的所有原因,只是它(似乎是!)起作用。

我之前犯了一個錯誤,當時我拉出匯總步驟,然後進行比較。這是不正確的,無論它是否被使用,我都需要退出。為了反映這一點,比賽略有改變。

強制 Index 傳回多個結果的方法似乎有兩個:1)有條件語句,2)有 N 函數,如下所示:

INDEX(MovementToStepLookup[已使用?],N(IF(TRUE,MATCH(UnitMovementWorksheetCurrent[運動類型],MovementToStepLookup[運動編號]*(MovementWorksheetCurrent[運動類型],MovementToStepLookup[運動編號]*(MovementToStepLookup[滾動步驟]=[@[滾動步驟]]),00)))))ToStepLookup[滾動步驟]=[@[滾動步驟]]),00))))),00)))

對於我的條件,我只是將其視為 TRUE。為什麼要費心去處理更複雜的事情呢?對於 N,只需將數組傳遞給它即可。

我不知道為什麼會這樣。解釋如何做到這一點的(更好的文章)說他們也不確定為什麼。更多閱讀內容可以在這裡找到:https://excelxor.com/2014/09/05/index-returning-an-array-of-values/。不過,它確實有效,所以我很高興

相關內容