表1
名字 数值
A 1
A 1
B 2
A 3
B 4
C 3
表2
列1 数值
A sum('A表'!B2[!0]{'A表'!A2=$A2})
B
C
类型1: 表2列1与表1名字段长度相等
当SHEET2表中列1按表1:名字列条件汇总且名字的长度一致时可用GREPARRAY(),LEFT(ITEM)取出与按列1相等的分类数组
1.GREPARRAY('sheet1'!A1+'sheet1'!B1,left(item) == A1
GREPARRAY(sheet1!A1+sheet1!b1,B)当B为true或flase返回数值,left(item)==A1 代表取sheet1!A1+sheet1!b1的左边第一个字符比较是否等于表二中的A1
2.replace(GREPARRAY('sheet1'!A1+'sheet1'!B1,left(item) == A1),A1,"")备注:该函数的是为了取出sheet1中A1列每组中的B1值
用空值替代A1的空值
2.EVAL("sum(" + replace(GREPARRAY('sheet1'!A1+'sheet1'!B1,left(item) == A1),A1,"") + ")")
备注:该函数是为了对sheel1中每组的值进行求和计算,EVAL返回表达式exp计算后的结果,
sum求和,GREPARRAY函数(返回true或者false)是条件,过滤此数组,最后形成一个新数组,
left根据指定的字符数返回文本串中的第一个或前几个字符。
类型2:表2列1与表1名字段长度不相等
在原来的拼接基础上添加特殊字符$ 然后用FIND 取出$在字段中第一次出现的位置后减1,最后用left(item,取出位值-1)判定是否==A1
1.GREPARRAY('sheet1'!A1+"$"'sheet1'!B1, LEFT(ITEM, find("$", ITEM) - 1)== A1
后的步骤参考类型1