如圖1,,當B列內(nèi)容非空時,,提取A列內(nèi)容,通過篩選隱藏空單元格,,再復制到其他列中可以實現(xiàn),,但是數(shù)據(jù)源在不斷變化,希望能自動提取,。本文分享用數(shù)組公式提取,。 圖1 在D2單元格輸入公式 =INDEX($A$2:$A$20,SMALL(IF($B$2:$B$20="","",ROW($B$2:$B$20)-ROW($B$2)+1),ROW($B2)-ROW($B$2)+1)),公式輸入完畢后按Ctrl+Shift+Enter結(jié)束,,然后向下填充公式,,直到出現(xiàn)“#NUM!”為止。 公式解釋如下: 1,、INDEX函數(shù)是返回表或區(qū)域中的值或值的引用,。函數(shù)INDEX()有兩種形式:數(shù)組形式和引用形式。數(shù)組形式通常返回數(shù)值或數(shù)值數(shù)組,;引用形式通常返回引用,。這里引用的是數(shù)組。 INDEX函數(shù)語法 INDEX(array, row_num, [column_num]) 如果同時使用了 row_num 和 column_num 參數(shù),,INDEX 將返回 row_num 和column_num 交叉處單元格中的值,。如果將 row_num 或 column_num 設置為 0,INDEX將分別返回整列或整行的值數(shù)組,,這里只需要引用A列數(shù)據(jù),,所以第3個參數(shù)設為0或為空,。 2、SMALL函數(shù)的語法為:SMALL(array, k) 返回數(shù)據(jù)集“array”中的第“k”個最小值,。 公式中SMALL函數(shù)的第一個參數(shù) SMALL(IF($B$2:$B$20="","",ROW($B$2:$B$20)-ROW($B$2)+1),ROW($B2)-ROW($B$2)+1) 產(chǎn)生一個數(shù)組: {2;3;4;5;"";"";””;9;10;11;12;13;14;15;””;"";"";19} 該數(shù)組中的數(shù)字為B2:B20區(qū)域中非空單元格對應的行號,,而空引號則對應區(qū)域中的空單元格。 第二個參數(shù)ROW($B2)-ROW($B$2)+1)根據(jù)B列中單元格的位置依次返回“1”,、“2”,、“3”…… 上述數(shù)組中,第1個最小值為“2”,,第2個最小值為“3”,,……。這樣就用SMALL函數(shù)“去掉”了數(shù)組中的空值,,最后用INDEX函數(shù)返回A列連續(xù)的非空單元格值,當結(jié)果為錯誤值#NUM!時,,說明A列中的非空單元格值已返回完畢。 |
|
來自: sunnynie2021 > 《待分類》