分割单个单元格的文本,并将其用作未使用VBA的validation列表的源代码

林尝试了几个小时已经将文本单元格分成一个可用的对象validation列表。

今天的单元格填充了3个或更多(N)逗号(我可以将其改为分号,pipe道…)分隔值,如“1,2,3”或“5,test,8,new”

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

在下面的文章中有一个公式将string拆分成数组,但我没有设法将它用作源代码: 在没有VBA的Excel中拆分一个string(单元格)(例如,对于数组公式)

是否可以创build一个dynamic范围从分割单元格文本,并将其提供到一个“combobox”(validation列表)。

另一个类似的例子,我正在寻找,但没有VBA: Exceldynamic下拉使用逗号分隔数据

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

你可以这样做

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

以{1,99,198,297,…}的顺序返回一个数组

创build一个定义的名称公式:(公式 – >定义名称)

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就足够了。

在这里输入图像说明

接下来,创builddynamic命名公式来引用每个包含数据的列表部分。

例:

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

使用指定的公式将DataValidation单元格格式化为List:

在这里输入图像说明

该列performance在将显示非空白条目。

可以用Find来制定这个。 要拆分单元格“A1”中的文本,公式将是:

  • 第一部分 – 细胞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)

然后列表validation可能被添加到单元格E1,范围B1:D1 在这里输入图像说明