如果同一表中的另一个单元格满足特定条件,我将尝试选择表中的单元格,然后将所选单元格复制到单独的工作表中。我认为使用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
您似乎在代码中缺少一些位:在第一个中,循环未关闭。在第二个选项中,您没有循环。在两种情况下,所有结果都将写入并覆盖到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