在“单元格”中查找文本并将结果输出到单独的列

我有excel中的数据,看起来像下面,逐行,但列A中的所有信息。

A --------------------- Yellow Car Small --------------------- Red Bike Big Big --------------------- Big Yellow Car --------------------- Yellow Big Motorbike 

我需要输出到列B,它是什么颜色,C是多大,D是什么types。

我从哪说起呢?

我已经为每个类别做了一个清单

 Colour | Type | Size -------|-----------|------ Blue | Car | Small -------|-----------|------ Yellow | Bike | Big -------|-----------|------ Red | Motorbike | Large 

但我想我想失去一些东西。

所以,这有点复杂,因为VBA不知道颜色是什么,车辆是什么,或者尺寸是多less,所以你需要告诉它。 不幸的是,真正能做到的唯一方法是将值放入预先设置的数组中,以便引导它:

 Sub splititup() Dim myarray() As String For i = 1 To 4 'or use lastrow for a dynamic range myarray = Split(Range("A" & i).Value, " ") Range("B" & i).Value = myarray(0) Range("C" & i).Value = myarray(1) Range("D" & i).Value = myarray(2) Next i Dim mycolors() As Variant, myvehicles() As Variant, mysizes() As Variant mycolors = Array("Red", "Yellow", "Blue", "Green", "Orange", "Purple") mysizes = Array("Small", "Medium", "Large", "Big") myvehicles = Array("Boat", "Car", "Bike", "Motorbike", "Truck") 'color, size, type Dim Value1 As String, Value2 As String, Value3 As String For i = 1 To 4 Value1 = Range("B" & i).Value Value2 = Range("C" & i).Value Value3 = Range("D" & i).Value If Not IsInArray(Value1, mycolors) Then If IsInArray(Value1, mysizes) Then Range("C" & i).Value = Value1 Else Range("D" & i).Value = Value1 End If Else Range("B" & i).Value = Value1 End If If Not IsInArray(Value2, mycolors) Then If IsInArray(Value2, mysizes) Then Range("C" & i).Value = Value2 Else Range("D" & i).Value = Value2 End If Else Range("B" & i).Value = Value2 End If If Not IsInArray(Value3, mycolors) Then If IsInArray(Value3, mysizes) Then Range("C" & i).Value = Value3 Else Range("D" & i).Value = Value3 End If Else Range("B" & i).Value = Value3 End If Next i End Sub Function IsInArray(stringToBeFound As String, arr As Variant) As Boolean IsInArray = (UBound(Filter(arr, stringToBeFound)) > -1) End Function 

这将列A中的值拆分为C和D列,然后根据相应的数组testing每个值,以决定如何对其进行sorting:

之前和之后

我真的不知道有任何其他的方式来做到这一点。 如果其他人有更好的解决scheme,请分享。