我遇到过一些解决方案,但我想知道这是否只是excel的限制,或者没有办法创建多个值来从同一个单元格进行评估。 C3从相邻单元格中的所有值创建平均值。
我会解释为什么我要这样做。我正在编写游戏中物品价格的speadsheet,并希望从列的一个单元格中创建一个伪数据库。我想要做的只是在一个单元格中的一个例子:
2,40,300,200,340
没有C2(单元名称)总和所有条目除以条目总数?用逗号分隔的所有值的平均值?
我知道这可以通过多个单元格轻松完成,但我想减少水平混乱,所以想知道是否有任何方法可以使用语法分隔值,而不使用VBA或过于复杂的代码。
答案 0 :(得分:5)
公式是熊,但是:
=SUMPRODUCT(--MID(SUBSTITUTE(C2,",",REPT(" ",99)),(ROW(INDIRECT("1:" & LEN(C2)-LEN(SUBSTITUTE(C2,",",""))+1))-1)*99+1,99))/(LEN(C2)-LEN(SUBSTITUTE(C2,",",""))+1)
这里发生了很多事情,所以让我们分解一下:
LEN(C2)-LEN(SUBSTITUTE(C2,",",""))+1
:获取,
分隔的项目数,在本例中为5
。它在这个公式中使用了两次。第二个是获得平均值的分母。
第二个用于(ROW(INDIRECT("1:" & LEN(C2)-LEN(SUBSTITUTE(C2,",",""))+1))-1)
。这是迭代的部分。 SUMPRODUCT将导致迭代并对部分求和。
该行将返回1,2,3,...到LEN(...) - LEN(...)函数返回的内容。我们减去一个从0开始。
每次迭代乘以99,我们加一,因为MID不喜欢0作为开始。
SUBSTITUTE(C2,",",REPT(" ",99))
创建一个包含99个空格的字符串代替每个","。
MID将此字符串分隔现在100个空格并解析它。第二个标准是从1,100,199,298,...等迭代单元格中的数字时间。因为我们给它留了100个空间,所以它总是落在一个空间上。
第三个标准设置每次迭代时返回的字符串的长度。我们使用99,因为在数字之后它总是会占据一个空格。
MID前面的--
将导致返回的已解析字符串恢复为数字。这会强制Excel删除多余的空格并仅查看数字。
这个数字是SUMPRODUCT()维护并添加到每次迭代的总数中。
答案 1 :(得分:0)