MS Excel 2010 - VBA 在一列中查找客户编号并用是或否标记相应的列

MS Excel 2010 - VBA to lookup in one column a customer number and Tag the corresponding column with Yes or No

我有一个非常大的客户编号数据集,我们不能只使用 =IF(E3=160248, "YES", "NO") 将特定客户编号 160248 标记为是或否。相反,我想使用 VBA 代码在列 E 中查找 Customer_Number 并在列 AG 的相应行中查找 return 是或否,称为 Incorporated_160248。我没有在 VBA 中执行 If then 子句,所以我不知道从哪里开始。请注意,每个月数据集都可能发生变化。一个月它可能是 4,000 个条目,接下来是 3,500 个,因此它必须是动态的。有什么想法吗?

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

要知道您有多少条目:

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

如果您希望扫描不同的数字,您可以调整代码以使用您在其中输入该数字的单元格中的值,或者使用输入框输入您要查找的数字,或其他内容。此代码未经测试。

如果您想使用您分配的列名而不是 AG(更安全),您可以使用类似以下内容的内容:

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

相反,它给出了偏移量为 i 的列。应该会带您到正确的单元格。