[英]excel macro: for each cell with a value in a row, insert a row below with that value
我有一個包含約700行和7列的工作表。 我需要每一行只有一個條目。 即,如果第1行在A,B和C列中具有單元格值,則應創建兩個新行,因此第1行在A列中具有一個值,第2行在B列中具有一個值,而第3行在C列中具有一個值。
我為此花了幾個小時(可悲),但是我很糟糕,我什么都沒得到:
Sub TThis()
Dim rng As Range
Dim row As Range
Dim cell As Range
'just testing with a basic range
Set rng = Range("A1:C2")
For Each row In rng.Rows
For Each cell In row.Cells
If cell.Value <> "" Then
'write to adjacent cell
Set nextcell = cell.Offset(1, 0)
nextcell.Value = cell.Value
nextcell.EntireRow.Insert
End If
Next cell
Next row
End Sub
我的問題是這段代碼刪除了它下面的行(這沒有發生),並且插入了兩行而不是一行。
萬分感謝!
我會將您的數據讀入數組,刪除工作表上的數據,然后在單列中寫回工作表(同時檢查空白)
例:
Sub OneColumnData()
Dim rng As Range, ids As Range, arr() As Variant, rw As Integer, col As Integer, counter As Integer
Set rng = Range("A1:C5")
Set ID = Range("G1:G5")
arr = rng.Value
counter = 1
rng.ClearContents
For rw = 1 To UBound(arr, 1)
For col = 1 To UBound(arr, 2)
If arr(rw, col) <> vbNullString Then
Range("A" & counter) = arr(rw, col)
Range("B" & counter) = ID(rw)
counter = counter + 1
End If
Next col
Next rw
End Sub
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.