Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel:需要宏-2列数据变为1列“;每隔;_Excel_Excel 2010_Multiple Columns_Vba - Fatal编程技术网

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

Excel:需要宏-2列数据变为1列“;每隔;,excel,excel-2010,multiple-columns,vba,Excel,Excel 2010,Multiple Columns,Vba,你好,首先让我说声谢谢 我使用Excel捕获用户需求和描述。然后,我将这些信息清理干净,粘贴到演示文稿文档中,应用格式,粘贴到Powerpoint中,等等。这样做总共可能需要100行。我要找的是一个宏,一旦数据粘贴到Excel中,我就可以应用它。数据将是文本,非数字 我有一个宏,我用它插入一个空行作为每隔一行。然后我手动执行所有其他操作(如下所示的宏) 我要找的是一个宏,它插入一个空行,然后将第2列向下偏移1行。然后将列1粘贴到列2(不复制空白单元格,而不在列2中复制我已经存在的数据)。p> 我

你好,首先让我说声谢谢

我使用Excel捕获用户需求和描述。然后,我将这些信息清理干净,粘贴到演示文稿文档中,应用格式,粘贴到Powerpoint中,等等。这样做总共可能需要100行。我要找的是一个宏,一旦数据粘贴到Excel中,我就可以应用它。数据将是文本,非数字

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

我要找的是一个宏,它插入一个空行,然后将第2列向下偏移1行。然后将列1粘贴到列2(不复制空白单元格,而不在列2中复制我已经存在的数据)。p> 我粘贴了一个链接到我正在寻找的图像。我也试着在下面展示(数字是第1列,字母是第2列)

1a
2b
3c

我想要的结果是:

1
A
2
B
3
C

我当前的“空行”宏:

子插入行()
'插入行宏
Application.ScreenUpdating=True
将计数设置为整数
作为整数的Dim X
对于计数=1到300
如果ActiveCell.Value为“”,则
ActiveCell.Offset(1,0)。选择
范围(ActiveCell,ActiveCell.Offset(0,0)).EntireRow.Insert
ActiveCell.Offset(1,0)。选择
对于X=1:1
下一个X
其他的
ActiveCell.Offset(1,0).范围(“a1”).选择
如果结束
下一次计数
端接头

这应该行得通,但您必须根据您的确切布局和需要进行一些调整

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列的工作表上的最后一行是什么,这样您就不需要硬编码循环何时结束

这些评论应该有助于您了解每一步的进展情况。然后,您可以修改它以使用特定工作簿。你有很多方法可以做到这一点。我选择将数据透视结果放在第二张纸上

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

啊!!就是这样!这正是我想要的。非常感谢。我希望其他人也能发现这一点——从数据友好型到视觉吸引力的转变实在是太大了。非常感谢你!我刚刚发现了这个,根据我的需要对它进行了修改(需要在最左边的每一列下插入多个列,所以需要插入多行而不是一行)。节省了大量的时间和精力。谢谢。餐饮部负责人-这也是一个很好的解决方案!!,我喜欢把结果写在第二页的想法。最初它给了我一个bug,但这是一个简单的修复-工作簿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