根据4个单元格特定条件将整个Excel行从一个工作表复制到另一个工作表

时间:2014-07-01 19:33:50

标签: excel-vba vba excel

基本上我在工作簿表RAWinsightly中尝试做的是:

  • 如果该行为空白:请勿复制。
  • 如果列J包含单词" Commercial"在其中:复制行除非列K还包含单词" lost"或"放弃"。

我能够找到的代码对于前两个代码非常有用,但我不能为我的生活找出如何添加列K的东西。

Sub copyJobs()
  Dim r1
  Dim r2
  Dim r3

  r1 = 1
  r2 = 1
  r3 = 1

  While Sheets("RAWInsightly").Range("A" & LTrim(Str(r1))) <> ""
    If Sheets("RAWInsightly").Range("J" & LTrim(Str(r1))) = "Commercial" Then
      Sheets("RAWInsightly").Range(LTrim(Str(r1)) & ":" & LTrim(Str(r1))).Copy
      Sheets("RAWCommercial").Range("A" & LTrim(Str(r2))).PasteSpecial xlPasteAll
      r2 = r2 + 1
    End If
    If Sheets("RAWInsightly").Range("J" & LTrim(Str(r1))) = "failed" Then
      Sheets("RAWInsightly").Range(LTrim(Str(r1)) & ":" & LTrim(Str(r1))).Copy
      Sheets("RAWhousing").Range("A" & LTrim(Str(r3))).PasteSpecial xlPasteAll
      r3 = r3 + 1
    End If
    r1 = r1 + 1
  Wend
End Sub

1 个答案:

答案 0 :(得分:0)

Sub copyJobs()
  Dim r1
  Dim r2
  Dim r3
  Dim shtSrc as Worksheet
  Dim tmp, tmp2

  r1 = 1
  r2 = 1
  r3 = 1

  Set shtSrc = Sheets("RAWInsightly")

  While len(shtSrc.Cells(r1, "A").Value) > 0

      'performing case-insensitive checks...
      tmp = LCase(shtSrc.Cells(r1, "J").Value)
      tmp2 = LCase(shtSrc.Cells(r1, "K").Value)

      If tmp = "commercial" And tmp2 <> "lost" And tmp2 <> "abandoned" Then
          shtSrc.Rows(r1).Copy Sheets("RAWCommercial").Cells(r2, "A")
          r2 = r2 + 1
      End If

      If tmp = "failed" Then
          shtSrc.Rows(r1).Copy Sheets("RAWhousing").Cells(r3, "A")
          r3 = r3 + 1
      End If

      r1 = r1 + 1

  Wend

End Sub