簡體   English   中英

將單元格復制並粘貼到VBA循環下面的行中

[英]Copy and Paste Cell into row below VBA Loop

我正在嘗試創建VBA代碼,將B列中的數據復制並粘貼到A列的正下方。我沒有很好的VBA經驗,所以我很難創建這樣的代碼。

我想創建一個代碼,循環訪問列A和B中的整個數據集,如附圖所示。 在此輸入圖像描述

例如,B3將被粘貼到A4中。 B5會被粘貼到A6中。 一直到列表完成為止。

感謝您的任何幫助!

這是一個簡單的例子,可以滿足您的要求。

For i = 2 To 10
If Range("A" & i) > "" And Range("A" & i + 1) = "" Then
    Range("B" & i).Cut
    Range("A" & i + 1).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
Else
    End If
Next

根據您的數據的樣子,您可能希望為“i”的值設置更動態的內容。

使用來自https://stackoverflow.com/a/71296/42346的 LastRowIndex查找最后一行,然后遍歷第2列中的行,將值放在當前行下一行的第1列中。

Sub iterate()
    Dim r As Long
    Dim c As Long
    Dim endrow As Long

    c = 2
    endrow = LastRowIndex(ActiveSheet, c)
    For r = 2 To endrow Step 1
        If ActiveSheet.Cells(r, c).Value <> "" Then
             ActiveSheet.Cells(r + 1, c - 1).Value = ActiveSheet.Cells(r, c).Value
        End If
    Next r
End Sub

Function LastRowIndex(ByVal w As Worksheet, ByVal col As Variant) As Long
  Dim r As Range

  Set r = Application.Intersect(w.UsedRange, w.Columns(col))
  If Not r Is Nothing Then
    Set r = r.Cells(r.Cells.Count)

    If IsEmpty(r.Value) Then
      LastRowIndex = r.End(xlUp).Row
    Else
      LastRowIndex = r.Row
    End If
  End If
End Function

以下代碼非常適合您的標准。

rowNum = 3
Do While Trim(Range("A" & rowNum).Value) <> ""
   Range("A" & (rowNum + 1)).Value = Range("B" & rowNum).Value
   rowNum = rowNum + 2
Loop

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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