EXCEL VBA - 遍历列中的单元格,如果不为空,则将单元格值打印到另一列中

Hap*_*ngo 2 excel vba for-loop if-statement vlookup

我对 Excel VBA 非常陌生,还不太熟悉所有不同的函数等,而且我很确定我了解如何在 FOR 循环中使用 IF 语句,所以我不太确定该怎么做关于创建代码。

这就是我希望发生的事情:

A1 Food       B1 Selected?   D1 Selections
A2 Grapes     B2 Yes         D2 Grapes
A3 Tomato     B3             D3 Mango
A4 Mango      B4 Yes         D4 Spinach
A5 Spinach    B5 Yes     
A6 Carrots    B6
A7 Onion      B7 
Run Code Online (Sandbox Code Playgroud)

我的思考过程:

1) 在 B2 到 B7 的范围内创建一个 FOR 循环以检查值 'YES'
2) 如果值为是,则应将 A 中相邻单元格中的相应值打印到 D 中。
3) 否则,应继续循环通过细胞。

我想 VLOOKUP 也涉及 if 语句中的某个地方,需要定义变量来建立范围?

将不胜感激任何帮助。

谢谢!

Gar*_*ent 8

试试这个:

Sub FoodPicker()
    Dim N As Long, i As Long, j As Long
    N = Cells(Rows.Count, "A").End(xlUp).Row
    j = 2
    For i = 2 To N
        If Cells(i, "B").Value = "Yes" Then
            Cells(j, "C").Value = Cells(i, "A").Value
            j = j + 1
        End If
    Next i
End Sub
Run Code Online (Sandbox Code Playgroud)

如果您愿意使用1,2,3而不是yes,yes,yes,您可以避免使用宏。