繁体   English   中英

拆分单个单元格的文本,并将其用作没有VBA的验证列表的源

[英]Splitting the text of a single cell and using it as source for a validation list without VBA

我已经尝试了几个小时,将一个文本单元格拆分成一个可用的对象到验证列表。

今天的单元格由3个或更多(N)逗号填充(我可以将其更改为分号,管道...),这些分隔的值应为“ 1,2,3”或“ 5,test,8,new”

我想将其转换为具有N个不同值的验证列表。

在下面的文章中,有一个公式可以将字符串拆分为and数组,但是我没有设法将其用作源: 在没有VBA的Excel中拆分字符串(单元格)(例如,用于数组公式)

是否可以通过拆分单元格文本并将其馈入“组合框”(验证列表)来创建动态范围。

我正在寻找但没有VBA的另一个类似示例: 使用逗号分隔数据的Excel动态下拉菜单

我在这里做错了什么? 感谢您阅读本文。

可以使用Find来表述。 要拆分单元格“ A1”中的文本,公式将为:

  • 1 的部分-细胞B1式:
    =LEFT(A1,FIND(",",A1)-1)
  • 第二部分-单元格C1公式:
    =MID(A1,FIND(",",A1)+1,FIND(",",A1,FIND(",",A1)+1)-FIND(",",A1)-1)
  • 第三部分-单元格D1公式:
    =MID(A1,FIND(",",A1,FIND(",",A1)+1)+1,999999)

然后可以将列表验证添加到单元格E1中,范围为B1:D1 在此处输入图片说明

你可以这样做

  • 使用公式将逗号分隔的列表分解为单独的单元格
  • 然后使用动态范围名称来引用DV列表

返回{1,99,198,297,...}序列中的数组

创建定义的名称公式:(公式->定义名称)

seq_99   Refers To: =IF(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))=1,1,(ROW(INDEX($1:$65535,1,1):INDEX($1:$65535,255,1))-1)*99)

与您的列表在某些工作表上的第1行中,使用以下公式:

A2: =INDEX(TRIM(MID(SUBSTITUTE(A$1,",",REPT(" ",99)),seq_99,99)),ROWS($1:1))

并根据需要填写,以说明您的最长列表。 我认为A2:A10就足够了。

在此处输入图片说明

接下来,创建动态命名公式以仅引用每个列表中包含数据的部分。

例:

dvList1 Refers to:  =OFFSET(Sheet2!$A$1,1,0,COUNTA(Sheet2!$A$1:$A$10)-COUNTBLANK(Sheet2!$A$1:$A$10)-1)

使用命名公式将DataValidation单元格格式化为列表:

在此处输入图片说明

现在,列表将显示非空白条目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM