【问题标题】:Check cell value, copy when matching检查单元格值,匹配时复制
【发布时间】:2017-01-10 11:55:36
【问题描述】:

我有一个不断增长的列表。

如果某个单元格值大于 10,则应将整行复制到某个工作表中。 如果值为 10 或更小,则应检查下一行,直到到达包含数据的最后一行。

这是我当前的宏。它将行复制到与以前相同的位置。我需要在没有可用空间的情况下列出它们。

Sub Copy()
Dim s1 As Worksheet, s2 As Worksheet
Dim N As Long, i As Long, j As Long
Set s1 = Sheets("Hours")
Set s2 = Sheets("Check")
N = s1.Cells(Rows.Count, "R").End(xlUp).Row
j = 1
For i = 1 To N
    If s1.Cells(i, "R").Value > "10" Then
       s1.Cells(i, "R").EntireRow.Copy s2.Cells(j, 1)
        j = j + 1
    End If
Next i
End Sub

【问题讨论】:

  • 记录自己做一个过滤器。
  • 在您写的帖子中,如果cell.value > 10,您想要复制该行。但是,在您的代码中,您正在 Else 进行复制,而 cell.value <= 10 ,那么它应该是哪一个?
  • @Shai-Rado 谢谢,我错了,我更正了

标签: excel vba copy row


【解决方案1】:

您可以在完成当前脚本后进行后期处理,删除空行(将范围“C50”更改为列/行的最大范围以检查空):

  dim r As Range, rows As Long, i As Long
  Set r = Sheets("Check").Range("A1:C5000")
  rows = r.rows.Count
  For i = rows To 1 Step (-1)
    If WorksheetFunction.CountA(r.rows(i)) = 0 Then r.rows(i).Delete
  Next

【讨论】:

    【解决方案2】:

    我尽量不离开你的原始代码(尽管使用AutoFilter 方法很诱人)

    我认为您的错误是由于您没有完全限定您正在寻找N(最后一行)的方式;您使用了N = s1.Cells(Rows.Count, "R").End(xlUp).Row,如果ActiveSheet 是另一张表,那么您将得到Rows.Count 的不同值。我刚刚添加了工作表参考N = s1.Cells(s1.Rows.Count, "R").End(xlUp).Row

    我添加了另一个“安全”标准,如果您在“R”列中有文本,我已将您的 If 标准修改为 'If IsNumeric(s1.Range("R" & i)) And s1 .Range("R" & i).Value > 10 Then`

    代码

    Sub Copy()
    
    Dim s1 As Worksheet, s2 As Worksheet
    Dim N As Long, i As Long, j As Long
    
    Set s1 = Sheets("Hours")
    Set s2 = Sheets("Check")
    
    N = s1.Cells(s1.Rows.Count, "R").End(xlUp).Row
    j = 1
    For i = 1 To N
        If IsNumeric(s1.Range("R" & i)) And s1.Range("R" & i).Value > 10 Then
            s1.Cells(i, "R").EntireRow.Copy s2.Cells(j, 1)
            j = j + 1
        End If
    Next i
    
    End Sub
    

    【讨论】:

    • 谢谢!其实你之前提到的问题几乎解决了我的问题,但是这个更好!
    • 如果您愿意,您可以使用With s1 来进一步缩短和简化您的代码
    • 刚刚偶然发现另一个问题:是否可以让脚本从第 10 行开始“扫描”而不是从一开始?
    • 我想可能就像在循环中添加 i+10 但这无济于事:/
    • 嗯,实际上它不仅仅是简单的 :D For i = 10
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-04
    • 1970-01-01
    • 1970-01-01
    • 2019-01-23
    相关资源
    最近更新 更多