我需要使用vba根据分隔符值将单元格值拆分为不同的单元格

时间:2018-06-22 21:53:21

标签: excel vba excel-vba excel-formula

我有一个excel,它是单个单元格中的长行(例如,Sheet1中的“ A1”中的一行),我需要拆分此单个单元格,并将其粘贴到Sheet1自身的不同连续单元格中的单元格A1,A2中,A3。,依此类推。但挑战在于,我在另一张图纸(Sheet2)中有定界符值。

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

2012-06-02-13.01.29.64179044558000358307267 CAB2019012018 12345612345678方案1 0000000000000000000000000000000000000000DoeNN

分隔符位于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

请帮助我!

1 个答案:

答案 0 :(得分:1)

我认为类似这样的方法可能对您有用。

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

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

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

相关问题