基本上我正在使用 TextToColumns 函数来分离在同一单元格中用分号分隔的数据。问题是有 2 列数据需要完成此功能,我必须在不覆盖的情况下插入数据。
(轻松一点,第一次使用 VBA 和 excel)这是我目前拥有的:
Sub Button1_Click()
Dim rng As Range
Dim sh As Worksheet
Set sh = Worksheets("Sheet1")
With sh
Set rng = .[Q1]
Set rng = .Range(rng, .Cells(.Rows.Count, rng.Column).End(xlUp))
num = Application.WorksheetFunction.Max(Columns("P"))
rng.Offset(0, 1).Resize(1, num).EntireColumn.Insert
rng.TextToColumns Destination:=rng, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
End With
Set sh2 = Worksheets("Sheet1")
With sh2
num2 = Application.WorksheetFunction.Max(Columns("P"))
Dim lastColumn As Integer
lastColumn = ActiveSheet.UsedRange.Column - 1 + ActiveSheet.UsedRange.Columns.Count
MsgBox Replace(Cells(1, lastColumn).Address(False, False), "1", "")
MsgBox lastColumn
Set rng = .[W1]
Set rng = .Range(rng, .Cells(.Rows.Count, rng.Column).End(xlUp))
rng.TextToColumns Destination:=rng, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, _
FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1)), TrailingMinusNumbers:=True
End With
End Sub
好的,所以我要修复的是在第二部分中将 rng 手动设置为 W1。rng 需要是下一个空列。所以使用 MsgBox 的 lastColumn 确实返回列“W”,但我无法将其设置为 rng(类型不匹配)。哦,num变量设置为我需要插入的列数。我的数据如下所示:
计数 | 带有 ; 的列 数据需要分离 | 带有 ; 的列 数据需要分离
5 | 分号隔开的5组数据| 不在乎,因为这是工作表的结尾
有没有更简单的方法来做到这一点?我什至接近吗?