1

我需要帮助为 Excel 2010 (Windows 7) 编写 VBA 脚本。

我有数千个这样的条目:

Data ID Number1 (A1)
Data Article Name1 (A2)
Data ID Number2 (A3)
Data Article Name2 (A4)
Data ID Number 3 (A5)
Data Article Name 3 (A6)
Data ID Number 3 (A7)
Data Article Name 3 (A8)

==============

我需要它看起来像这样:

Data ID Number1 (A1)     Data Article Name1 (B1)
Data ID Number2 (A2)     Data Article Name2 (B2)
Data ID Number 3 (A3)    Data Article Name3 (B3)
Data ID Number 4 (A4)    Data Article Name4 (B4)

我需要能够将其作为一个自动过程来执行,因为我有大量条目。

编辑更改了文章以使其更清晰!

4

3 回答 3

0

这行得通吗?从您的问题中不确定是否要删除包含文章的原始行。

Dim row
Dim lastRow
lastRow = 8

For row = lastRow To 2 Step -1
    If row Mod 2 = 0 Then
        ' copy data
        Cells(row - 1, 2) = Cells(row, 1).Value
        ' delete row
        Cells(row, 1).EntireRow.Delete
    End If
Next
于 2012-11-30T19:21:04.810 回答
0

此宏将遍历 A 列中的所有单元格。如果单元格行是偶数,则该值将移动到 B 列(偏移量为 (-1,1)。然后将单元格添加到一个范围为For 循环完成后删除。

Sub test()

    Dim i As Range
    Dim delrows As Range

    For Each i In Intersect(ActiveSheet.UsedRange, Range("A:A"))
        If (i.Row Mod 2) = 0 Then
            i.Offset(-1, 1).Value = i.Value

            If delrows Is Nothing Then
                Set delrows = i
            Else
                Set delrows = Union(i, delrows)
            End If
        End If
    Next i

    delrows.EntireRow.Delete


End Sub
于 2012-11-30T19:38:19.180 回答
0

这段代码有点简单,但应该可以解决问题

Sub Shift()
'Set to your first value you want shifted. In your example A2.
Range("A2").Select

    Do

        ActiveCell.Cut
        ActiveCell.Offset(-1, 1).Select
        ActiveSheet.Paste
        ActiveCell.Offset(1, -1).Select
        ActiveCell.EntireRow.Select
        ActiveCell.Delete

    ActiveCell.Offset(1, 0).Select

    Loop Until ActiveCell.Value = "" And ActiveCell.Offset(-1, 0).Value = ""
End Sub

祝你有美好的一天!

于 2012-11-30T21:38:29.990 回答