查找关键字符返回所在列的信息,并使用sumif引用实现汇总
需求:“汇总表”汇总”明细表“中的数据。存在的问题:明细表中“所属部门”、“得分”需要不定期经常在A、B、C列中变动,无固定位置,也就是说“所属部门”、“得分”这两列有时是在A列,有时是在B列,有时是在c列,这样就无法使用固定的区间进行计算,所以想要通过查找关键字,得到其现在所在的列。。
思路:
1、在明细表查找“部门”、“得分”关键字,返回其所在的列:"明细表!B:B"、"明细表!C:C"。
2、sumif(range,criteria,sum_range)sumif函数中的range引用第1步中查找关键字“部门”所在列返回的结果,sum_range引用第1步中查找关键字”得分”所在列返回的结果部门和得分使用第一步的结果。
不知如何实现?或是有其它方法解决。
附件是否是你需要的?
A、B、C列随机变化的,比如
有时是名称、所属部门、得分
有时是所属部门、得分、名称
有时是得分、名称、所属部门
所以才有第1步 B3=SUMIF(INDIRECT("明细表!"&ADDRESS(1,MATCH("所属部门",明细表!$A$1:$C$1),1)&":"&ADDRESS(10000,MATCH("所属部门",明细表!$A$1:$C$1),1)),A3,明细表!$C$1:$C$10000)
C3=COUNTIF(INDIRECT("明细表!"&ADDRESS(1,MATCH("所属部门",明细表!$A$1:$C$1),1)&":"&ADDRESS(10000,MATCH("所属部门",明细表!$A$1:$C$1),1)),A3) 感谢秋风荡芦苇和wisdom988热心帮助,最后我做了一个可根据字符定位的,就是不知道能不能精简,公式如下:
B3=SUMIF(INDIRECT(ADDRESS(SUMPRODUCT(ISNUMBER(FIND("所属部门",明细表!1:1))*ROW(明细表!1:1)),SUMPRODUCT(ISNUMBER(FIND("所属部门",明细表!1:1))*COLUMN(明细表!1:1)),1,TRUE,"明细表")&":"&ADDRESS(300,SUMPRODUCT(ISNUMBER(FIND("所属部门",明细表!1:1))*COLUMN(明细表!1:1)),1,TRUE)),A3,INDIRECT(ADDRESS(SUMPRODUCT(ISNUMBER(FIND("得分",明细表!1:1))*ROW(明细表!1:1)),SUMPRODUCT(ISNUMBER(FIND("得分",明细表!1:1))*COLUMN(明细表!1:1)),1,TRUE,"明细表")&":"&ADDRESS(300,SUMPRODUCT(ISNUMBER(FIND("得分",明细表!1:1))*COLUMN(明细表!1:1)),1,TRUE)))
B4=COUNTIF(INDIRECT(ADDRESS(SUMPRODUCT(ISNUMBER(FIND("所属部门",明细表!1:1))*ROW(明细表!1:1)),SUMPRODUCT(ISNUMBER(FIND("所属部门",明细表!1:1))*COLUMN(明细表!1:1)),1,TRUE,"明细表")&":"&ADDRESS(300,SUMPRODUCT(ISNUMBER(FIND("所属部门",明细表!1:1))*COLUMN(明细表!1:1)),1,TRUE)),A3) B3:=SUMPRODUCT(MMULT((明细表!$A$2:$C$125=A3)*1,{1;1;1})*N(+明细表!A$2:$C$125))
C3:=SUMPRODUCT(MMULT((明细表!$A$2:$C$125=A3)*1,{1;1;1}))
D3:=B3/C3
下拉。 这么标准的数据源不考虑用透视表汇总吗? 谢谢!
透视表非常简单就可以搞定!也不用担心顺序是否变化。只是我这实际的表格还需要增删和做其它计算,透视表编辑会不方便。所以想用公式解决。 谢谢您! B3=SUMIF(OFFSET(明细表!$A:$A,,MATCH("所属部门",明细表!$1:$1,)-1,),A3,OFFSET(明细表!$A:$A,,MATCH("得分",明细表!$1:$1,)-1,))
C3=COUNTIF(OFFSET(明细表!$A:$A,,MATCH("所属部门",明细表!$1:$1,)-1,),A3)
D3=B3/C3