【问题标题】:Excel If cell is not blank, copy row into sheet2Excel 如果单元格不为空,则将行复制到 sheet2
【发布时间】:2016-11-12 17:58:09
【问题描述】:

我试图弄清楚如何让 excel 查看我工作簿中的单元格,如果单元格的值大于 0,则将该行复制到 sheet2 中。然后它会查看列中的下一个单元格。

有人知道吗?

我需要它查看单元格 I10 开始,如果 I10>0 将数据从 A10:K10 复制到 sheet2 否则查看 I11 并重复,然后 I12... 直到所有 750 多行都被复制或不复制。

非常感谢大家的帮助!!!

【问题讨论】:

  • 你试过什么?这个要求很简单。在线 Excel VBA 教程将涵盖您需要了解的所有内容。本站是供程序员互相帮助开发的。您说“750 多行”。查找如何找到列的最后一行。您想查看 I10, I11, I12 , ... Innn 其中 nnn 是最后一行编号。你知道什么是 For 循环吗?您知道如何使用变量访问单元格吗?本教程将教你所有这些。一两个小时的学习可以让你解决这个问题和下一个问题。

标签: vba excel if-statement macros


【解决方案1】:
Option Explicit

Sub Macro1()

Dim cell As Range
Dim lastRow As Long, i As Long

lastRow = Range("I" & Rows.Count).End(xlUp).Row
i = 10 ' change this to the wanted starting row in sheet2

For Each cell In Sheets(1).Range("I10:I" & lastRow)
    If cell.Value > 0 Then
        cell.EntireRow.Copy Sheets(2).Cells(i, 1)
        i = i + 1
    End If
Next

End Sub

【讨论】:

    【解决方案2】:

    您可以使用Range 对象的AutoFilter() 方法并避免循环遍历单元格:

    Sub Main()
        With Worksheets("OriginWs") '<--| change "OriginWs" to your actual data worksheet name
            With .Range("I9", .Cells(.Rows.Count, "I").End(xlUp))
                If IsEmpty(.Cells(1, 1)) Then .Cells(1, 1) = "dummyheader"
                .AutoFilter Field:=1, Criteria1:=">0"
                If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then .Offset(1, -8).Resize(.Rows.Count - 1, 11).SpecialCells(xlCellTypeVisible).Copy Worksheets("TargetWs").Cells(1, 1) '<--| change "TargetWs" to your actual destination worksheet name
                If .Cells(1, 1).Value = "dummyheader" Then .Cells(1, 1).ClearContents
            End With
            .AutoFilterMode = False
        End With
    End Sub
    

    顺便说一句,声明:

    If IsEmpty(.Cells(1, 1)) Then .Cells(1, 1) = "dummyheader"
    

    If .Cells(1, 1).Value = "dummyheader" Then .Cells(1, 1).ClearContents
    

    如果您的单元格 I9 肯定有一些文字,则可以避免

    【讨论】:

    • @TimothyWinkler,你通过了吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-09-03
    • 2016-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-15
    相关资源
    最近更新 更多