用于删除包含#N / A的行的宏

时间:2013-09-05 10:43:12

标签: excel vba

我需要帮助开发VBA Macro for Excel 2013。 我使用运行查询宏后创建的大型数据文件来从SQL服务器获取数据。查询文件生成的数据文件在A列中始终具有日期:时间戳,并且在其他列(用户预定义标签)中处理结果日期:时间戳是必不可少的,因为数据文件由另一个应用程序使用分析并生成报告。原始数据文件有时在某些行中包含“0”值。运行宏以删除“0”值并复制上面的值。

第一个场景

第一个问题是,数据不适用于日期:数据表在单元格中显示#N / A的时间。有时,完整的行将显示#N / A,时间戳记在A列中。然后运行宏以从工作表中删除#N / A.然后手动操作工作表以删除除时间戳之外没有值的行。 我需要一个宏的帮助来删除空的行,除了列A与日期:时间戳,必须删除完整的行。

第二场景

有时#N / A将位于单元格上方,下方,左侧和右侧的列单元格中,此#N / A行不得删除,但必须是上面的值,因为其他应用程序数据计算。

手动操作数据表非常耗时,文件更正后会保存为“csv”并导入到其他应用程序。

我尝试了很多条件宏但没有运气。

是否有人可以提供帮助

我将非常感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

这是部分解决方案。以下宏将删除A列中唯一值的所有行:

Sub RowKiller()
    Dim N As Long, NN As Long
    Dim r As Range
    NN = Cells(Rows.Count, "A").End(xlUp).Row
    Dim wf As WorksheetFunction
    Set wf = Application.WorksheetFunction
    For N = NN To 1 Step -1
        Set r = Cells(N, "A")
        If wf.CountA(r) = 1 And wf.CountA(r.EntireRow) = 1 Then
            r.EntireRow.Delete
        End If
    Next N
End Sub