MS Excel 2010 – VBA在一列中查找客户编号并用“是”或“否”标记对应的列

我有一个客户号码非常大的数据集,我们不能只使用a =IF(E3=160248, "YES", "NO")用YES或NO来标记特定客户号码160248。 相反,我想使用VBA代码在列E中查找Customer_Number,并在Column AG的相应行中返回YES或NO,名为Incorporated_160248。 我还没有在VBA中做过If条款,所以我不知道从哪里开始。 请注意,每个月的数据集可以改变。 一个月可能会有4000个参赛作品,接下来是3500个参赛作品,所以必须是dynamic的。 有什么想法吗?

在这里输入图像说明

 Sub TagTryco() Dim CN As Integer, result As String CN = Range("E:E").Value If CN = 160248 Then result = "YES" Else result = "NO" End If Range("AG:AG").Value = result End Sub 

我得到一个编译错误:错误的参数数量或无效的属性分配。

此代码现在可用:

 Sub TagTryco() Dim listLength listLength = Worksheets("ILS_Import").Cells(Rows.Count, "E").End(xlUp).Row - 1 Dim i As Integer For i = 2 To listLength + 2 If Worksheets("ILS_Import").Range("E" & i) = 160248 Then Worksheets("ILS_Import").Range("AG" & i) = "Yes" Else Worksheets("ILS_Import").Range("AG" & i) = "No" End If Next End Sub 

要知道你有多less条目:

 dim listLength listlength = Sheet1.Cells(Rows.Count, "E").End(xlUp).Row - 1 'I assumed column E, starting at row 2 

您需要从第2行循环到第2 + listLength行,检查E列中的单元格,并检查它是否等于您的数字:

 dim i as integer for i = 2 to listLength + 2 If Range("E" & i) = 160248 Then Range("AG" & i) = "Yes" Else Range("AG" & i) = "No" End If Next 

如果您希望扫描不同的号码,您可以调整代码以使用input该号码的单元格中的值,或者使用input框input要查找的号码或其他内容。 这段代码没有经过testing。

如果你想使用你分配的列名而不是AG(这是安全的),你可以使用以下几行:

  = Range("Incorporated_160248")(i+1) 

相反,这给列的偏移量为i。 应该把你带到正确的牢房。