请阅读以下模板:
PID     Status      LPID
10       Closed      25
11       Open        25
31       Open        31
25       Closed      25
54       Open        31
17       Open        17
20       Closed      31
88       closed      77
77       closed      77
现在当 PID!= LPID 时,该 PID 被定义为 CPID(子进程 ID),否则它是一个 PPID(父进程 ID)
现在我正在寻找一个代码,它将告诉哪个是父级,哪个是子级 - 意味着在另一张表中标记它们。同时我想列出所有 CPID,PPID 在同一行,如果任何 PPID 有子进程他们自己。输出如下所示
PID   Type Of Process?    Child List
10       Child
11       Child
31       Parent              54 20
25       Parent              10 11
54       Child
17       Parent
20       Child
88       Child
77       Parent              88
我已经使用 VBScript 编写了一个代码,但是使用实际工作表太慢了。对于 2500 个数据,它需要将近 1 小时。所以我想要一个比我的更快的过程。
您能在这里使用 VBscript 帮忙吗?
代码1:
  Set objExcel1 = CreateObject("Excel.Application")'Object for W2W Report Dump
  strPathExcel1 = "D:\VA\CopyofGEWingtoWing_latest_dump_21112012.xls"
  objExcel1.Workbooks.open strPathExcel1
  Set objSheet1 = objExcel1.ActiveWorkbook.Worksheets(2)
  Set objSheet2 = objExcel1.ActiveWorkbook.Worksheets(1)
    IntRow1=1
 Do While objSheet1.Cells(IntRow1, 1).Value <> ""
    IntRow2=4
    IntChildListColumn=3
    If objSheet1.Cells(IntRow1,2).Value="Parent" Then
        Do While objSheet2.Cells(IntRow2, 1).Value <> ""
             If objSheet2.Cells(IntRow2,11).Value=objSheet1.Cells(IntRow1,1).Value And objSheet2.Cells(IntRow2,11).Value <> objSheet2.Cells(IntRow2,1).Value Then
                 objSheet1.Cells(IntRow1,IntChildListColumn).Value=objSheet2.Cells(IntRow2,1).Value
                 IntChildListColumn=IntChildListColumn+1
             End If
      IntRow2=IntRow2+1
      Loop
   End If
 IntRow1=IntRow1+1
Loop
代码2:
 Flag=0
 IntColTemp=1
 IntRowTemp=3
 Set objExcel1 = CreateObject("Excel.Application")'Object for Condition Dump
 strPathExcel1 = "D:\VA\CopyofGEWingtoWing_latest_dump_21112012.xls"
 objExcel1.Workbooks.open strPathExcel1
 Set objSheet1 = objExcel1.ActiveWorkbook.Worksheets(1)
 Set objSheet2 = objExcel1.ActiveWorkbook.Worksheets(2)
 IntRow1=4
 IntRow2=1
Do While objSheet1.Cells(IntRow1, 1).Value <> ""
  objSheet2.Cells(IntRow2, 1).Value = objSheet1.Cells(IntRow1, 1).Value
   IntColTemp=1
   Flag=0
  'This will travarse to the Parent Business Process ID column horizantally in the excel.
  Do While Flag=0
  If objSheet1.Cells(IntRowTemp,IntColTemp).Value="Parent Business Process ID" Then
      Flag=1       
  End If
      IntColTemp=IntColTemp+1
Loop
      IntColTemp=IntColTemp-1
      'MsgBox(IntColTemp)
  Strcmp1=trim(objSheet1.Cells(IntRow1, 1).Value)
  Strcmp2=trim(objSheet1.Cells(IntRow1,IntColTemp).Value)
  If Strcmp1=Strcmp2 Then
      objSheet2.Cells(IntRow2, 2).Value="Parent" 
  Else
      objSheet2.Cells(IntRow2, 2).Value="child"
  End If
   IntRow1=IntRow1+1
   IntRow2=IntRow2+1
  Loop