分割和join一个string的分隔符添加一个数字作为每Excel的计数

我有成千上万的Excel单元格

15x30x30

12x5x16x25x52

每个数字是产品每个个性化所允许的最大字符数。

所以第一个是15个,30个和30个3个人化,其次是12个,5个,16个,25个和52个5个个性化。

我想把上面的内容改成这个

1-12, 2-30, 3-30

工作表中的每个产品正在转换为csv上传我想使用标签来确定需要多less个表单字段的最大长度,但是我不能使用相同的标签两次。 前置号码根据计数递增

如果没有这个,它将使用相同的标签两次,而不是由上传网站完成12,30,30。

但是我不知道VBA和有限的function知识

例如

我可以计算出有多less个项目分隔的项目如下:

=LEN(A2)-LEN(SUBSTITUTE(A2,"x",""))+1结果为3

我也可以使用替代函数用逗号代替x,但是我怎么能如下所示:

  • 分裂
  • 添加增量
  • 重新join

什么是实现这个目标的最好方法? 在单元格中的function? 一个VBA函数 如果有的话可以有人给我一个初学者或几个function来看看我是一个PHP程序员,所以可以学习新的代码,如果需要

我的PHP我将string拆分到数组。 。 。用数组增加数组中的每个值,然后再次作为一个string连接,但我怎么能在Excel中做类似。 任何帮助,将不胜感激

如果您有Office 365 Excel,则可以将TEXTJOIN用作数组公式:

 =TEXTJOIN(", ",TRUE,ROW(INDIRECT("1:" & LEN(A1)-LEN(SUBSTITUTE(A1,"x",""))+1)) & "-" & TRIM(MID(SUBSTITUTE(A1,"x",REPT(" ",999)),(ROW(INDIRECT("1:" & LEN(A1)-LEN(SUBSTITUTE(A1,"x",""))+1)) -1)*999+1,999))) 

作为一个数组公式,在退出编辑模式时,需要使用Ctrl-Shfit-Enter而不是Enter来确认。

在这里输入图像说明


如果您没有Office 365 Excel,则可以将此代码放在附加到工作簿的模块中,并使用上述公式。

 Function TEXTJOIN(delim As String, skipblank As Boolean, arr) Dim d As Long Dim c As Long Dim arr2() Dim t As Long, y As Long t = -1 y = -1 If TypeName(arr) = "Range" Then arr2 = arr.Value Else arr2 = arr End If On Error Resume Next t = UBound(arr2, 2) y = UBound(arr2, 1) On Error GoTo 0 If t >= 0 And y >= 0 Then For c = LBound(arr2, 1) To UBound(arr2, 1) For d = LBound(arr2, 1) To UBound(arr2, 2) If arr2(c, d) <> "" Or Not skipblank Then TEXTJOIN = TEXTJOIN & arr2(c, d) & delim End If Next d Next c Else For c = LBound(arr2) To UBound(arr2) If arr2(c) <> "" Or Not skipblank Then TEXTJOIN = TEXTJOIN & arr2(c) & delim End If Next c End If TEXTJOIN = Left(TEXTJOIN, Len(TEXTJOIN) - Len(delim)) End Function