将50行移动到下一列的脚本 – Excel

我有一个关于如何去做以下操作的请求:

我有一个csv文件(我在Excel中打开),我将一个数据块50X2(rowsXcolumns)附加到csv文件。 使用完成的csv文件,我想自动执行一个过程,每50行被选中(两列),数据本质上被剪切并复制到下两个可用的列。

一个例子是$ A $ 1的数据:$ B $ 50在csv中,然后第二个采样,第二个数据集到$ A $ 51:$ B $ 100,我想自动将第二个集合移动到$ C $ 1:$ D $ 50,并执行所有采样的移动。

我不知道这个操作的最佳路线是什么(macros/ VBA /等),如果这很容易,希望得到一些帮助。

谢谢大家的时间和帮助。

需要完成的基本思想是:

  • 获取要创build的新列数(例如, Total Rows/#rows per column
  • 对于每一个新的列,从第nth + 1行切到最后一行,其中nth行是你想要的每列的行数(在你的情况下是50)。
  • 将剪切的行粘贴到包含数据的最后一列的右侧
  • 重复,直到所有的列已经完成

这里有一些示例代码,我把它们放在一起,让你开始。 这假定您的数据从单元格A1开始,并且每列最多应包含10行。 您可以更改rowsToSkip值以满足您的需求。 另外,请注意,这是为了让你开始,并需要更多的testing。 改变它,因为你认为合适的:

 Public Sub MakeColumnsFromRows() Dim totalCutsToMake As Integer Dim currentColumn As Integer Dim currentCut As Integer Dim rowsToCut As Integer Sheets(1).Activate rowsToSkip = 10 totalCutsToMake = (ActiveSheet.UsedRange.Rows.Count / rowsToSkip) currentColumn = 1 Dim RowCount As Integer For currentCut = 1 To totalCutsToMake RowCount = Cells(Rows.Count, currentColumn).End(xlUp).Row Range(Cells(rowsToSkip + 1, currentColumn), Cells(RowCount, currentColumn + 1)).Select Selection.Cut Cells(1, currentColumn + 2).Select ActiveSheet.Paste currentColumn = currentColumn + 2 Next End Sub 

这个function是首先找出要创build多less个新列,然后从每列的第11行切换到最后一行,然后将这些值粘贴到包含数据的最后一列之后。 它会这样做,直到所有新的列已经完成。 请注意,这会在每列留下10行数据。 要将其更改为50,只需将rowsToSkipvariables更改为50

这里是前后的截图:

之前 在这里输入图像说明

在这里输入图像说明

这个怎么样?

 Sub move() Dim ws As Worksheet Dim r As Range Dim columnCounter As Long Dim rowCounter As Long Set ws = Sheets("Sheet1") columnCounter = 1 rowCounter = 51 Set r = ws.Cells(rowCounter, 1) Do While r.Value <> vbNullString ws.Range(r, r.Offset(49, 1)).Cut ws.Cells(1, columnCounter) columnCounter = columnCounter + 2 rowCounter = rowCounter + 50 Set r = ws.Cells(rowCounter, 1) Loop End Sub