【发布时间】:2015-06-29 13:57:36
【问题描述】:
我必须对电子表格中的数百行进行排序。我想尝试使用 vba 代码自动执行此任务,但我不知道该怎么做。
在电子表格中,我需要向下搜索“A”列(直到数据末尾)并识别“A”列中包含文本/单词“资产”的任何单元格。如果单元格确实包含文本“资产”,请沿同一行检查“N”列中的单元格。如果“N”列中同一行的相应单元格为空白,则将整行移动到名为“已删除”的新工作表中
谁能帮忙写一些vba代码
谢谢 伊恩
【问题讨论】:
我必须对电子表格中的数百行进行排序。我想尝试使用 vba 代码自动执行此任务,但我不知道该怎么做。
在电子表格中,我需要向下搜索“A”列(直到数据末尾)并识别“A”列中包含文本/单词“资产”的任何单元格。如果单元格确实包含文本“资产”,请沿同一行检查“N”列中的单元格。如果“N”列中同一行的相应单元格为空白,则将整行移动到名为“已删除”的新工作表中
谁能帮忙写一些vba代码
谢谢 伊恩
【问题讨论】:
你知道你需要检查多少行,或者你需要一个自动停止的函数吗?
Sub CopyPaste()
Dim MyRange as Range
Dim Current_Range as Range
'Nb_Rows can be any integer, even higher than the real number of rows.
For i = 1 To Nb_Rows
If Range("A" & i).Value = "asset" Then
If Range("N" & i).Value = "" Then
Set Current_Range = Cells(i, 1)
If MyRange Is Nothing Then
Set MyRange = Current_Range
Else
Set MyRange = Application.Union(MyRange, Current_Range)
End If
End If
End If
Next i
If MyRange Is Nothing Then
Exit Sub
Else
MyRange.EntireRow.Cut
Sheets("Removed").Paste
End If
End Sub
这段代码应该可以工作。
我使用Nb_Rows 进行循环,也许您应该更改该值。
请注意,我复制/粘贴了行,这意味着它们将保留在第一张纸上。我还假设您在激活第一张工作表时启动宏。
【讨论】:
Nb_Rows 设置为1000,它将检查到第1000 行而不剪切空行,因此不会更改任何内容。您可以将.Copy 替换为.Cut。这仅在工作表“已删除”为空时才有效。