我有一个棘手的情况。我有只有标题的列A和列B包含文本。现在我想让列B中的文本从列A开始。如果列A中有文本,则B将始终为空。Excel VBA - 合并
A B
Title 1
Text 1
Text 2
Title 2
Text 1
Text 2
我怎么能得到它,所以列B中的文本放在列A.范围设置,直到找到一个完整的空行。 (A1到S1在单元格中没有值=空行) 我在考虑合并单元格,但这可能并不整齐。
我有一个棘手的情况。我有只有标题的列A和列B包含文本。现在我想让列B中的文本从列A开始。如果列A中有文本,则B将始终为空。Excel VBA - 合并
A B
Title 1
Text 1
Text 2
Title 2
Text 1
Text 2
我怎么能得到它,所以列B中的文本放在列A.范围设置,直到找到一个完整的空行。 (A1到S1在单元格中没有值=空行) 我在考虑合并单元格,但这可能并不整齐。
是否这样?这使用合并,并考虑到A和B都填满了。
Sub Sample()
Dim ws As Worksheet
Dim LastRow As Long
Set ws = Sheets("Sheet5")
With ws
LastRow = .Range("B" & .Rows.Count).End(xlUp).Row
For i = 1 To LastRow
If Application.WorksheetFunction.CountA(.Range("A" & i & ":" & "B" & i)) = 1 And _
Len(Trim(.Range("A" & i).Value)) = 0 Then
With .Range("A" & i & ":" & "B" & i)
.Merge
End With
End If
Next i
End With
End Sub
跟进
如果你不想合并和A将一直保持为空时,有在B的值那么我们可以从色柱B值移入柱A这样
Sub Sample()
Dim ws As Worksheet
Dim LastRow As Long
Set ws = Sheets("Sheet5")
With ws
LastRow = .Range("B" & .Rows.Count).End(xlUp).Row
For i = 1 To LastRow
If Len(Trim(.Range("A" & i).Value)) = 0 Then
.Range("A" & i).Value = .Range("B" & i).Value
.Range("B" & i).ClearContents
End If
Next i
End With
End Sub
所以LASTROW在B的第一行是完全空的? (A到S)你似乎合并了A和B,但是如果我想将值剪切/粘贴到A中,那会是怎样呢? – CustomX 2012-02-21 16:25:51
没有lastrow是列B中非空的最后一行,用您最近的请求更新代码。 – 2012-02-21 16:26:56
你不想要“S”,因为你打算从“B”而不是“S”移动价值。假设“S”直到第100行,“B”直到第15行,然后没有点循环到100,因为从B16到B100的单元将为空。 – 2012-02-21 16:38:05
[你尝试过什么?(http://mattgemmell.com/2008/12/08/what-have-you-tried/) – 2012-02-21 16:45:00