VBA选择表中符合条件的数据

问题描述 投票:0回答:1

如果同一表中的另一个单元格满足特定条件,我将尝试选择表中的单元格,然后将所选单元格复制到单独的工作表中。我认为使用if if语句可能最适合锻炼身体,但我确信可能会有更简单的方法来做到这一点。我尝试了两种不同的选择。我个人认为第二个选择比第一个选择更好。但是都没有用。

Option 1

Dim Cell As Range
Dim EML As Range
For Each Cell In Worksheets("Project Directory").Range("Directory[OAC]")
For Each EML In Worksheets("Project Directory").Range("Directory[EMAIL]")
If Cell = "Y" Then
Worksheets("Data").Range("A1") = Worksheets("Project Directory").EML
End If

Next Cell

Option 2

If Worksheets("Sheet1").ListObjects("Table1").ListColumns(8).DataBodyRange = "Y" Then
Worksheets("Sheet2").Range("A1") = Worksheets("Sheet1").ListObjects("Table1").ListColumns(5)
End If
excel vba copy paste excel-tables
1个回答
0
投票

您似乎在代码中缺少一些位:在第一个中,循环未关闭。在第二个选项中,您没有循环。在两种情况下,所有结果都将写入并覆盖到Sheet2的单元格A1中。如果我将您的代码用于这些遗漏,那么这两个示例应该起作用(未经测试)。干杯选项1

Dim Cell As Range
Dim EML As Range
r = 1
For Each Cell In Worksheets("Project Directory").Range("Directory[OAC]")
  For Each EML In Worksheets("Project Directory").Range("Directory[EMAIL]")
    If Cell = "Y" Then
      Worksheets("Data").Range("A" & r).Value = Worksheets("Project Directory").EML
      r = r + 1
    End If
  Next EML
Next Cell

选项2

Dim Tbl As ListObject
Set Tbl = Worksheets("Sheet1").ListObjects("Table1")
r = 1
For Each DataRw In Tbl.ListRows
    If DataRw.ListColumns(8).DataBodyRange = "Y" Then
        Worksheets("Sheet2").Range("A1").Offset(r, 0) = Tbl.ListColumns(5).Value
        r = r + 1
    End If
Next
© www.soinside.com 2019 - 2024. All rights reserved.