EXCEL VBA – 循环列中的单元格,如果不为空,则将单元格值打印到另一列中

我很新的Excel VBA,并没有完全熟悉所有不同的function,我很确定我理解如何在FOR循环中使用IF语句,所以我不太清楚如何去关于创build代码。

这是我想要发生的事情:

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 

我的思考过程:

1)在B2到B7的范围内创build一个FOR循环来检查值“是”
2)如果该值为“是”,则A中的相邻单元格中的相应值应该被打印到D中。
3)否则,它应该继续循环通过细胞。

我想VLOOKUP也是在if语句中的某个地方,需要定义variables来确定范围?

将不胜感激任何帮助。

谢谢!

试试这个:

 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 

如果你愿意使用1,2,3而不是yes,那么是的,你可以避开这个macros。

假设你在第一行有标题:

 Sub SO() Dim i As Long For i = 2 To Range("A" & Rows.Count).End(xlUp).Row If LCase(Cells(i, 2).Value) = "yes" Then Range("D" & Rows.Count).End(xlUp).Offset(1, 0).Value = Cells(i, 1).Value Next i End Sub