在VBA中,如果一个单元格包含某些文本,并且将范围设置为列,则可以编写一个脚本来执行该function

我有很多列的数据很长的string。 这些列的名称都有“Person_1_Date”,“Person_1_Name”,“Person_2_Name”,“Person_2_Date”等。

我试图编写一个脚本,将每个人(Person_1,Person_2)等标题,并重新安排他们在一个特定的顺序(date,名称,date,名称,而不是date,名称,名称,date,因为它在这里)。

我正在尝试的粗略部分脚本看起来如下所示:

Sub Test() Dim Rng As Range Dim k As Long Set Rng = Columns("B:B") For k = Columns("B").Column To Columns("DE").Column Step 1 If (IsNumber(Search("Person_x_Date", "k" & 1)) Then 'Looking to make this get called if the Search comes back with a number' Columns("k:k").Cut Rng.Selection.Insert Shift:=xlToRight Next k End Sub 

我正在寻找帮助的一些事情。 是否可以编写一个search函数来查找单元格中的部分内容,而忽略另一个? 随着Person_x_Date我希望它find一个单元格的位置的X,所以它可以findPerson_1_Date,Person_2_Date等,这是可能的吗?

其余的是一团糟。 本质上,我想设置一个范围作为整个列,如果search发现的东西,它会复制并粘贴到正确的地方,并继续下去,直到find接下来应该(像Person_X_Date)。

我知道我写的代码的后半部分是相当远的。 我只是在寻找任何的build议来帮助我把它放在一起。

请注意,excelsorting可以水平完成(大多数人只是垂直使用)。

这实际上允许您根据行中的值对列进行sorting。 (正常垂直sorting将根据列中的值对行进行sorting)。

在sorting对话框中,单击选项button以select水平sorting。

我认为这实际上会给你你需要的东西。

但是,如果您需要处理数据值,则可以创build公式行来更改值,然后对公式行中的数据进行sorting。