0

作为 VBA 的新手,如果有人能帮助我,我将不胜感激。

我想根据整个字符串中是否存在特定文本对行进行排序。

范围 B 包含:

Audi Car, Suzuki Bike, Honda Car, Volvo Bus, Benz Car, Yamaha Bike

所以我想要根据它是汽车、自行车还是公共汽车进行排序的 VBA 代码。

执行后,范围 B 应按以下方式排序:

Audi Car, Benz Car, Honda Car, Suzuki Bike, Yamaha Bike, Volvo Bus

请帮忙。

4

2 回答 2

0

使用宏记录以下步骤:

1.paste data vertically in column A (paste special - transpose) 

2.insert function Split by Space to column B (return value eg: bike, car)  

3.sort column A and B in the order you like

4.copy column A and paste special - transpose

5.stop Macro recording, change all cells (eg: .range(row,col)) 
于 2013-06-09T08:23:23.553 回答
0

如果我在哪里处理这样的问题,我会首先创建一个包含所有不同实体的数组。接下来您可以使用 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() 是我使用最多的两个。

于 2013-06-08T22:43:01.383 回答