Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在不同单元格中使用相似的起始字母分隔数据_Vba_Excel - Fatal编程技术网

Vba 在不同单元格中使用相似的起始字母分隔数据

Vba 在不同单元格中使用相似的起始字母分隔数据,vba,excel,Vba,Excel,我在单元格A1中有以下数据- EP10101010 | EP202020 | EP300005 | US789456 | US876543 | NZ90876 | LP98789 | LP88888 我希望将以相同字符(例如EP)开头的值分隔并分组到一个单元格中 期望输出: Cell A2 - EP10101010 | EP202020 | EP300005 Cell A3 - US789456 | US876543 Cell A4 - NZ90876 Cell A5 - LP98789 |

我在单元格A1中有以下数据-

EP10101010 | EP202020 | EP300005 | US789456 | US876543 | NZ90876 | LP98789 | LP88888
我希望将以相同字符(例如EP)开头的值分隔并分组到一个单元格中

期望输出:

Cell A2 - EP10101010 | EP202020 | EP300005 
Cell A3 - US789456 | US876543
Cell A4 - NZ90876
Cell A5 - LP98789 | LP88888
你可以试试这个:

Sub main()
    Dim strng As Variant, strngs As Variant
    Dim lastStrngID As String, resStrng As String
    Dim rowIndex As Long

    strngs = Split(Replace(Range("A1"), " ", ""), "|")
    rowIndex = 2
    lastStrngID = Left(strngs(0), 2)
    For Each strng In strngs
        If Left(strng, 2) <> lastStrngID Then
            Cells(rowIndex, 1).Value = Left(resStrng, Len(resStrng) - 1)
            rowIndex = rowIndex + 1
            lastStrngID = Left(strng, 2)
            resStrng = strng & " | "
        Else
            resStrng = resStrng & strng & "|"
        End If
    Next
    Cells(rowIndex, 1).Value = Left(resStrng, Len(resStrng) - 1)
End Sub
我有这个密码:

Public Function SplitStart(start As String, text As String) As String
Dim splitString() As String
Dim st As Variant
Dim returnstring As String
Dim i As Integer
Dim trimmed As String


splitString = Split(text, " | ")
returnstring = ""

For Each st In splitString
    trimmed = Trim(st)
    If Left(trimmed, Len(start)) = start Then
        If returnstring <> "" Then
            returnstring = returnstring + " | "
        End If
        returnstring = returnstring + trimmed
    End If
Next

SplitStart = returnstring
End Function

例如,在A2中,您能告诉我如何将值保存在单元格B2、B3、B4中,而不是A2、A3和A4中。是的,当然可以。我找不到被接受的按钮。请帮我找到这个,已经搞定了。再次感谢。此外,您可以告诉我如何保存单元格B1、C1、D1中的值而不是A2、A3和A4中的值。此外,您可以告诉我如何保存单元格B1、C1、D1中的值而不是A2、A3和A4中的值。
Public Function SplitStart(start As String, text As String) As String
Dim splitString() As String
Dim st As Variant
Dim returnstring As String
Dim i As Integer
Dim trimmed As String


splitString = Split(text, " | ")
returnstring = ""

For Each st In splitString
    trimmed = Trim(st)
    If Left(trimmed, Len(start)) = start Then
        If returnstring <> "" Then
            returnstring = returnstring + " | "
        End If
        returnstring = returnstring + trimmed
    End If
Next

SplitStart = returnstring
End Function
=splitstart("EP";A1)