Excelstring – 使用VBA进行search和sorting

寻找我的任务的起点。

情况:

我有三个具有相同结构的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-Number的行:

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

我现在想要查看Link1列,并将这些值与前三列以sorting顺序放置到“Link1”工作表中,如下所示:

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

而且我想对Link2列做同样的处理,把值放到一个单独的工作表中。

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

我不确定一个macros是否是正确的select,或者一个Pivot表也可以做到这一点。

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

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

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

而这个testing呼吁:

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

我怎样才能“保存”每个P号码到新的工作表,而不必在我的代码中使用循环?

数据透视表不能将一个单元格分成多行,因此VBA解决scheme的出发点是:

  1. 将input范围加载到数组中( my_array = Range(...).Value2
  2. 对于每一行,分割Link1( link_array = Split(my_array(current_row, 5), ",")
  3. 对于每个链接,将链接和其他值附加到结果数组中
  4. 将结果放在工作表上
  5. 对结果范围进行sorting