寻找我的任务的起点。
情况:
我有三个具有相同结构的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列并将这些带有前三列的值按排序顺序放到“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-Number连接到一个像链接一样工作的字符串。这就是我到目前为止所做的工作。 另一个想法是使SubName可以点击并让它跳转到三个工作表之一的相应名称。
我不确定宏是否是正确的选择,或者Pivot表也可以做到这一点。
任何想法都表示赞赏。 感谢。
更新: 我试图将这个概念合并到我的主宏中,我也处理上面提到的列。但是,由于我有几个循环遍历此部分,输出行将被列的最后一个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-number“保存”到新工作表中?
答案 0 :(得分:0)
数据透视表不能将1个单元格拆分成多行,因此VBA解决方案的起点是:
my_array = Range(...).Value2
)link_array = Split(my_array(current_row, 5), ",")
)