3

您好,首先让我说声谢谢!

我使用 Excel 来捕获用户需求和描述。然后,我将这些信息清理干净并粘贴到演示文档中,应用格式设置,粘贴到 Powerpoint 等。总共可以完成 100 行。我正在寻找的是一个宏,一旦将其粘贴到 Excel 中,我就可以将其应用于数据。数据将是文本,非数字

我有一个宏,我用它来插入一个空白行作为每隔一行。然后我手动执行其他所有操作(如下所示的宏)。

我正在寻找的是一个插入空白行的宏,然后将第 2 列向下偏移 1 行。然后将第 1 列粘贴到第 2 列(不将空白单元格复制到第 2 列中我已经存在的数据上)。

我已经粘贴了一个链接,指向我正在寻找的图像。我还尝试在下面显示(数字是第 1 列,字母是第 2 列)。

2 列到 1 列 - 所需的结果

1 A
2 B
3 C

我想要的结果:

1
A
2
B
3
C

我当前的“空白行”宏:

Sub insertrow()
' insertrow Macro

Application.ScreenUpdating = True
Dim count As Integer
Dim X As Integer

For count = 1 To 300
If ActiveCell.Value <> "" Then
ActiveCell.Offset(1, 0).Select
Range(ActiveCell, ActiveCell.Offset(0, 0)).EntireRow.Insert
ActiveCell.Offset(1, 0).Select
For X = 1 To 1
Next X
Else
ActiveCell.Offset(1, 0).Range("a1").Select
End If
Next count

End Sub
4

2 回答 2

2

这应该可以,但是您必须根据您的确切布局和需求进行一些调整。

Sub mergeColumns()
    Dim mergedData As Variant
    ReDim mergedData(1 To 600)
    dataToProcess = Range("A2:B301")
    For i = 1 To 300
        mergedData(i * 2 - 1) = dataToProcess(i, 1)
        mergedData(i * 2) = dataToProcess(i, 2)
    Next i
    Range("B2:B601") = WorksheetFunction.Transpose(mergedData)
End Sub
于 2013-07-08T19:27:12.437 回答
0

以下内容无需插入空白行即可满足您的需求。它还计算工作表上的最后一行有 2 列,这样您就不需要在循环结束时进行硬编码。

这些评论应该可以帮助您了解每一步都发生了什么。然后,您可以修改它以使用您的特定工作簿。有很多方法可以解决这个问题。我选择将旋转后的结果放在第二张纸上。

Sub PivotTwoColumnsIntoOne()
    Dim wb As Workbook
    Dim src As Worksheet
    Dim tgt As Worksheet
    Dim rng As Range
    Dim cell As Range
    Dim lastRow As Long
    Dim targetRow As Long

    Set wb = ThisWorkbook
    ' set our source worksheet
    Set src = wb.Sheets("Sheet1")
    ' set our target sheet (where the single column will be)
    Set tgt = wb.Sheets("Sheet2")
    ' get the last row on our target sheet
    lastRow = src.Range("A" & src.Rows.Count).End(xlUp).Row
    ' set the starting point for our target sheet
    targetRow = 1

    Set rng = src.Range("A1:A" & lastRow)

    For Each cell In rng
        With tgt.Range("A" & targetRow)
            ' get the value from the first column
            .Value = cell.Value
            ' get the value from the second column
            .Offset(1).Value = cell.Offset(, 1).Value
            .HorizontalAlignment = xlLeft
        End With
        targetRow = targetRow + 2
    Next cell
End Sub
于 2013-07-08T19:55:16.043 回答