如何根据单个单元格中的文本移动整行?

时间:2017-04-26 07:19:59

标签: excel vba excel-vba

我一直在网上搜索哪里可以找到以下最有效,最简单的方法:

我有一张包含3张纸的电子表格:

  1. 信息
  2. 训练
  3. 离开者
  4. 在信息表中,B列包含有条件格式化的验证文本。有两种验证选项:

    1. 有效
    2. 利弗
    3. 我想要一旦从活跃的'更改单元格值到了Leaver'将整行从纸张中移除并移至“Leaver”页面。

      我已经使用了下面的代码,但它有效,但是如果没有离开者,它将转移第一行'有效'。谁能告诉我这是什么问题?

      Sub AlexR688(x)
          'For http://www.mrexcel.com/forum/excel-q...ific-text.html
          'Using autofilter to Copy rows that contain centain text to a sheet called Errors
          Dim LR As Long
      
          Range("B2").EntireRow.Insert Shift:=xlDown
          LR = Sheets("Personal Information").Cells(Rows.Count, "B").End(xlUp).Row
          LR1 = Sheets("Leavers").Cells(Rows.Count, "B").End(xlUp).Row + 1
      
          With Sheets("Personal Informaiton").Range("B2:C" & LR)
              .AutoFilter
              .AutoFilter Field:=1, Criteria1:="Leaver", _
                  Operator:=xlOr, Criteria2:=":Leaver"
              .SpecialCells(xlCellTypeVisible).EntireRow.Copy Destination:=Sheets("Leavers").Range("A" & LR1)
              .SpecialCells(xlCellTypeVisible).EntireRow.Delete
          End With
      End Sub
      

      其次,我想在“培训”中做同样的事情。片。但在那里,B栏包含相同的“活跃”,“离开者”和“离开者”。这是从个人信息中引用的。因此,一旦个人信息表B列从“活动”变为“#”;对于' leaver',培训表也会改变,但我希望删除培训表中的行。

      第三,如果我不小心将一行从个人信息表移到了离开者表,那么是否可以通过选择回到“活跃”状态。单元格值该行会移回原来的位置吗?

      非常感谢你。希望它足够清楚。

1 个答案:

答案 0 :(得分:0)

这是最简单的方法

  Private Sub imperecheaza_Click()
   Dim ws As Worksheet
   Dim Rand As Long
    Set ws = Worksheets("BD_IR")    
   Rand = 3
     Do While ws.Cells(Rand, 4).Value <> "" And Rand < 65000
       If ws.Cells(Rand, 4).Value = gksluri.Value * 1 And ws.Cells(Rand, 5).Value = gksluri.List(gksluri.ListIndex, 1) * 1 Then
         ws.Rows(Rand) = ""    '(here you will delete entire Row)
         gksluri.RemoveItem gksluri.ListIndex
         Exit Do
         End If
       Rand = Rand + 1
    Loop
  End Sub