2017-06-19 36 views
0

我有一個名爲in-out的工作表的excel文件。在工作表中,有4列被數據佔據,另外兩列是空白。根據條件使用VBA將數據從一列複製到另一行同一行使用VBA

柱A:輸入/輸出名稱

列B:輸入名稱(空白)

COL C:輸出名稱(空白)

COL d:端口使用的名稱

col E:set_input/set_output

col F:value

我需要做的工作是檢查從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

嘗試下面的代碼,它將通過在E列與值的所有細胞循環:

  • 如果在列的單元格的值是「set_input_」,它將值從列複製「 A「到列」B「。
  • 如果A列中單元格的值爲「set_output_」,則它將從列「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 
+0

嗨@Shai瑞士雷達表,感謝的說明和代碼工作。謝謝! – mmaz

相關問題