Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/magento/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 创建拆分逗号并查找唯一元素的表_Excel - Fatal编程技术网

Excel 创建拆分逗号并查找唯一元素的表

Excel 创建拆分逗号并查找唯一元素的表,excel,Excel,我有以下数据 Person Week1 P1 L,L P2 M,H 我想要的输出是 Person Week1 L M H P1 2 0 0 P2 0 1 1 我的目的是根据输出创建一个图表,这样我就可以计算出一个人每周得到多少代码。透视表似乎不适用于这种情况 谢谢如果使用VBA是可以接受的,那么使用分割逗号分隔的数据作为第一个处理步骤应该会有所帮助 然后使用数据透视

我有以下数据

Person     Week1
P1         L,L
P2         M,H
我想要的输出是

Person      Week1
           L   M   H
P1         2   0   0
P2         0   1   1
我的目的是根据输出创建一个图表,这样我就可以计算出一个人每周得到多少代码。透视表似乎不适用于这种情况


谢谢

如果使用VBA是可以接受的,那么使用分割逗号分隔的数据作为第一个处理步骤应该会有所帮助


然后使用数据透视表为您提供所需的输出。

这是一种纯公式方法

它基于两个基本公式。第一个公式是如何计算字符串a在字符串B中出现的次数。这是通过计算字符串B中的字符数,然后在字符串a被零或“”替换后计算字符串B中的字符数来完成的。如果字符串A的长度超过1个字符,则需要将结果除以字符串A的长度。这为我们提供了以下公式:

=(LEN(STRING B)-LEN(SUBSTITUTE(STRING B, STRING A, "")))/LEN(STRING A)
现在我们知道如何计算L、M或H出现的时间,因为它们是字符串A,现在我们需要确定字符串B

如果我们看第一个表,它有很好的行标题和列侦听器。我们可以走一条捷径,假设一切都井然有序,但我将采用更通用的方法,以防标题恰好是随机顺序

基本上,我们需要找出第一个表中的哪一列与第二个表中的标题相匹配。week2真的是第二栏吗?P1还是第一排吗?为了做到这一点,我们使用以下方法

=MATCH("WEEK X",$B$1:$D$1,0)
and 
=MATCH("PX",$A$2:$A$3,0)
这些将返回一个整数,我们可以将其放入索引函数中,以查找第一个表中的文本:

=INDEX($B$2:$D$3,MATCH("PX",$A$2:$A$3,0),MATCH("WEEK X",$B$1:$D$1,0))
太棒了,我们现在知道如何从表格中找到文本,并将其放入我们开始使用的计数公式中。只要有字符串B,las公式就会被替换

=(LEN(INDEX($B$2:$D$3,MATCH("PX",$A$2:$A$3,0),MATCH("WEEK X",$B$1:$D$1,0)))-LEN(SUBSTITUTE(INDEX($B$2:$D$3,MATCH("PX",$A$2:$A$3,0),MATCH("WEEK X",$B$1:$D$1,0)), STRING A, "")))/LEN(STRING A)
是啊,它变得有点难看了,不是吗!字符串A是第二个表中的任意单元格L。在第二个表格中,将“X周”替换为周标题。在第二个表中,用您的姓名替换“PX”

我会做第一个公式,然后把它复制到M和H下面。进入M和H公式,调整它,使它指向正确的周标题。锁定周标题和字符串A单元格的行引用,但不锁定列引用。锁定人名的列而不是行。一旦设置好,每周复制三个公式并粘贴在下面。然后只需将表2的第一行全部抄写下来,记录下你的人数,瞧

概念证明

公式I分别用于单元格H3、I3和K3

=(LEN(INDEX($B$2:$D$3,MATCH($G3,$A$2:$A$3,0),MATCH(H$1,$B$1:$D$1,0)))-LEN(SUBSTITUTE(INDEX($B$2:$D$3,MATCH($G3,$A$2:$A$3,0),MATCH(H$1,$B$1:$D$1,0)),H$2,"")))/LEN(H$2)

=(LEN(INDEX($B$2:$D$3,MATCH($G3,$A$2:$A$3,0),MATCH(H$1,$B$1:$D$1,0)))-LEN(SUBSTITUTE(INDEX($B$2:$D$3,MATCH($G3,$A$2:$A$3,0),MATCH(H$1,$B$1:$D$1,0)),I$2,"")))/LEN(I$2)

=(LEN(INDEX($B$2:$D$3,MATCH($G3,$A$2:$A$3,0),MATCH(H$1,$B$1:$D$1,0)))-LEN(SUBSTITUTE(INDEX($B$2:$D$3,MATCH($G3,$A$2:$A$3,0),MATCH(H$1,$B$1:$D$1,0)),J$2,"")))/LEN(J$2)
这里是另一个概念证明,扩展范围显示无序的行、要搜索的多个字母字符串以及两个以上的条目。同样的公式,只需根据增加的表格大小调整查找范围


我不熟悉VBA。对不起,我已经创建了一个与我的输出匹配的新表。在该表中,我试图找出如何使用分隔符拆分单元格(如果有),然后使用条件(如果拆分值==“L”)计数。使用宏记录器通常为VBA代码的工作提供了一个良好的起点。下一步可能是阅读记录代码中引用函数的文档。您好,感谢您的努力。我不再要求excel创建新的输出表,而是已经在创建一个表,在L下面,我想写一个公式,查看输入表中对应的单元格,并找到L的计数。。我想在M和H下做同样的事情。@user238021上面的图片做了你想要的吗?