Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.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 2010:使用VBA将单元格从垂直数据移动到水平数据_Vba_Excel_Excel 2010 - Fatal编程技术网

Excel 2010:使用VBA将单元格从垂直数据移动到水平数据

Excel 2010:使用VBA将单元格从垂直数据移动到水平数据,vba,excel,excel-2010,Vba,Excel,Excel 2010,Excel 2010 我想将以下数据从垂直状态移动到水平状态。我想要一个VBA的解决方案。(我已经有了一个公式) 顺序=(A10)结果=(B10)在1000行上运行 | Order1 | result | line1 | result 1 | line2 | result 1 | line3

Excel 2010

我想将以下数据从垂直状态移动到水平状态。我想要一个VBA的解决方案。(我已经有了一个公式)

顺序=(A10)结果=(B10)在1000行上运行

| Order1         | result                                                                       
| line1          | result 1
| line2          | result 1
| line3          | result 1
| line4          | result 1
| line5          | result 1
| line6          | result 1
| line7          | result 1
| line8          | result 1
|      br        |                                                                           
| Order2         | result                                                                   
| line1          | result 1
| line2          | result 1
| line3          | result 1
| line4          | result 1
| line5          | result 1
| line6          | result 1
| line7          | result 1
| line8          | result 1
我希望将其解决为:

Order 1  |  result1  |  result2  |  result3  |  result4  |  result5  |  result6  |  result7  |  result8  |  
Order 2  |  result1  |  result2  |  result3  |  result4  |  result5  |  result6  |  result7  |  result8  |  
提前谢谢

编辑
我目前的公式是: (C10)
=IF(A3=“Order1”,1,0)
(结果:1)
(D10)
=IF($C3=1,B3,0)
(结果:第1行的结果)
(E10)
=IF($C3=1,B10,0)
(结果:第2行的结果)
等等

然后,我复制并自动填充整个数据表,它会填充所有数据。 我用这种方式构建新表

当我进行宏记录时,它不会记录单元格中的实际公式

如果我们从以下内容开始:

如果Sheet1中的订单之间为空白,则此宏:

Sub reorg()
    Dim s1 As Worksheet, s2 As Worksheet, N As Long, i As Long, j As Long, k As Long
    Dim v As Variant
    Set s1 = Sheets("Sheet1")
    Set s2 = Sheets("Sheet2")
    N = s1.Cells(Rows.Count, "A").End(xlUp).Row
    j = 1
    k = 1

    For i = 1 To N
        v = s1.Cells(i, 1).Value
        If v = "" Then
            j = j + 1
            k = 1
        Else
            s2.Cells(j, k) = v
            k = k + 1
        End If
    Next i
End Sub
将在第2页中生成此

编辑#1:

要使用A10作为起点和终点,请使用:

Sub reorg()
    Dim s1 As Worksheet, s2 As Worksheet, N As Long, i As Long, j As Long, k As Long
    Dim v As Variant
    Set s1 = Sheets("Sheet1")
    Set s2 = Sheets("Sheet2")
    N = s1.Cells(Rows.Count, "A").End(xlUp).Row
    j = 10
    k = 1

    For i = 10 To N
        v = s1.Cells(i, 1).Value
        If v = "" Then
            j = j + 1
            k = 1
        Else
            s2.Cells(j, k) = v
            k = k + 1
        End If
    Next i
End Sub

大多数转置答案将两列解析为一行。我需要从pivot(即Order1)获取它,然后将结果移动到它们的新列中。正如我指出的,我确实有一个公式可以做到这一点,但我希望它在VBA中。我已经看了好几天了。Excel可以使用“复制”和“粘贴特殊…”转换表格。这两个命令在VBAI中也应该可用:我是个白痴:)(耗尽)我复制了错误的列数据-您的代码工作正常,但我需要输入
v=s1.Cells(I,2).Value
而不是
1
。你的答案很完美,谢谢。:)非常感谢。我计划将其与一个VBA代码段配对,该代码段可以移动列,以便将其滑入以匹配书中已有的其他数据。这帮我节省了很多时间,谢谢。很抱歉让我很痛苦。有没有办法在A10上启动流程并将其粘贴到下一页的A10上?我曾尝试在
N=s1.Cells(Rows.Count,“A”).End(xlUp).Row
(&关联的其他)中使用A10,但我不断收到调试错误。我的数据从第10行开始&它将选择我的所有标题:D@MrsAdmin见我的编辑#1