我正在尝试创建一个单独的VBA,在E列中搜索七个不同的工作表以查找特定条目,然后将整行复制到第8个工作表中,并按列A顺序放置它们 .
我明白了它要搜索一个电子表格并将这些项目复制到另一个电子表格中它们位于电子表格的完全相同的行中
Sub Test()
Dim rw As Long, Cell As Range
For Each Cell In Tues.Range("E:E")
rw = Cell.Row
If Cell.Value = "No" Then
Cell.EntireRow.Copy
Sheets("Completed").Range("A" & rw).PasteSpecial
End If
Next
End Sub
我想搜索的电子表格是:周一周二周三周四周五周六周日
我要将其移动到的工作表称为 Completed
,然后我希望它按列A排序 .
有任何想法吗?
3 回答
这个怎么样:
它基本上使用你给出的代码,但我添加了工作表循环(它将循环遍历每一天的工作表)并粘贴回“已完成”的WS .
看看你是否可以解决我在工作表中的循环问题 - 我经常使用这种类型的东西,所以如果你做了很多这样的事情,那就好了 . 它还允许您在工作簿中添加另一个工作表(比如“Weekend”),所有您需要做的就是在Array中的“Sun”之后添加“Weekend” . 这是你需要添加它的唯一地方 .
需要注意的是,我将
for each Cell in Range(E:E)
从E1
更改为E列中的最后一行 - 这使得宏运行速度更快 .编辑:正如我在上面的评论中所提到的,通常不建议使用
Cell
作为变量名 . (同样适用于Column
,Row
,Range
等)因为这些都意味着特别针对VBA(即Cell([row],[column])
. 相反,如您所见,我喜欢使用cel
或rng
或iCell
等 .根据你所描述的内容,这样的东西应该适合你 . 它使用For Each循环遍历工作表并使用AutoFilter方法从列E中查找它正在查找的内容 . 代码假定 Headers 位于每个工作表的第1行 . 为了清楚起见,我试图评论它 .
EDIT :这是包含代码的示例工作簿 . 当我运行代码时,它按预期工作 . 您的工作簿数据设置是否完全不同?
https://drive.google.com/file/d/0Bz-nM5djZBWYaFV3WnprRC1GMnM/view?usp=sharing
之前发布的答案中有一些很棒的内容,但我认为这样可以让您完全掌握所需的内容,而且没有任何问题,速度也很快 . 我对数据的布局做了一些假设,但对它们进行了评论 . 让我知道事情的后续 .