首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环内循环内循环

循环内循环内循环
EN

Stack Overflow用户
提问于 2016-06-17 02:08:39
回答 1查看 126关注 0票数 1

我在试着运行批处理。我需要从一个工作表复制和粘贴到新创建的工作表中的某些列。这应该包括姓名、电子邮件等。为了做到这一点,我做了一个嵌套循环,但我不能在数据开始重复之后停止输出行的递增。它会一直向下延伸到页面。我的代码如下:

‘收集数据

代码语言:javascript
复制
For r = 1 To ActiveCell.End(xlDown).Row
    Cells(1, c).Select
        Do Until IsEmpty(Selection)
        name = ActiveCell.End(xlToLeft).Value
        email = ActiveCell.End(xlToLeft).Offset(0, 1).Value
        phoneNumber = ActiveCell.End(xlToLeft).Offset(0, 2).Value
        generation = ActiveCell.End(xlToLeft).Offset(0, 3).Value
        status = ActiveCell.End(xlToLeft).Offset(0, 13).Value

'paste data

        Sheets("Compiled Data").Select
        Cells(oRow, c) = name
        Cells(oRow, c + 1) = email
        Cells(oRow, c + 2) = phoneNumber
        Cells(oRow, c + 3) = generation
        Cells(oRow, c + 4) = status

        oRow = oRow + 1

        Loop

如您所见,我已经运行了两个循环。我想知道是否需要第三个来停止输出(oRow),以及是否有可能在循环中的循环中有一个循环。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-06-17 04:09:09

代码语言:javascript
复制
Cells(1, c).Select

这总是选择第一行。我不认为这是你想要的。此外,在纸张之间切换是非常低效的。你有

代码语言:javascript
复制
Sheets("Compiled Data").Select

但是你永远不会切换回你的第一张图纸。

这应该会运行得更流畅

代码语言:javascript
复制
c_old = 1 'Your "Name" column in original
c_new = 1 'Your "Name" column in Compiled Data

For r = 1 To ActiveSheet.Cells(Rows.Count, c_old).End(xlUp).Row
    For j = 0 To 3
        Sheets("Compiled Data").Cells(r, c_new + j) = Cells(r, c_old + j)
    Next j
    Sheets("Compiled Data").Cells(r, c_new + 4) = Cells(r, c_old + 13)
Next r
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37866436

复制
相关文章

相似问题

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