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 ステートメントの条件を値 = 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="列 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 に答える