Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于串片的VBA排序_Vba - Fatal编程技术网

基于串片的VBA排序

基于串片的VBA排序,vba,Vba,作为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 请帮助。如果

作为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

请帮助。

如果我想在哪里处理这样的问题,我会首先用所有不同的实体制作一个数组。 接下来可以使用InStr(startsearchingposition、String、searchforvalue)。InStr方法返回字符串形式的searchvalue的startposition,否则返回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()是我使用最多的两个。使用宏记录以下步骤:

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)) 

那么,到目前为止你得到了什么?有代码示例吗?有错误吗?什么?数据是什么形式的?访问表中的行?excel工作簿?vb收藏?vb数组?