使用VBA根据条件将数据从一列复制到同一行的另一列

时间:2017-06-19 07:01:59

标签: excel vba excel-vba

我有一个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    

1 个答案:

答案 0 :(得分:0)

尝试下面的代码,它将循环遍历列E中值的所有单元格:

  • 如果A列中的单元格值为" set_input _" ,它将复制Column" A"到专栏" B"。
  • 如果A列中的单元格值为" set_output _" ,它将复制Column" A"到专栏" C"。

注意 :没有必要(并且最好避免)使用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