簡體   English   中英

通過分隔符按計數 excel 添加數字來拆分和連接字符串

[英]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

如果有 Excel O365,(或 Excel 2019 對以下公式進行了一些小補充),您還可以使用:

=TEXTJOIN(", ",,SEQUENCE(LEN(A1)-LEN(SUBSTITUTE(A1,"x",""))+1)&"-"&FILTERXML("<t><s>"&SUBSTITUTE(A1,"x","</s><s>")&"</s></t>","//s"))

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM