String Excel字符串-使用VBA进行搜索和排序

String Excel字符串-使用VBA进行搜索和排序,string,excel,vba,pivot,String,Excel,Vba,Pivot,正在为我的任务寻找起点 情况: 我有三张结构相同的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|SubN

正在为我的任务寻找起点

情况:

我有三张结构相同的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|
现在我想查看Link1列,并将这些值与前三列按排序顺序放入“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编号与一个类似链接的字符串连接起来。这就是我迄今为止所做的工作。 另一个想法是使子名称可单击,并使其跳转到三个工作表中的相应名称

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

欢迎提出任何意见。 谢谢

更新: 我试图将这个概念融入到我的主宏中,在主宏中我还处理上面提到的列。但是,由于我有几个循环在这部分中运行,所以输出行将被列的最后一个P编号覆盖。我使用此Sub:

 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编号“保存”到新工作表中,而不必在代码中使用循环?

透视表不能将一个单元格拆分为多行,因此VBA解决方案的起点是:

  • 将输入范围加载到数组中(
    my_array=range(…)。值2
  • 对于每一行,拆分Link1(
    链接数组=拆分(我的数组(当前行,5),“,”)
  • 对于每个链接,将链接和其他值附加到结果数组中
  • 将结果放在工作表上
  • 对结果范围进行排序