首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将50行移动到下一列的脚本- Excel

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

Stack Overflow用户
提问于 2013-02-05 04:44:36
回答 2查看 3.3K关注 0票数 0

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

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

例如,来自$A$1:$B$50的数据在csv中,然后进行第二次采样,第二组数据转到$A$51:$B$100,我希望自动将第二组数据移动到$C$1:$D$50,并对所有采集的样本执行该移动。

我不知道这个操作的最佳路径是什么(宏/VBA/等),如果可能的话,我需要一些帮助。

感谢大家的时间和帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-05 22:07:32

需要做的事情背后的基本思想是:

  • 获取要创建的新列数(例如,重复要创建的每个新列,从nth + 1行剪切到最后一行,其中nth nth + 1是您想要的每列的行数(在本例中为50)。
  • 将剪切的行粘贴到其中包含数据的最后一列的右侧
  • 重复,直到所有列都已创建

下面是我用来帮助您入门的一些示例代码。这里假设您的数据从单元格A1开始,并且每列最多包含10行。您可以根据需要更改rowsToSkip值。此外,请注意,这是为了让您开始,并需要更多的测试。按您认为合适的方式更改它:

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

这样做的目的是,它首先找出要创建多少新列,然后从每列中的第11行向下剪切到最后一行,然后将这些值粘贴到包含数据的最后一列之后。它会一直这样做,直到生成了所有新的列。请注意,这会使每列保留10行数据。要将其更改为50,只需将rowsToSkip变量更改为50

以下是之前和之后的截图:

之前的

之后的

票数 2
EN

Stack Overflow用户

发布于 2013-02-05 06:17:22

这个怎么样?

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

https://stackoverflow.com/questions/14695296

复制
相关文章

相似问题

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