我有兩列正文在Excel中的cols A和B.發現山坳中的非空單元格並移動內容列B
我需要一個函數或VB代碼要經過每個單元中柱A,找到一個非空的單元格,例如A21,並將該單元格的內容移至B22。
然後繼續從A23開始搜索。
col A中帶有數據的行數可能是幾千條。
我該如何解決這個問題?
感謝您的幫助。
我有兩列正文在Excel中的cols A和B.發現山坳中的非空單元格並移動內容列B
我需要一個函數或VB代碼要經過每個單元中柱A,找到一個非空的單元格,例如A21,並將該單元格的內容移至B22。
然後繼續從A23開始搜索。
col A中帶有數據的行數可能是幾千條。
我該如何解決這個問題?
感謝您的幫助。
試試這個:
Sub test()
Dim lastrow As Integer
lastrow = ActiveSheet.Cells(ActiveSheet.Rows.Count, "A").End(xlUp).Row
Range("A1").Select
While ActiveCell.Row <= lastrow
If ActiveCell.Value = "" Then
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 1).Value = ActiveCell.Value
ActiveCell.Offset(2, 0).Select
End If
Wend
Range("A1").Select
End Sub
結果是這樣的:
您可以通過編寫VBA代碼
Sub moveColAToColB()
Dim currentSheet As Worksheet
Set currentSheet = Sheets("Sheet1")
Dim l As Long
With currentSheet
For l = 1 To .Rows.Count
If Not IsEmpty(.Cells(l, 1).Value) Then
.Cells(l, 2).Value = .Cells(l, 1).Value
End If
Next l
End With
End Sub
編輯解決這個問題:我還以爲你在你的描述有誤,但我不認爲你不能做的簡單的代碼的簡單修改...
Sub moveColAToColB()
Dim currentSheet As Worksheet
Set currentSheet = Sheets("Sheet1")
Dim l As Long
With currentSheet
For l = 1 To .Rows.Count
If Not IsEmpty(.Cells(l, 1).Value) Then
.Cells(l + 1, 2).Value = .Cells(l, 1).Value
l = l + 1
End If
Next l
End With
End Sub
見代碼:
Sub MoveCellsFromColATOColB()
For x = 21 To ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row ' here is the start range declared also used range
Cells(x + 1, "B").Value = Cells(x, "A").Value
Next x
End Sub
問候
丹尼爾
嗨丹尼爾,你的代碼接近解決方案,但你有效地將A2移動到B3,這不是我正在尋找的。我需要將A1移動到B2,但將A2留在原地。然後繼續在列A中搜索,直到它遇到A4中的文本,將其移至B5,依此類推。 – ioio
哦!我錯過了什麼? –
你也可以採取公式路線,並把它放在單元格B2中並填寫:'= IF(AND(A1 <>「」,B1 =「」),A1,「」)' –