[英]Change INDEX MATCH formula to an array formula in EXCEL
我正在嘗試創建一個INDEX MATCH
公式,該公式搜索包含jpegs
列表的列,並返回以特定字符串開頭的所有jpegs
,並將它們轉換為超鏈接。
目前,我的公式僅返回第一個實例,但我希望它返回所有匹配項。
jpeg的列表在工作簿的工作Sheet 2
的column F
(F1:F1000)
。 搜索中使用的字符串是column A, sheet 1
的產品SKU。
這是我在sheet 1
C2
輸入並填寫的工作非數組版本:
=IFERROR(
HYPERLINK(
CONCATENATE(sku_url,INDEX(Sheet2!$F$1:$F$1000,
MATCH(A2&"*",Sheet2!$F$1:$F$1000,0),1))),
"image not found")
這適用於column C
,但是如何在右邊填充此公式,以使column D
包含每個sku的第二個圖像, E
包含第三幅圖像,依此類推。 我計划每個SKU的圖像不超過六個,因此我已將columns C
到H
columns C
分配給產品圖像URL。 如果SKU沒有六個圖片,則這些多余的列應為空。
假設使用Excel 2010或更高版本:
=IF(COLUMNS($A:A)>COUNTIF(Sheet2!$F$1:$F$1000,$A2&"*"),"",IFERROR(HYPERLINK(CONCATENATE(sku_url,INDEX(Sheet2!$F:$F,AGGREGATE(15,6,ROW(Sheet2!$F$1:$F$1000)/(LEFT(Sheet2!$F$1:$F$1000,LEN($A2))=$A2),COLUMNS($A:A))))),"imagenotfound"))
作為解釋,初始的IF
子句即:
IF(COLUMNS($A:A)>COUNTIF(Sheet2!$F$1:$F$1000,$A2&"*"),""
很簡單:
COUNTIF(Sheet2!$F$1:$F$1000,$A2&"*")
簡單地給出符合該條件的總行數,並且因為:
COLUMNS($A:A)
等於1,並在向右復制時依次變為:
COLUMNS($A:B)
(等於2)
COLUMNS($A:C)
(等於3)
等,此子句在連續的列中等同於:
IF(1>COUNTIF(Sheet2!$F$1:$F$1000,$A2&"*"),""
IF(2>COUNTIF(Sheet2!$F$1:$F$1000,$A2&"*"),""
IF(3>COUNTIF(Sheet2!$F$1:$F$1000,$A2&"*"),""
等,因此在初始子句為TRUE
單元格中將返回空白。
注意的唯一其他子句是在滿足此條件時生成連續行號的數組。 不幸的是,出於技術原因,上面的COUNTIF
語句不能在我們的AGGREGATE
結構中使用。
幸運的是,我們可以使用另一個帶有LEFT
設置來重現該COUNTIF
語句的結果。
為了幫助說明,暫時將相關范圍從F1:F1000減小到F1:F10,這部分內容:
LEFT(Sheet2!$F$1:$F$10,LEN($A2))=$A2
只會為F1:F10中的每個條目生成該語句結果的布爾TRUE
/ FALSE
返回數組。 例如,我們可能有:
{FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE}
然后,當我們使用此布爾數組對每個條目的等效行號進行往復時,即執行:
ROW(Sheet2!$F$1:$F$10)/(LEFT(Sheet2!$F$1:$F$10,LEN($A2))=$A2)
我們有:
{1;2;3;4;5;6;7;8;9;10}/{FALSE;TRUE;FALSE;TRUE;TRUE;FALSE;TRUE;FALSE;TRUE;FALSE}
並且由於在通過任何適當的數學運算(除以1的結果)進行強制運算后,布爾值TRUE
/ FALSE
值被強制轉換為其數值等效項( TRUE
= 1, FALSE
= 0),因此上述內容變為:
{#DIV/0!;2;#DIV/0!;4;5;#DIV/0!;7;#DIV/0!;9;#DIV/0!}
由於第一個參數為15的AGGREGATE
被指示在數組中找到最小值,第二個參數為6的AGGREGATE
被指示忽略該數組中的任何錯誤值,因此剩下的就是在該數組中設置第四個參數。函數k ,確定是否應返回第一個最小值,第二個最小值等。
同樣,通過使用:
COLUMNS($A:A)
對於該參數,我們知道它將生成一系列連續的整數(1、2、3等),如右圖所示,因此我們保證將所需的行號返回給公式的每個版本。
問候
將AGGREGATE¹功能與SMALL子功能一起使用( 15 )。 右填充時,調整k參數以COLUMN增大。
B2中的標准(非數組)公式為
=IFERROR(
HYPERLINK(
CONCATENATE(sku_url, INDEX(Sheet2!$F:$F,
AGGREGATE(15, 6, ROW($1:$999)/(LEFT(Sheet2!$F$1:$F$999, LEN($A2))=$A2), COLUMN(A:A))))),
"image not found")
根據需要正確填寫。
¹AGGREGATE函數是Excel 2010引入的。在早期版本中不可用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.