2012-07-01 51 views
1

寻找我的任务的起点。Excel字符串 - 使用VBA搜索和订购

现状:

我有具有相同的结构,并包含以下几列除其他3个Excel工作表:

|ID|SubID|SubName|Description|Link1|Link2| 
|1|1|SubName 1|Desc SubName1|P00001|P00002| 
|1|2|SubName 2|Desc SubName2|P00002|P00003| 
|2|1|SubName 1|Desc SubName1|P00001|P00002| 

这里来包含细胞内多于一个的P-数线:

|3|1|SubName 1|Desc SubName1|P00001,P00002,P00003|P00001,P00002| 

我现在想通过链接1列以查找并放置在一个有序的前三列的值,以一个“链接1”工作表升IKE这样:

|P-Number|ID|SubID|SubName| 
|P00001|1|1|SubName 1| 
|P00001|2|1|SubName 1| 
|P00001|3|1|SubName 1| 
|P00002|1|2|SubName 2| 
|P00002|3|1|SubName 1| 
|P00003|3|1|SubName 1| 

而且我想这样做与链路2列也将值到一个单独的工作表。

下一步是将新工作表的P编号与像链接一样工作的字符串连接起来。这就是我迄今为止所做的工作。 另一个想法是使SubName可点击并让它跳转到三个工作表之一中的相应名称。

我不确定一个宏是正确的选择,或者一个数据透视表也可以做到这一点。

任何想法表示赞赏。 谢谢。

UPDATE: 我试图将这个概念并入我的主宏,我也处理上面提到的列。然而,由于我有几个循环遍历这部分,输出行将被列的最后一个P编号覆盖。我用这个子:

Sub PrintArray(Data As Variant, Cl As Range) 
    Cl.Resize(UBound(Data, 1), UBound(Data, 2)) = Data 
    End Sub 

而且这次调用来进行测试:

PrintArray NewArray, ActiveWorkbook.Worksheets("Link 1").Range("A2") 

我怎么能每个P-号“保存”,以新的工作表,而不必使用我的代码里面的循环?

回答

0

枢轴表不能1个细胞分裂成多个行,因此一个VBA溶液的起始点将是:

  1. 负载输入范围到一个数组(my_array = Range(...).Value2
  2. 对于每一行,分割LINK1(link_array = Split(my_array(current_row, 5), ",")
  3. 每个链路,结果追加链路和其它值到一个结果阵列
  4. 地方到工作表
  5. 排序所得范围