Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.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,我有一张表格,上面列出了如下工作费用: COL A COL B CB100 $100 CB101 $200 CB100, CB101 $50 D列中的几列是每个作业的运行列表#: 我试图使用数据验证来确保输入到A列的任何作业已经存在于D列中。这似乎不能通过验证标准的列表格式来完成。有没有办法通过自定义公式进行此操作?使用此自定义公式 =SUMPRODUCT(--ISNUMBER(MATCH(TRIM(MID(SUBSTI

我有一张表格,上面列出了如下工作费用:

COL A            COL B
CB100            $100
CB101            $200
CB100, CB101     $50
D列中的几列是每个作业的运行列表#:


我试图使用数据验证来确保输入到A列的任何作业已经存在于D列中。这似乎不能通过验证标准的列表格式来完成。有没有办法通过自定义公式进行此操作?

使用此自定义公式

=SUMPRODUCT(--ISNUMBER(MATCH(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($1:$10)-1)*99+1,99)),D:D,0)))>=LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1

注意,数据验证应用于整个列A。正如您所看到的,允许输入前两列,但最后一列不允许,因为它不在列表中


按原样,它只测试逗号分隔字段中的前10个数字。

您在一个单元格中输入的作业不止一个?您希望如何通过数据验证做到这一点?如果不是通过列表格式,您希望如何得知D列中是否存在此项?到目前为止,你能详细说明一下,并展示一下你的自定义配方吗?这很有效,但有一点需要注意。似乎如果用户输入“CB101”(以空格开头)作为作业,它将注册为有效文本。但是,由于空间原因,VLOOKUP或SUMIF将跳过此条目。有什么方法可以调整作业开始时的空格也变得无效吗?没有,因为如果用户在
和下一个代码之间放置空格会怎么样?而您的SUMIF/VLOOKUP由于倍数的原因将需要使用通配符,因此会被找到。
=SUMPRODUCT(--ISNUMBER(MATCH(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($1:$10)-1)*99+1,99)),D:D,0)))>=LEN(A1)-LEN(SUBSTITUTE(A1,",",""))+1