内容导航:


一、公式觉得太长


提供十条公式,任选一条即可,公式中的ROW(1:4)是对应要统计区域的行数,不算表头,问题中是G4:J7区域共四行,如果增加至10行的,只需把公式中的ROW(1:4)改为ROW(1:10)。

在D5输入以下公式中的任意一条,推荐用公式一,数组公式,输入完成后不要直接回车,要按三键 CTRL+SHIFT+回车 结束。

公式一:(推荐)
=IF(COUNTIF(G4:I7,D3),INDEX(J:J,MAX((G4:I7=D3)*ROW(1:4)+3)),"")

如果D3的值在表格中是唯一的,不会重复的,公式一可以改为普通公式,这样在数据量大时,运行速度相对来说会快点,输入完成后直接回车,无需再按那三键。

=IF(COUNTIF(G4:I7,D3),INDEX(J:J,SUMPRODUCT((G4:I7=D3)*ROW(1:4))+3),"")


公式二:
=IF(COUNTIF(G4:I7,D3),OFFSET(J1,MAX((G4:I7=D3)*ROW(1:4))+2,),"")

公式三:
=IF(COUNTIF(G4:I7,D3),INDIRECT("J"&MAX((G4:I7=D3)*ROW(1:4))+3),"")

公式四:
=IF(COUNTIF(G4:I7,D3),INDIRECT("R"&MAX((G4:I7=D3)*ROW(1:4))+3&"C10",),"")

公式五:
=IF(COUNTIF(G4:I7,D3),INDIRECT(ADDRESS(MAX((G4:I7=D3)*ROW(1:4))+3,10)),"")

公式六:

=IF(COUNTIF(G4:I7,D3),SUMIF(OFFSET(F4,,MAX((G4:I7=D3)*COLUMN(A:C)),4),D3,J4),"")


公式七:

=IF(COUNTIF(G4:I7,D3),SUM((OFFSET(F4,,MAX((G4:I7=D3)*COLUMN(A:C)),4)=D3)*J4:J7),"")


公式八:(此为普通公式,输入完成直接回车即可,无需按三键)

=IF(COUNTIF(G4:I7,D3),LOOKUP(1,0/(OFFSET(F4,,MAX((G4:I7=D3)*COLUMN(A:C)),4)=D3),J4:J7),"")


公式九:(此为普通公式,输入完成直接回车即可,无需按三键)

=IF(COUNTIF(G4:I7,D3),SUMPRODUCT((OFFSET(F4,,MAX((G4:I7=D3)*COLUMN(A:C)),4)=D3)*J4:J7),"")


公式十:

=IF(COUNTIF(G4:I7,D3),VLOOKUP(D3,IF({1,0},OFFSET(F4,,MAX((G4:I7=D3)*COLUMN(A:C)),4),J4:J7),2,),"")


以上所有公式都已增加了当D3为空或是D3的值不存在表格中时,公式返回空白值的处理。

我把文件传上来,请点击这回答右下角绿色的“点击下载”按钮,下载文件看看效果。



二、EXCEL2003公式太长怎么办


如果公式太长,可以用自定义名称的方式,把公式分段,在总的公式中加进去。

但是,通常公式太长的时候,应该想想是否是“垃圾公式”,因为大多数时候都用不上这么累赘的东东。可以利用更高效率的函数解决问题。

比如说:
=D2*0.52935+E2*0.209+F2*3.783+G2*1.78525……
可以把0.52935输入在D1,把0.209输入在E1,把*3.783输入在F1……以此类推
那么,公式可以简化为:
=sumproduct(d1:de1,d2:de2)