2015-08-13 32 views
2

,那么您可以编写一个脚本来执行此功能。我有一长串包含大量列的数据。这些列的名称都有“Person_1_Date”,“Person_1_Name”,“Person_2_Name”,“Person_2_Date”等。在VBA中,如果一个单元格包含某些文本,并且将范围设置为列

我正在尝试编写一个脚本,用于为每个人(Person_1,Person_2)并按特定顺序(日期,名称,日期,名称,而不是日期,名称,名称,日期,因为它在这里)重新排列它们。

我试验的粗略部分脚本看起来像以下至今:

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 

有几件事情我在寻找的帮助是否有可能写一个搜索功能,将寻找一个什么样的细胞中的部分,而忽略另一个?用Person_x_Date我希望能找到一个单元代替x的单元,所以它可以找到Person_1_Date,Person_2_Date等。这可能吗?

其余的是一团糟。实质上,我想将范围设置为整个列,如果搜索找到某些内容,它会将其复制并粘贴到正确的位置,然后再继续,直到找到接下来应该出现的内容(如Person_X_Date)。

我知道我写的代码的后半部分与此相距甚远。我只是寻找任何建议来帮助我把它们放在一起。

+0

是它始终是一个单元都有一个的情况下人名,然后是下划线,然后是一些数字,然后是另一个下划线,然后是日期? –

回答

3

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

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

在排序对话框中,单击选项按钮选择水平排序。

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

但是,如果你需要操作的数据值,你可以创建一个公式列改变值,然后排序上的公式行中的数据..

+1

注意:我认为使用VBA进行横向排序可能是您需要做的第一件事,那么您可以根据需要修改列的顺序。这取决于你的数据值, – HarveyFrench

+0

哇,我不敢相信我以前没有想到这个。太感谢了! – user1996971

+1

PS。如果您需要操作数据值,请创建公式行,然后更改这些值,然后对公式行中的数据进行排序。 – HarveyFrench

相关问题