首页 > 解决方案 > 我需要使用 vba 根据分隔符值将单元格值拆分为不同的单元格

问题描述

我有一个 excel,它作为单个单元格中的一条长线(例如在 Sheet1 中的“A1”中),我需要拆分这个单个单元格并粘贴到 Sheet1 本身的不同连续单元格中的单元格 A1,A2,A3 中。 , 很快。但挑战是我在另一张表(Sheet2)中有分隔符值。

Sheet1 中的单个单元格(“A1”)行是,

2012-06-02-13.01.29.64179044558000358307267 CAB2019012018 12345612345678场景1 0000000000000000000000000000000000DoeNN

并且分隔符在 Sheet2 中(分隔符值在不同的连续单元格中),

4(A1),5(A2),6(A3),2(A4),3(A5),5(A6),6(A7),1(A8),5(A9),7(A10), 5(A11),9(A12)

我尝试使用以下代码,

Sub split_work()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim cell_value As Variant
Dim counter As Integer
Dim WrdArray() As String

Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")

With ws1
    str = ws1.Cells(i, j).Value
    MStr = ws2.Cells(Lengthrow, j).Value
    'MStr = Left(str, MStr)

''These lines is to extract only the value from the cells in Sheet2 as a delimiter value, for example val=4, then we are extracting only 4 as delimiters,
    MStr = Cells(Lengthrow, j).Value
    MStr1 = InStrRev(MStr, "=")
    Length = Len(MStr)
    Mstr = Right(MStr, Length - MStr1)


For Each Item In WrdArray
    ThisWorkbook.ActiveSheet.Cells(counter, 2).Value = Item
    counter = counter + 1
Next Item

End with

End sub

请在这件事上给予我帮助!

标签: vbaexcelexcel-formula

解决方案


我认为这样的事情可能对你有用。

Sub split_work()
Dim ws1 As Worksheet
Dim ws2 As Worksheet
Dim pStr As String
Dim delimiter As String
Dim counter As Integer
Dim lStr As Integer

Set ws1 = Sheets("Sheet1")
Set ws2 = Sheets("Sheet2")

pStr = ws1.Range("A1")
delimiter = ws2.Range("A1")
counter = 0

Do While delimiter <> ""
dpos = InStr(pStr, delimiter)
ws1.Range("A1").Offset(counter, 1) = Left(pStr, dpos)
lStr = Len(pStr)
pStr = Right(pStr, lStr - dpos)
counter = counter + 1
delimiter = ws2.Range("A1").Offset(counter, 0)
Loop

If pStr <> "" Then
ws1.Range("A1").Offset(counter, 1) = pStr
End If

End Sub

我不确定您是否使用这些值作为分隔符或位置来拆分字符串。我假设您想要在代码找到该子字符串时拆分字符串。

另外,您想在字符串中包含还是排除该值?在上面的代码中,我已经包含了该值,请在您的问题中提供更多信息,以便我可以更好地回答您的问题。


推荐阅读