簡體   English   中英

將INDEX MATCH公式更改為EXCEL中的數組公式

[英]Change INDEX MATCH formula to an array formula in EXCEL

我正在嘗試創建一個INDEX MATCH公式,該公式搜索包含jpegs列表的列,並返回以特定字符串開頭的所有jpegs ,並將它們轉換為超鏈接。

目前,我的公式僅返回第一個實例,但我希望它返回所有匹配項。

jpeg的列表在工作簿的工作Sheet 2column 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 CH 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_first_Second


¹AGGREGATE函數是Excel 2010引入的。在早期版本中不可用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM