Vba 在不同单元格中使用相似的起始字母分隔数据
我在单元格A1中有以下数据-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 |
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)