首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Excel:需要宏-2列数据变为1列“每隔一列”

Excel:需要宏-2列数据变为1列“每隔一列”
EN

Stack Overflow用户
提问于 2013-07-09 02:50:26
回答 2查看 1.8K关注 0票数 3

大家好,首先让我说声谢谢!

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

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

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

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

2 columns to 1 column - desired result

1个A

2亿

3 C

我想要的结果是:

1

一个

2

B

3.

C

我当前的“空白行”宏:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-09 03:55:16

下面不需要插入空行就可以完成所需的操作。它还计算有2列的工作表上的最后一行,这样您就不需要硬编码循环何时结束。

这些评论应该能帮助你理解每一步都在发生什么。然后,您可以对其进行修改以使用您的特定工作簿。你有很多方法可以做到这一点。我选择将旋转后的结果放在第二张纸上。

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2013-07-09 03:27:12

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

代码语言:javascript
复制
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
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17533880

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档