我需要一个代码,该代码可以查看表中的一列,如果文本中有特定的字符串,则需要在另一列中输入新文本。
因此,请检查A列(服务子类型),然后在A列的基础上的B列(产品类别)中输入文本。
Dim productsubtype As Range
For Each productsubtype In Range("RawData[Service Sub Type]")
If productsubtype.Value = "Training" Then
Range("RawData[Product Category]").Value = "Education"
End If
Next productsubtype
但是发生的是,无论B列中的内容是什么,它都只在B列的所有内容中填充了“教育”。
答案 0 :(得分:0)
如Mathieu所建议的那样,您应尽可能使用查找表,而不要使用长的if语句。
if this then that
可能并不总是那么简单,但是您应该能够使用查找表消除其中大多数的if语句,而仅根据其真正的意义使用一些if语句。
话虽如此,使用您的示例并添加了查找表(在我的示例中,我将其命名为lookupTable
),这应该为您提供一个起点:
Option Explicit
Sub lookupValues()
Dim arrData As Variant: arrData = Range("RawData") 'declare and allocate your table to an array
Dim arrLookup As Variant: arrLookup = Range("lookupTable") 'declare and allocate your lookup table to an array
Dim R As Long, X As Long
For R = LBound(arrData) To UBound(arrData) 'for each row in your data
For X = LBound(arrLookup) To UBound(arrLookup) 'for each row in the lookup table
If arrData(R, 1) = arrLookup(X, 1) Then 'if there is a match
arrData(R, 2) = arrLookup(X, 2) 'allocate the value to the array
Exit For 'value found, check next
End If
Next X
Next R
Range("RawData") = arrData 'put the values back into the table
End Sub