如果我在哪里处理这样的问题,我会首先创建一个包含所有不同实体的数组。接下来您可以使用 InStr(startsearchingposition, String, searchforvalue)。InStr 方法返回字符串中 searchvalue 的起始位置,否则返回 0 或 NUll。因此,如果它有记录,则 Instr 返回的值大于 1。
Dim myArray(1 to 3) As Variant, i, number_of_element As Integer, y as String
Dim ws As Worksheet: Set ws = ActiveSheet
myArray(1) = "Car"
myArraY(2) = "Bus"
myArraY(3) = "Bike"
'Lets assume that all you data is in column A
For i = 1 To ws.Cells(rows.count, 1).end(xlup).row
y = ws.Cells(i,1).value
number_of_element = 1
For Each element in myArray
If InStr(1, y, element) > 1 Then
ws.cells(i, number_of_element +1).value = y
Exit For
Else
number_of_element = number_of_element + 1
End if
Next
Next i
也许这并不能完全满足您的标准,但至少现在所有不同的实体都已分开。您可以做的下一件事是对每个实体中的所有元素进行排序,然后将它们重新组合在一起。
VBA 有一些有用的方法可以用来解析某个字符串。Mid() 和 InStr() 是我使用最多的两个。