一、公式觉得太长
提供十条公式,任选一条即可,公式中的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)