2014-02-13 17 views
-1

我看无论是通过宏或VBA具有以下结构转换为Excel的Excel将列/行与行

1 | X | X | X | X | X 
2 | Y | Y |  
3 | Y | Y | 
4 | X | X | X | X | X 
5 | Y | Y |  
6 | Y | Y |   

我需要将其更改为以下格式

1 | X | X | X | X | Y | Y | Y | Y | 
2 | X | X | X | X | Y | Y | Y | Y | 

将需要循环下来的Excel文件,并做到多列/行。

任何建议我会怎么做?

由于

+0

一个例子可能不足以传达您的要求,是否有任何布局变化的规则? – pnuts

回答

0

如果格式是完全一样在您的示例示出并且将不会改变,并且位于表1的单元格A1开始:从比其他任何空片

Sub doFormatData() 
Dim shtIn As Worksheet 
Dim shtOut As Worksheet 
Dim rIn As Long 
Dim rOut As Long 
Dim c As Long 

Set shtIn = Sheets("Sheet1") 
Set shtOut = ActiveSheet 
rIn = 1 
rOut = 1 

Do 
    For c = 1 To 4 
     shtOut.Cells(rOut, c).Value = shtIn.Cells(rIn, c).Value 
    Next c 
    For c = 5 To 6 
     shtOut.Cells(rOut, c).Value = shtIn.Cells(rIn + 1, c - 4).Value 
    Next c 
    For c = 7 To 8 
     shtOut.Cells(rOut, c).Value = shtIn.Cells(rIn + 2, c - 6).Value 
    Next c 

    rIn = rIn + 3 
    rOut = rOut + 1 
Loop Until shtIn.Cells(rIn, 1).Value = "" 
End Sub 

运行它工作表Sheet1。第一个包含数据的单元格将为A1。

+0

可能值得一提的是,你认为它是每一行中最后一个被删除的'X'。 – pnuts

+0

不,它比这更糟....我完全错过了原始数据集包含5个“X”值的事实。 –

+0

但是OP *似乎*只想要其中的四个 - 并没有指定哪一个,所以我会说你的A代表正确。 – pnuts