簡體   English   中英

excel宏:對於在一行中具有值的每個單元格,在該值下方插入一行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM