[英]Structured Reference in an Index/Match Calculated Column Formula for Header Cell Range in a Table
我在運行良好的計算列中有此公式:
=IFERROR(INDEX(Allocation_of_Funds[[#Headers],[End.Nursing]:[Unassigned14]],MATCH(TRUE,INDEX(Allocation_of_Funds[@[End.Nursing]:[Unassigned14]]>0,0),0)),"")
但是這個公式給我帶來麻煩,並且在下一個計算的列中表示我想要的(基於上面的上一列中的值),但是它返回了#REF! 錯誤:
=INDEX(INDIRECT("Allocation_of_Funds[[#Headers]"&"["&[@[SOURCE 1]]&"]"):[@Unassigned14],MATCH(TRUE,INDIRECT("Allocation_of_Funds[[#Headers]"&"["&[@[SOURCE 1]]&"]"):[@Unassigned14]>0,0),0)
如果有幫助,表格設置的詳細信息如下:
我有一個帶有一系列列的表,每個列代表一個不同類型的帳戶。 對於每一行,這些列的任何組合都可以包含值或空格,因此我要設置另一組列,以便為每個記錄的非空白列標識表列標題。
SOURCE1 | SOURCE2 | SOURCE3 | ACCT1 | ACCT2 | ACCT3 | ACCT4 | ACCT5
ACCT1 | ACCT2 | ACCT4 | 500 | 300 | | 100 |
ACCT2 | ACCT3 | | | 200 | 100 | |
ACCT3 | | | | | 500 | |
| | | | | | |
ACCT3 | ACCT4 | ACCT5 | | | 200 | 300 | 50
ACCT1 | ACCT3 | ACCT4 | 123 | | 332 | 100 |
因此,我需要SOURCE2列來使用SOURCE1列中的值來標識要查找具有值的下一個單元格的范圍的起點,從而將為該SOURCE2行值返回該值上方的列標題。 使用SOURCE2列的值來標識下一個范圍的開始,相同的公式將應用於SOURCE3列。
在此先感謝您動動腦筋!
-林賽
我使用以下公式提取標題並將其放置在源編號下:
=IFERROR(INDEX($D$1:$H$1,AGGREGATE(15,6,COLUMN($D2:$H2)/ISNUMBER($D2:$H2)-COLUMN($D$1)+1,RIGHT(A$1,1)*1)),"")
我假設您表的左上角在A1中,其中1是標題行,AC是您的源列,D到H是帳戶列。 上面的公式可以放在單元格A2中,並根據需要復制到右側和下方。
您似乎對IFERROR和INDEX函數有所了解,因此我將解釋AGGREGATE函數:
=AGGREGATE(15,6,COLUMN($D2:$H2)/ISNUMBER($D2:$H2)-COLUMN($D$1)+1,RIGHT(A$1,1)*1)
AGGREGATE函數是許多不同函數的混合體,可以忽略一些計算。 另一個附加功能是,某些內置函數無需數組即可執行數組計算。
在這種特殊情況下,我選擇了與SMALL函數相同的聚合函數15。 我還告訴聚合忽略使用“ 6”生成錯誤的計算。 對於數組計算,我已要求其將要使用的列號除以該列為數字的True或False結果:
COLUMN($D2:$H2)/ISNUMBER($D2:$H2)-COLUMN($D$1)+1
在excel數學中,True等於1,False等於0。每當單元格不是數字時,它將嘗試除以零,生成錯誤並被Aggregate函數忽略。 這基本上會生成一個列號列表,這些列表符合在其列中包含數字的條件。 D1減后跟+1是將確定的列號轉換為帳戶標題下的相對列。
集合函數的下一部分告訴SMALL操作需要返回按排序順序排列的數字。 我使用了源標題中的最后一個字符來確定要返回的列號。 對於SOURCE1,最后一個字符為1,因此我希望返回最小的列號。 對於SOURCE2,返回第二個最小的數字。 末尾的* 1會將字符轉換為數字,而不是1作為文本。
RIGHT(A$1,1)*1
如此,如果您想使用多達9個來源,則可以。 您也可以提供更多資源,但是您需要修改此公式,或者想出另一種方式來提供您要返回的小清單數量。 您可以將D2:H2參考擴展為所有帳戶,並調整D1:H1參考以覆蓋所有帳戶標頭。
概念證明
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.