[英]Split and join a string by delimiter adding a number as per count excel
我在数千个 excel 单元格中有这个
15x30x30
12x5x16x25x52
每个数字是产品上每个个性化所允许的最大字符数。
所以第一个是 15、30 和 30 的 3 个个性化,第二个是 12、5、16、25 和 52 的 5 个个性化。
我想把上面的改成这个
1-12, 2-30, 3-30
工作表中的每个产品都被转换为 csv 以进行上传我想使用标签来确定需要多少个最大长度的表单字段,但是我不能两次使用相同的标签。 前置数字根据计数递增
如果没有这个,将是 12,30,30 两次使用相同的标签,这是上传网站无法完成的。
但我对 VBA 一无所知,对函数的了解也有限
例如
我可以计算按分隔符拆分的项目数量如下:
=LEN(A2)-LEN(SUBSTITUTE(A2,"x",""))+1
结果是 3
我也可以使用替代函数用逗号替换 x 但我怎么做如下:
实现这一目标的最佳方法是什么? 单元格中的函数??? VBA 函数??? 如果可以的话,有人可以给我一个入门或一些函数来看看我是一名 php 程序员,所以可以在需要时学习新代码
我 php 我会将字符串拆分为数组。 . . 将数组中的每个值加上增量,然后再次作为字符串加入,但我如何在 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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.