如何获取行内从右到左前n个非零值及对应列标题 现有公式顺序相反如何调整
非零值提取公式
从右到左依次提取(向右填充时按从右到左顺序取非零值)
旧版Excel输入后按Ctrl+Shift+Enter确认数组公式,Excel 365/2021直接回车即可:=INDEX($R275:$BE275,LARGE(IF($R275:$BE275<>0,COLUMN($R275:$BE275)-MIN(COLUMN($R275:$BE275))+1),COLUMNS($A:A)))
从左到右依次提取(若需要和当前顺序相反的结果,将LARGE替换为SMALL即可)
=INDEX($R275:$BE275,SMALL(IF($R275:$BE275<>0,COLUMN($R275:$BE275)-MIN(COLUMN($R275:$BE275))+1),COLUMNS($A:A)))
对应列标题提取公式
假设列标题存储在$R$1:$BE$1区域,可根据实际存储位置修改行号,注意保留绝对引用符号$避免填充时偏移。
匹配从右到左取数的标题公式
=INDEX($R$1:$BE$1,LARGE(IF($R275:$BE275<>0,COLUMN($R275:$BE275)-MIN(COLUMN($R275:$BE275))+1),COLUMNS($A:A)))
匹配从左到右取数的标题公式
=INDEX($R$1:$BE$1,SMALL(IF($R275:$BE275<>0,COLUMN($R275:$BE275)-MIN(COLUMN($R275:$BE275))+1),COLUMNS($A:A)))
优化说明
如果需要隐藏无更多非零值时返回的#NUM!错误,可在外层嵌套IFERROR函数,示例:=IFERROR(INDEX($R275:$BE275,LARGE(IF($R275:$BE275<>0,COLUMN($R275:$BE275)-MIN(COLUMN($R275:$BE275))+1),COLUMNS($A:A))),"")
内容的提问来源于stack exchange,提问作者Ethan Altmayer

