1

在我之前的帖子:从所有书籍中获取数据到某个表中,我曾询问如何从 EXCEL 中所有打开的书籍中获取一些数据。

但是有一些问题。我不知道如何检查命名范围中列名“Id”的值是否为“0”。如果有,则不应将其添加到决赛桌。我怎样才能做到这一点?

所以在我得到命名范围值之后:

Set Rng = iList.[Table]我需要清洁它

  i = 1
         For Each row In Rng.Rows


      Set cell = row.Cells(1, 2)
      If cell = "0" Then

      Rng.Rows(i).Delete

      End If

      i = i + 1


      Next
4

2 回答 2

1

这是我一直在努力解决的问题,但这段代码有效,我认为应该适用于您正在尝试做的事情。在这种情况下,我为库存编号(“Inv”)使用命名范围并查看它以找到小于 26 的任何值。如果存在,我删除该行。循环完成后,我重新建立最后一行(假设我删除了一些行,这将改变)。您可以替换您的命名范围并将 IF 语句中的条件更改为 value = 0:

Set rngCells = Range("Inv")
For i = rngCells.Cells.Count To 0 Step -1
    If rngCells(i).Value < 26 Then
        rngCells(i, 1).EntireRow.Delete
    End If
Next i

FinalRow = Cells(Rows.Count, 2).End(xlUp).Row
于 2012-12-18T22:13:19.907 回答
0

我不确定,但你可能会寻找这个

If ThisWorkbook.Names("ID").RefersToRange.Value = "0" Then

将 ThisWorkbook 替换为您喜欢的任何工作簿或工作表对象。

如果不是这样,请评论您要检查的内容是否为“0”,因为我不确定我是否理解正确。

编辑

现在,我知道发生了什么 - 你在这里遇到了这样的问题

如果表中的值满足条件,则 Vba 宏从表中复制行

并且在这里需要这样的代码

Dim rngFiltered as range
Rng.AdvancedFilter xlFilterCopy, Tabelle1.Range("CRITERIA"), rngFiltered, False

lst.InsertRowRange.Resize(Rng.Rows.Count).Value = rngFiltered.Value

其中“CRITERIA”是“G1:G2”等范围的名称,其中 G1="Title of Column D" G2=">0"

如果它始终是同一个单元格,我会编辑你的代码:

  Dim rangeRow As Range
  Dim rowCell As Range

  Set Rng = Tabelle1.Range("A1:A50")

  For Each rangeRow In Rng.Rows

    Set rowCell = rangeRow.Cells(1, 2)
    If rowCell.value = "0" Then
      rangeRow.Delete
    End If
  Next rangeRow

或者如果您需要检查所有单元格

  For Each rangeRow In Rng.Rows
    For each rowCell in rangeRow           
       If rowCell.value = "0" Then
        rangeRow.Delete
        exit for
       End If
    next rowCell
  Next rangeRow
于 2012-09-20T12:44:26.433 回答