我有一个excel文件,其中包含一个名为in-out的工作表。在工作表中,有4列占用数据,另外两列是空白。
col A:输入/输出名称
col B:输入名称(空白)
col C:输出名称(空白)
col D:端口使用的名称
col E:set_input / set_output
col F:值
我需要做的任务是检查从1到最后的每一行(大约90000行并且将增加),如果col E中的数据等于set_input,则将col A中的数据复制到col中的单元格B,如果col E中的数据等于set_output,则将col A中的数据复制到col B中的单元格。
我是否可以知道如何启动VBA脚本,如果我首先找到最后一行,以便程序循环到最后一次使用的行?是否可以检查每一行并根据条件复制数据?
我开始编写下面的脚本而且卡住了。
Sub Test()
Dim LastRow As Long
Dim x As Integer
With Worksheets("in-out")
LastRow = .Cells(Rows.Count, "E").End(xlUp).Row
.Range("E2:E" & LastRow).Select
For x = Range("E2") To LastRow
If x = "set_input_" Then
End With
End Sub
答案 0 :(得分:0)
尝试下面的代码,它将循环遍历列E中值的所有单元格:
注意 :没有必要(并且最好避免)使用Select
,你没有'需要.Range("E2:E" & LastRow).
(选择整个范围,而不是使用完全限定的对象。
<强> 代码 强>
Option Explicit
Sub Test()
Dim LastRow As Long
Dim x As Long
With Worksheets("in-out")
LastRow = .Cells(Rows.Count, "E").End(xlUp).Row
For x = 2 To LastRow
If .Range("E" & x).Value = "set_input_" Then
.Range("B" & x).Value = .Range("A" & x).Value
ElseIf .Range("E" & x).Value = "set_output_" Then
.Range("C" & x).Value = .Range("A" & x).Value
End If
Next x
End With
End Sub