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的出发点是:
- 将input范围加载到数组中(
my_array = Range(...).Value2
) - 对于每一行,分割Link1(
link_array = Split(my_array(current_row, 5), ",")
) - 对于每个链接,将链接和其他值附加到结果数组中
- 将结果放在工作表上
- 对结果范围进行sorting