标题:关于文档资料排序的问题
只看楼主
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1817
专家分:3681
注 册:2011-3-24
结帖率:98.24%
已结贴  问题点数:20 回复次数:7 
关于文档资料排序的问题
因为公司防火墙无法上传档案

请问要如何写程式,才能将文件一的资料,变成文件二的资料格式

文件一 : 左右两份A,B档案资料
A               B
0    OS_FUNC_N    0    OS_FUNC_N
1    OS_PPMU_N    1    OS_PPMU_N
2    OS_FUNC_N_RT    2    OS_FUNC_N_RT
3    OS_FUNC_P    3    OS_FUNC_P
4    OS_PPMU_P    4    OS_PPMU_P
5    OS_FUNC_P_RT    5    OS_FUNC_P_RT
6    TEST_PowerShort    6    WIRE_SWEEP
7    TEST_EFUSE_CP_INFORMATION_CHECK    7    TEST_PowerShort
8    TEST_IDDQ    8    TEST_EFUSE_CP_INFORMATION_CHECK
9    TEST_NANDTREE    9    TEST_IDDQ
10    TEST_ATPG_STUCK_PTN_MERGE    10    TEST_NANDTREE
11    TEST_ATPG_TRANS_PTN_MERGE    11    TEST_ATPG_STUCK_PTN_MERGE_33M
12    TEST_CLK_PROBE    12    TEST_ATPG_STUCK_PTN_MERGE
13    TEST_CLK_PROBE_NP_LOW    13    TEST_ATPG_TRANS_PTN_MERGE
14    TEST_CLK_PROBE_NP_HIGH    14    TEST_CLK_PROBE
15    TEST_MBIST    15    TEST_CLK_PROBE_NP_LOW
16    TEST_GBE_T01    16    TEST_CLK_PROBE_NP_HIGH
17    TEST_GBE_T02    17    TEST_MBIST
18    TEST_GBE_T03_sendD    18    TEST_GBE_T01
19    TEST_GBE_T04_all    19    TEST_GBE_T02
20    TEST_GBE_T06_P0_TTR    20    TEST_GBE_T03_sendD
21    TEST_GBE_T04_P0    21    TEST_GBE_T04_all
22    TEST_GBE_T05_P0    22    TEST_GBE_T05_Interpolation
23    TEST_GBE_T06_P0    23    TEST_GBE_T06_Interpolation
24    TEST_GBE_T06_P1_TTR    24    TEST_GBE_T14
25    TEST_GBE_T04_P1    25    TEST_GBE_T07_sendD
26    TEST_GBE_T05_P1    26    TEST_GBE_T07_1_sendD
27    TEST_GBE_T06_P1    27    TEST_GBE_T08_sendD
28    TEST_GBE_T06_P2_TTR    28    TEST_GBE_T09_sendD
29    TEST_GBE_T04_P2    29    TEST_GBE_T10_sendD
30    TEST_GBE_T05_P2    30    TEST_GBE_T11_sendD
31    TEST_GBE_T06_P2    31    TEST_GBE_T12_sendD
32    TEST_GBE_T06_P3_TTR    32    TEST_GBE_T13_2_ATE_GBE_TXT_MAX
33    TEST_GBE_T04_P3    33    TEST_GBE_T15
34    TEST_GBE_T05_P3    34    TEST_GBE_T16_dig
35    TEST_GBE_T06_P3    35    TEST_GBE_T17
36    TEST_GBE_T07_sendD    36    TEST_USB_P0_T01
37    TEST_GBE_T07_1_sendD    37    TEST_USB_P0_T02
38    TEST_GBE_T08_sendD    38    TEST_USB_P0_T12
39    TEST_GBE_T09_sendD    39    TEST_USB_P0_T13
40    TEST_GBE_T10_sendD    40    TEST_USB_P0_T14
41    TEST_GBE_T11_sendD    41    TEST_USB_P0_T15
42    TEST_GBE_T12_sendD    42    TEST_USB_P0_T16
43    TEST_GBE_T13    43    TEST_USB_P0_T17
44    TEST_GBE_T14    44    TEST_USB_P1_T01
45    TEST_GBE_T15    45    TEST_USB_P1_T02
46    TEST_GBE_T16_dig    46    TEST_USB_P1_T12
47    TEST_GBE_T17    47    TEST_USB_P1_T13
48    TEST_USB_P0_T01    48    TEST_USB_P1_T14
49    TEST_USB_P0_T02    49    TEST_USB_P1_T15
50    TEST_USB_P0_T12    50    TEST_USB_P1_T16
51    TEST_USB_P0_T13    51    TEST_USB_P1_T17
52    TEST_USB_P0_T14    52    TEST_PCIE_P0_T01
53    TEST_USB_P0_T15    53    TEST_PCIE_P0_T02
54    TEST_USB_P0_T16    54    TEST_PCIE_P0_T04
55    TEST_USB_P0_T17    55    TEST_PCIE_P0_T05
56    TEST_USB_P1_T01    56    TEST_PCIE_P0_T051
57    TEST_USB_P1_T02    57    TEST_PCIE_P0_T06
58    TEST_USB_P1_T12    58    TEST_PCIE_P0_T061
59    TEST_USB_P1_T13    59    TEST_PCIE_P0_T07
60    TEST_USB_P1_T14    60    TEST_PCIE_P0_T08
61    TEST_USB_P1_T15    61    TEST_PCIE_P1_T101
62    TEST_USB_P1_T16    62    TEST_PCIE_P1_T102
63    TEST_USB_P1_T17    63    TEST_PCIE_P1_T106
64    TEST_PCIE_P0_T01    64    TEST_PCIE_P1_T107
65    TEST_PCIE_P0_T02    65    TEST_PCIE_P1_T109
66    TEST_PCIE_P0_T04    66    TEST_PCIE_P1_T301
67    TEST_PCIE_P0_T05    67    TEST_PCIE_P1_T302
68    TEST_PCIE_P0_T051    68    TEST_PCIE_P1_T304
69    TEST_PCIE_P0_T06    69    TEST_PCIE_P1_T309
70    TEST_PCIE_P0_T061    70    TEST_PCIE_P1_T401
71    TEST_PCIE_P0_T07    71    TEST_PCIE_P1_T502
72    TEST_PCIE_P0_T08    72    TEST_ABIST_PCIE_P1_T202_T203
73    TEST_PCIE_P1_T101    73    ABIST_Flash_Firmware_Version_Check
74    TEST_PCIE_P1_T102    74    Thermal_IC
75    TEST_PCIE_P1_T106    75    AUXADC_CALIBRATION
76    TEST_PCIE_P1_T107    76    AUXADC_EFUSE_BLANK_CHECK_DSSC
77    TEST_PCIE_P1_T109    77    AUXADC_BURN_CODE
78    TEST_PCIE_P1_T301    78    AUXADC_EFUSE_BURN_CHECK_PASS
79    TEST_PCIE_P1_T302    79    ABIST_DDR3_PAT0
80    TEST_PCIE_P1_T304    80    TEST_ABIST_PON_T00
81    TEST_PCIE_P1_T309    81    TEST_ABIST_PON_T01
82    TEST_PCIE_P1_T401    82    TEST_ABIST_PON_T10
83    TEST_PCIE_P1_T502    83    TEST_ABIST_PON_T11
84    TEST_ABIST_PCIE_P1_T202_T203    84    TEST_ABIST_PON_T12
85    ABIST_Flash_Firmware_Version_Check    85    TEST_ABIST_PON_T13
86    Thermal_IC    86    TEST_ABIST_PON_T14
87    AUXADC_CALIBRATION    87    TEST_ABIST_PON_T15
88    AUXADC_EFUSE_BLANK_CHECK_DSSC    88    TEST_EFUSE_BURN_CHECK_7528HU
89    AUXADC_BURN_CODE    89    All_Setting_Restore
90    AUXADC_EFUSE_BURN_CHECK_PASS        
91    ABIST_DDR3_PAT0        
92    TEST_ABIST_PON_T00        
93    TEST_ABIST_PON_T01        
94    TEST_ABIST_PON_T10        
95    TEST_ABIST_PON_T11        
96    TEST_ABIST_PON_T12        
97    TEST_ABIST_PON_T13        
98    TEST_ABIST_PON_T14        
99    TEST_ABIST_PON_T15        
100    TEST_EFUSE_BURN_CHECK_7528HU        
101    All_Setting_Restore        

文件二 : 左右两份A,B档案资料
A               B
0    OS_FUNC_N    0    OS_FUNC_N
1    OS_PPMU_N    1    OS_PPMU_N
2    OS_FUNC_N_RT    2    OS_FUNC_N_RT
3    OS_FUNC_P    3    OS_FUNC_P
4    OS_PPMU_P    4    OS_PPMU_P
5    OS_FUNC_P_RT    5    OS_FUNC_P_RT
                    6    WIRE_SWEEP
6    TEST_PowerShort    7    TEST_PowerShort
7    TEST_EFUSE_CP_INFORMATION_CHECK    8    TEST_EFUSE_CP_INFORMATION_CHECK
8    TEST_IDDQ    9    TEST_IDDQ
9    TEST_NANDTREE    10    TEST_NANDTREE
                    11    TEST_ATPG_STUCK_PTN_MERGE_33M
10    TEST_ATPG_STUCK_PTN_MERGE    12    TEST_ATPG_STUCK_PTN_MERGE
11    TEST_ATPG_TRANS_PTN_MERGE    13    TEST_ATPG_TRANS_PTN_MERGE
12    TEST_CLK_PROBE    14    TEST_CLK_PROBE
13    TEST_CLK_PROBE_NP_LOW    15    TEST_CLK_PROBE_NP_LOW
14    TEST_CLK_PROBE_NP_HIGH    16    TEST_CLK_PROBE_NP_HIGH
15    TEST_MBIST    17    TEST_MBIST
16    TEST_GBE_T01    18    TEST_GBE_T01
17    TEST_GBE_T02    19    TEST_GBE_T02
18    TEST_GBE_T03_sendD    20    TEST_GBE_T03_sendD
19    TEST_GBE_T04_all    21    TEST_GBE_T04_all
20    TEST_GBE_T06_P0_TTR        
21    TEST_GBE_T04_P0        
22    TEST_GBE_T05_P0    22    TEST_GBE_T05_Interpolation
23    TEST_GBE_T06_P0    23    TEST_GBE_T06_Interpolation
24    TEST_GBE_T06_P1_TTR        
25    TEST_GBE_T04_P1        
26    TEST_GBE_T05_P1        
27    TEST_GBE_T06_P1        
28    TEST_GBE_T06_P2_TTR        
29    TEST_GBE_T04_P2        
30    TEST_GBE_T05_P2        
31    TEST_GBE_T06_P2        
32    TEST_GBE_T06_P3_TTR        
33    TEST_GBE_T04_P3        
34    TEST_GBE_T05_P3        
35    TEST_GBE_T06_P3        
                        24    TEST_GBE_T14
36    TEST_GBE_T07_sendD    25    TEST_GBE_T07_sendD
37    TEST_GBE_T07_1_sendD    26    TEST_GBE_T07_1_sendD
38    TEST_GBE_T08_sendD    27    TEST_GBE_T08_sendD
39    TEST_GBE_T09_sendD    28    TEST_GBE_T09_sendD
40    TEST_GBE_T10_sendD    29    TEST_GBE_T10_sendD
41    TEST_GBE_T11_sendD    30    TEST_GBE_T11_sendD
42    TEST_GBE_T12_sendD    31    TEST_GBE_T12_sendD
43    TEST_GBE_T13        
                        32    TEST_GBE_T13_2_ATE_GBE_TXT_MAX
44    TEST_GBE_T14        
45    TEST_GBE_T15    33    TEST_GBE_T15
46    TEST_GBE_T16_dig    34    TEST_GBE_T16_dig
47    TEST_GBE_T17    35    TEST_GBE_T17
48    TEST_USB_P0_T01    36    TEST_USB_P0_T01
49    TEST_USB_P0_T02    37    TEST_USB_P0_T02
50    TEST_USB_P0_T12    38    TEST_USB_P0_T12
51    TEST_USB_P0_T13    39    TEST_USB_P0_T13
52    TEST_USB_P0_T14    40    TEST_USB_P0_T14
53    TEST_USB_P0_T15    41    TEST_USB_P0_T15
54    TEST_USB_P0_T16    42    TEST_USB_P0_T16
55    TEST_USB_P0_T17    43    TEST_USB_P0_T17
56    TEST_USB_P1_T01    44    TEST_USB_P1_T01
57    TEST_USB_P1_T02    45    TEST_USB_P1_T02
58    TEST_USB_P1_T12    46    TEST_USB_P1_T12
59    TEST_USB_P1_T13    47    TEST_USB_P1_T13
60    TEST_USB_P1_T14    48    TEST_USB_P1_T14
61    TEST_USB_P1_T15    49    TEST_USB_P1_T15
62    TEST_USB_P1_T16    50    TEST_USB_P1_T16
63    TEST_USB_P1_T17    51    TEST_USB_P1_T17
64    TEST_PCIE_P0_T01    52    TEST_PCIE_P0_T01
65    TEST_PCIE_P0_T02    53    TEST_PCIE_P0_T02
66    TEST_PCIE_P0_T04    54    TEST_PCIE_P0_T04
67    TEST_PCIE_P0_T05    55    TEST_PCIE_P0_T05
68    TEST_PCIE_P0_T051    56    TEST_PCIE_P0_T051
69    TEST_PCIE_P0_T06    57    TEST_PCIE_P0_T06
70    TEST_PCIE_P0_T061    58    TEST_PCIE_P0_T061
71    TEST_PCIE_P0_T07    59    TEST_PCIE_P0_T07
72    TEST_PCIE_P0_T08    60    TEST_PCIE_P0_T08
73    TEST_PCIE_P1_T101    61    TEST_PCIE_P1_T101
74    TEST_PCIE_P1_T102    62    TEST_PCIE_P1_T102
75    TEST_PCIE_P1_T106    63    TEST_PCIE_P1_T106
76    TEST_PCIE_P1_T107    64    TEST_PCIE_P1_T107
77    TEST_PCIE_P1_T109    65    TEST_PCIE_P1_T109
78    TEST_PCIE_P1_T301    66    TEST_PCIE_P1_T301
79    TEST_PCIE_P1_T302    67    TEST_PCIE_P1_T302
80    TEST_PCIE_P1_T304    68    TEST_PCIE_P1_T304
81    TEST_PCIE_P1_T309    69    TEST_PCIE_P1_T309
82    TEST_PCIE_P1_T401    70    TEST_PCIE_P1_T401
83    TEST_PCIE_P1_T502    71    TEST_PCIE_P1_T502
84    TEST_ABIST_PCIE_P1_T202_T203    72    TEST_ABIST_PCIE_P1_T202_T203
85    ABIST_Flash_Firmware_Version_Check    73    ABIST_Flash_Firmware_Version_Check
86    Thermal_IC    74    Thermal_IC
87    AUXADC_CALIBRATION    75    AUXADC_CALIBRATION
88    AUXADC_EFUSE_BLANK_CHECK_DSSC    76    AUXADC_EFUSE_BLANK_CHECK_DSSC
89    AUXADC_BURN_CODE    77    AUXADC_BURN_CODE
90    AUXADC_EFUSE_BURN_CHECK_PASS    78    AUXADC_EFUSE_BURN_CHECK_PASS
91    ABIST_DDR3_PAT0    79    ABIST_DDR3_PAT0
92    TEST_ABIST_PON_T00    80    TEST_ABIST_PON_T00
93    TEST_ABIST_PON_T01    81    TEST_ABIST_PON_T01
94    TEST_ABIST_PON_T10    82    TEST_ABIST_PON_T10
95    TEST_ABIST_PON_T11    83    TEST_ABIST_PON_T11
96    TEST_ABIST_PON_T12    84    TEST_ABIST_PON_T12
97    TEST_ABIST_PON_T13    85    TEST_ABIST_PON_T13
98    TEST_ABIST_PON_T14    86    TEST_ABIST_PON_T14
99    TEST_ABIST_PON_T15    87    TEST_ABIST_PON_T15
100    TEST_EFUSE_BURN_CHECK_7528HU    88    TEST_EFUSE_BURN_CHECK_7528HU
101    All_Setting_Restore    89    All_Setting_Restore

既要排文件上下的ID序,又要排文件名称左右可能相同序,实在排不到就让某份文档该行空白,
两个档案的ID和名称不能变。

[此贴子已经被作者于2020-3-27 19:04编辑过]

搜索更多相关主题的帖子: 资料 文档 档案 左右 文件 
2020-03-27 18:50
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:14 
1、打开文件。读行,分列。按这个格式应该分为4列,前2列属于A,后两列属于B。
2、对A以ID排序,对B以ID排序。如果能保证原始文件已按ID排了序的,此步可跳。
3、二个标记,一个A列当前序号,一个是B列当前序号。
4、以A的ID,到B中查找内容,
   找到内容,等于B列当前序号+1,输出A 和B ,当前序号=查找到后的序号
             不等于B列当前序号+1,输出多行,每行A输出空白,B输出当前序号+1到查找到ID-1之间的内容,当前序号=查找到后的序号
   没找到内容,输出A列和B空白。

这个思路可行吗?

授人于鱼,不如授人于渔
早已停用QQ了
2020-03-27 19:51
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1817
专家分:3681
注 册:2011-3-24
得分:0 
以下是引用风吹过b在2020-3-27 19:51:45的发言:

1、打开文件。读行,分列。按这个格式应该分为4列,前2列属于A,后两列属于B。
2、对A以ID排序,对B以ID排序。如果能保证原始文件已按ID排了序的,此步可跳。
3、二个标记,一个A列当前序号,一个是B列当前序号。
4、以A的ID,到B中查找内容,
   找到内容,等于B列当前序号+1,输出A 和B ,当前序号=查找到后的序号
             不等于B列当前序号+1,输出多行,每行A输出空白,B输出当前序号+1到查找到ID-1之间的内容,当前序号=查找到后的序号
   没找到内容,输出A列和B空白。

这个思路可行吗?


假设A和B已载入array
4、以A的ID,到B中查找内容,....
for i=0 to UBound(A)
    iget=false
    for j=0 to UBound(B)
        if A(i)=B(j) then
            等于B列当前序号+1'B列序号不能和名称分离
            iget=true
        endif
        if iget=false then
            没找到内容,输出A列和B空白'不能两边都是空白
        endif
    next j
next i

此范例A和B加上各自空白,最终结果总行数皆为106行,这106又怎么才算得出来?

1 ->     0    OS_FUNC_N    0    OS_FUNC_N
2 ->     1    OS_PPMU_N    1    OS_PPMU_N
3 ->     2    OS_FUNC_N_RT    2    OS_FUNC_N_RT
4 ->     3    OS_FUNC_P    3    OS_FUNC_P
5 ->     4    OS_PPMU_P    4    OS_PPMU_P
6 ->     5    OS_FUNC_P_RT    5    OS_FUNC_P_RT
7 ->             6    WIRE_SWEEP
8 ->     6    TEST_PowerShort    7    TEST_PowerShort
9 ->     7    TEST_EFUSE_CP_INFORMATION_CHECK    8    TEST_EFUSE_CP_INFORMATION_CHECK
10 ->     8    TEST_IDDQ    9    TEST_IDDQ
11 ->     9    TEST_NANDTREE    10    TEST_NANDTREE
12 ->             11    TEST_ATPG_STUCK_PTN_MERGE_33M
13 ->     10    TEST_ATPG_STUCK_PTN_MERGE    12    TEST_ATPG_STUCK_PTN_MERGE
14 ->     11    TEST_ATPG_TRANS_PTN_MERGE    13    TEST_ATPG_TRANS_PTN_MERGE
15 ->     12    TEST_CLK_PROBE    14    TEST_CLK_PROBE
16 ->     13    TEST_CLK_PROBE_NP_LOW    15    TEST_CLK_PROBE_NP_LOW
17 ->     14    TEST_CLK_PROBE_NP_HIGH    16    TEST_CLK_PROBE_NP_HIGH
18 ->     15    TEST_MBIST    17    TEST_MBIST
19 ->     16    TEST_GBE_T01    18    TEST_GBE_T01
20 ->     17    TEST_GBE_T02    19    TEST_GBE_T02
21 ->     18    TEST_GBE_T03_sendD    20    TEST_GBE_T03_sendD
22 ->     19    TEST_GBE_T04_all    21    TEST_GBE_T04_all
23 ->     20    TEST_GBE_T06_P0_TTR        
24 ->     21    TEST_GBE_T04_P0        
25 ->     22    TEST_GBE_T05_P0    22    TEST_GBE_T05_Interpolation
26 ->     23    TEST_GBE_T06_P0    23    TEST_GBE_T06_Interpolation
27 ->     24    TEST_GBE_T06_P1_TTR        
28 ->     25    TEST_GBE_T04_P1        
29 ->     26    TEST_GBE_T05_P1        
30 ->     27    TEST_GBE_T06_P1        
31 ->     28    TEST_GBE_T06_P2_TTR        
32 ->     29    TEST_GBE_T04_P2        
33 ->     30    TEST_GBE_T05_P2        
34 ->     31    TEST_GBE_T06_P2        
35 ->     32    TEST_GBE_T06_P3_TTR        
36 ->     33    TEST_GBE_T04_P3        
37 ->     34    TEST_GBE_T05_P3        
38 ->     35    TEST_GBE_T06_P3        
39 ->             24    TEST_GBE_T14
40 ->     36    TEST_GBE_T07_sendD    25    TEST_GBE_T07_sendD
41 ->     37    TEST_GBE_T07_1_sendD    26    TEST_GBE_T07_1_sendD
42 ->     38    TEST_GBE_T08_sendD    27    TEST_GBE_T08_sendD
43 ->     39    TEST_GBE_T09_sendD    28    TEST_GBE_T09_sendD
44 ->     40    TEST_GBE_T10_sendD    29    TEST_GBE_T10_sendD
45 ->     41    TEST_GBE_T11_sendD    30    TEST_GBE_T11_sendD
46 ->     42    TEST_GBE_T12_sendD    31    TEST_GBE_T12_sendD
47 ->     43    TEST_GBE_T13        
48 ->             32    TEST_GBE_T13_2_ATE_GBE_TXT_MAX
49 ->     44    TEST_GBE_T14        
50 ->     45    TEST_GBE_T15    33    TEST_GBE_T15
51 ->     46    TEST_GBE_T16_dig    34    TEST_GBE_T16_dig
52 ->     47    TEST_GBE_T17    35    TEST_GBE_T17
53 ->     48    TEST_USB_P0_T01    36    TEST_USB_P0_T01
54 ->     49    TEST_USB_P0_T02    37    TEST_USB_P0_T02
55 ->     50    TEST_USB_P0_T12    38    TEST_USB_P0_T12
56 ->     51    TEST_USB_P0_T13    39    TEST_USB_P0_T13
57 ->     52    TEST_USB_P0_T14    40    TEST_USB_P0_T14
58 ->     53    TEST_USB_P0_T15    41    TEST_USB_P0_T15
59 ->     54    TEST_USB_P0_T16    42    TEST_USB_P0_T16
60 ->     55    TEST_USB_P0_T17    43    TEST_USB_P0_T17
61 ->     56    TEST_USB_P1_T01    44    TEST_USB_P1_T01
62 ->     57    TEST_USB_P1_T02    45    TEST_USB_P1_T02
63 ->     58    TEST_USB_P1_T12    46    TEST_USB_P1_T12
64 ->     59    TEST_USB_P1_T13    47    TEST_USB_P1_T13
65 ->     60    TEST_USB_P1_T14    48    TEST_USB_P1_T14
66 ->     61    TEST_USB_P1_T15    49    TEST_USB_P1_T15
67 ->     62    TEST_USB_P1_T16    50    TEST_USB_P1_T16
68 ->     63    TEST_USB_P1_T17    51    TEST_USB_P1_T17
69 ->     64    TEST_PCIE_P0_T01    52    TEST_PCIE_P0_T01
70 ->     65    TEST_PCIE_P0_T02    53    TEST_PCIE_P0_T02
71 ->     66    TEST_PCIE_P0_T04    54    TEST_PCIE_P0_T04
72 ->     67    TEST_PCIE_P0_T05    55    TEST_PCIE_P0_T05
73 ->     68    TEST_PCIE_P0_T051    56    TEST_PCIE_P0_T051
74 ->     69    TEST_PCIE_P0_T06    57    TEST_PCIE_P0_T06
75 ->     70    TEST_PCIE_P0_T061    58    TEST_PCIE_P0_T061
76 ->     71    TEST_PCIE_P0_T07    59    TEST_PCIE_P0_T07
77 ->     72    TEST_PCIE_P0_T08    60    TEST_PCIE_P0_T08
78 ->     73    TEST_PCIE_P1_T101    61    TEST_PCIE_P1_T101
79 ->     74    TEST_PCIE_P1_T102    62    TEST_PCIE_P1_T102
80 ->     75    TEST_PCIE_P1_T106    63    TEST_PCIE_P1_T106
81 ->     76    TEST_PCIE_P1_T107    64    TEST_PCIE_P1_T107
82 ->     77    TEST_PCIE_P1_T109    65    TEST_PCIE_P1_T109
83 ->     78    TEST_PCIE_P1_T301    66    TEST_PCIE_P1_T301
84 ->     79    TEST_PCIE_P1_T302    67    TEST_PCIE_P1_T302
85 ->     80    TEST_PCIE_P1_T304    68    TEST_PCIE_P1_T304
86 ->     81    TEST_PCIE_P1_T309    69    TEST_PCIE_P1_T309
87 ->     82    TEST_PCIE_P1_T401    70    TEST_PCIE_P1_T401
88 ->     83    TEST_PCIE_P1_T502    71    TEST_PCIE_P1_T502
89 ->     84    TEST_ABIST_PCIE_P1_T202_T203    72    TEST_ABIST_PCIE_P1_T202_T203
90 ->     85    ABIST_Flash_Firmware_Version_Check    73    ABIST_Flash_Firmware_Version_Check
91 ->     86    Thermal_IC    74    Thermal_IC
92 ->     87    AUXADC_CALIBRATION    75    AUXADC_CALIBRATION
93 ->     88    AUXADC_EFUSE_BLANK_CHECK_DSSC    76    AUXADC_EFUSE_BLANK_CHECK_DSSC
94 ->     89    AUXADC_BURN_CODE    77    AUXADC_BURN_CODE
95 ->     90    AUXADC_EFUSE_BURN_CHECK_PASS    78    AUXADC_EFUSE_BURN_CHECK_PASS
96 ->     91    ABIST_DDR3_PAT0    79    ABIST_DDR3_PAT0
97 ->     92    TEST_ABIST_PON_T00    80    TEST_ABIST_PON_T00
98 ->     93    TEST_ABIST_PON_T01    81    TEST_ABIST_PON_T01
99 ->     94    TEST_ABIST_PON_T10    82    TEST_ABIST_PON_T10
100 ->     95    TEST_ABIST_PON_T11    83    TEST_ABIST_PON_T11
101 ->     96    TEST_ABIST_PON_T12    84    TEST_ABIST_PON_T12
102 ->     97    TEST_ABIST_PON_T13    85    TEST_ABIST_PON_T13
103 ->     98    TEST_ABIST_PON_T14    86    TEST_ABIST_PON_T14
104 ->     99    TEST_ABIST_PON_T15    87    TEST_ABIST_PON_T15
105 ->     100    TEST_EFUSE_BURN_CHECK_7528HU    88    TEST_EFUSE_BURN_CHECK_7528HU
106 ->     101    All_Setting_Restore    89    All_Setting_Restore



不要選我當版主
2020-03-30 11:22
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1817
专家分:3681
注 册:2011-3-24
得分:0 
1.第一步算总行数
for i=0 to UBound(B)
    iget=false
    for j=0 to UBound(A)
        if A(j)=B(i) then
            iget=true
            exit for
        endif
        if iget=false then
            k=k+1
        endif
    next j
next i
k=k-1

=> k=101+5=106 '数字有兜出来,但是我搞不懂逻辑上的解释,还是说只是刚好蒙到的。

2.排序(可创C(106)和D(106)去塞值)
但需两边互为基准做空行,这我就想不通要怎写了?

不要選我當版主
2020-03-30 11:34
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1817
专家分:3681
注 册:2011-3-24
得分:0 
承前页,换个思路,假设A和B已载入array
private type iData
    ID as string
    Name as string
end type

Dim AA(106) as iData,BB(106) as iData
Dim iCount as int
'先处理两边共有的
...

'再处理两边都没有的
...


[此贴子已经被作者于2020-3-30 15:25编辑过]


不要選我當版主
2020-03-30 14:50
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
按我的思路写出来的代码。你试试看。
程序代码:
Option Explicit

Dim path As String

Private Sub Command1_Click()
Const fg = "    "        '写入数据的分隔符,看不懂,这里是4个空格

Dim a1() As String, a2() As String      '四列数据,前二列A,后二列为B
Dim b1() As String, b2() As String

Dim s As String
Dim fn As String        '读取的文件名

Dim stmp() As Byte      '文件内容
Dim s1() As String      '每行的内容
Dim s2() As String      '第行拆分为列的内容

Dim i As Long, j As Long

Dim aj As Long, bj As Long
Dim hj As Long
Dim lj As Long

fn = path & "a.txt"

'--------打开文件----------
    Open fn For Binary As #1
        ReDim stmp(LOF(1) - 1)
        Get #1, , stmp
    Close #1
    s = StrConv(stmp, vbUnicode)
    s1 = Split(s, vbCrLf)
    
'---------拆解数据-----------
    aj = 0
    bj = 0
    hj = UBound(s1)
    ReDim a1(hj)
    ReDim b1(hj)
    ReDim a2(hj)
    ReDim b2(hj)
    
    For i = 0 To hj
        s = Replace(s1(i), vbTab, " ")      '好像文档包括了TAB键,干掉
        Do                                  '循环去多余空格
            j = Len(s)
            s = Replace(s, "  ", " ")
        Loop While Len(s) <> j
        
        s2 = Split(s, " ")
        Select Case UBound(s2)
        Case 0
            '数据不够,此行忽略
        Case 1
            '只有二列,扔A
            a1(aj) = s2(0)
            a2(aj) = s2(1)
            aj = aj + 1
        Case 2
            '只有三列,判断第一列为空还是最后一列为空。第一列为空的扔B,最后一列为空的扔A
            If s2(0) = "" Then
                b1(bj) = s2(1)
                b2(bj) = s2(2)
                bj = bj + 1
            Else
                a1(aj) = s2(0)
                a2(aj) = s2(1)
                aj = aj + 1
            End If
        Case Is > 2
            '达到3列或以上的,只用前面0-3列
            If s2(0) = "" And s2(3) = "" Then   '第0列和第3列为空,扔B
                b1(bj) = s2(1)
                b2(bj) = s2(2)
                bj = bj + 1
            Else
                a1(aj) = s2(0)
                a2(aj) = s2(1)
                aj = aj + 1
                
                b1(bj) = s2(2)
                b2(bj) = s2(3)
                bj = bj + 1
            End If
        End Select
        
    Next i
    
    aj = aj - 1
    bj = bj - 1
    
    ReDim Preserve a1(aj)
    ReDim Preserve a2(aj)
    ReDim Preserve b1(bj)
    ReDim Preserve b2(bj)
                
'-------排序---------
    '这里排序被省略了
    
'-------分析数据----------
    s = ""
    bj = 0
    lj = 0
    For aj = 0 To UBound(a1)
        If a2(aj) = b2(bj) Then
            s = s & a1(aj) & fg & a2(aj) & fg & b1(bj) & fg & b2(bj) & vbCrLf
            bj = bj + 1
            lj = lj + 1
        Else
            For i = bj To UBound(b1)
                If a2(aj) = b2(i) Then Exit For
            Next i
            If i > UBound(b1) Then      'A的内容在B中没找到
                s = s & a1(aj) & fg & a2(aj) & fg & fg & vbCrLf
                lj = lj + 1
            Else
                'A的内容在B中跳行了
                For j = bj To i - 1
                    '这里空掉A时,空多少空格不知道,随手写的不知够不够。
                    s = s & "                        " & b1(j) & fg & b2(j) & vbCrLf
                    lj = lj + 1
                Next j
                bj = i
                s = s & a1(aj) & fg & a2(aj) & fg & b1(bj) & fg & b2(bj) & vbCrLf
                lj = lj + 1
                bj = bj + 1
            End If
        End If
    Next aj
    
    '如果B列还有数据没用完,全部加进去
    For j = bj To UBound(b1)
            '这里空掉A时
        s = s & "                        " & b1(j) & fg & b2(j) & vbCrLf
        lj = lj + 1
    Next j
    
    Text1.Text = s

    Open path & "b.txt" For Output As #1
        Print #1, s
    Close #1
    
'显示总行数
    MsgBox lj
End Sub

Private Sub Form_Load()
'初始化路径,让程序在根目录下运行不会报错
    path = App.path
    If Right(path, 1) <> "\" Then path = path & "\"
End Sub



[此贴子已经被作者于2020-3-30 22:31编辑过]

收到的鲜花
  • wube2020-04-06 16:36 送鲜花  20朵   附言:Thanks,投你一票了。

授人于鱼,不如授人于渔
早已停用QQ了
2020-03-30 22:21
风吹过b
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:364
帖 子:4912
专家分:29900
注 册:2008-10-15
得分:0 
这是生成的结果:共108行,当然最后多了一个空行,也没计算在总行数内。
0    OS_FUNC_N    0    OS_FUNC_N
1    OS_PPMU_N    1    OS_PPMU_N
2    OS_FUNC_N_RT    2    OS_FUNC_N_RT
3    OS_FUNC_P    3    OS_FUNC_P
4    OS_PPMU_P    4    OS_PPMU_P
5    OS_FUNC_P_RT    5    OS_FUNC_P_RT
                        6    WIRE_SWEEP
6    TEST_PowerShort    7    TEST_PowerShort
7    TEST_EFUSE_CP_INFORMATION_CHECK    8    TEST_EFUSE_CP_INFORMATION_CHECK
8    TEST_IDDQ    9    TEST_IDDQ
9    TEST_NANDTREE    10    TEST_NANDTREE
                        11    TEST_ATPG_STUCK_PTN_MERGE_33M
10    TEST_ATPG_STUCK_PTN_MERGE    12    TEST_ATPG_STUCK_PTN_MERGE
11    TEST_ATPG_TRANS_PTN_MERGE    13    TEST_ATPG_TRANS_PTN_MERGE
12    TEST_CLK_PROBE    14    TEST_CLK_PROBE
13    TEST_CLK_PROBE_NP_LOW    15    TEST_CLK_PROBE_NP_LOW
14    TEST_CLK_PROBE_NP_HIGH    16    TEST_CLK_PROBE_NP_HIGH
15    TEST_MBIST    17    TEST_MBIST
16    TEST_GBE_T01    18    TEST_GBE_T01
17    TEST_GBE_T02    19    TEST_GBE_T02
18    TEST_GBE_T03_sendD    20    TEST_GBE_T03_sendD
19    TEST_GBE_T04_all    21    TEST_GBE_T04_all
20    TEST_GBE_T06_P0_TTR        
21    TEST_GBE_T04_P0        
22    TEST_GBE_T05_P0        
23    TEST_GBE_T06_P0        
24    TEST_GBE_T06_P1_TTR        
25    TEST_GBE_T04_P1        
26    TEST_GBE_T05_P1        
27    TEST_GBE_T06_P1        
28    TEST_GBE_T06_P2_TTR        
29    TEST_GBE_T04_P2        
30    TEST_GBE_T05_P2        
31    TEST_GBE_T06_P2        
32    TEST_GBE_T06_P3_TTR        
33    TEST_GBE_T04_P3        
34    TEST_GBE_T05_P3        
35    TEST_GBE_T06_P3        
                        22    TEST_GBE_T05_Interpolation
                        23    TEST_GBE_T06_Interpolation
                        24    TEST_GBE_T14
36    TEST_GBE_T07_sendD    25    TEST_GBE_T07_sendD
37    TEST_GBE_T07_1_sendD    26    TEST_GBE_T07_1_sendD
38    TEST_GBE_T08_sendD    27    TEST_GBE_T08_sendD
39    TEST_GBE_T09_sendD    28    TEST_GBE_T09_sendD
40    TEST_GBE_T10_sendD    29    TEST_GBE_T10_sendD
41    TEST_GBE_T11_sendD    30    TEST_GBE_T11_sendD
42    TEST_GBE_T12_sendD    31    TEST_GBE_T12_sendD
43    TEST_GBE_T13        
44    TEST_GBE_T14        
                        32    TEST_GBE_T13_2_ATE_GBE_TXT_MAX
45    TEST_GBE_T15    33    TEST_GBE_T15
46    TEST_GBE_T16_dig    34    TEST_GBE_T16_dig
47    TEST_GBE_T17    35    TEST_GBE_T17
48    TEST_USB_P0_T01    36    TEST_USB_P0_T01
49    TEST_USB_P0_T02    37    TEST_USB_P0_T02
50    TEST_USB_P0_T12    38    TEST_USB_P0_T12
51    TEST_USB_P0_T13    39    TEST_USB_P0_T13
52    TEST_USB_P0_T14    40    TEST_USB_P0_T14
53    TEST_USB_P0_T15    41    TEST_USB_P0_T15
54    TEST_USB_P0_T16    42    TEST_USB_P0_T16
55    TEST_USB_P0_T17    43    TEST_USB_P0_T17
56    TEST_USB_P1_T01    44    TEST_USB_P1_T01
57    TEST_USB_P1_T02    45    TEST_USB_P1_T02
58    TEST_USB_P1_T12    46    TEST_USB_P1_T12
59    TEST_USB_P1_T13    47    TEST_USB_P1_T13
60    TEST_USB_P1_T14    48    TEST_USB_P1_T14
61    TEST_USB_P1_T15    49    TEST_USB_P1_T15
62    TEST_USB_P1_T16    50    TEST_USB_P1_T16
63    TEST_USB_P1_T17    51    TEST_USB_P1_T17
64    TEST_PCIE_P0_T01    52    TEST_PCIE_P0_T01
65    TEST_PCIE_P0_T02    53    TEST_PCIE_P0_T02
66    TEST_PCIE_P0_T04    54    TEST_PCIE_P0_T04
67    TEST_PCIE_P0_T05    55    TEST_PCIE_P0_T05
68    TEST_PCIE_P0_T051    56    TEST_PCIE_P0_T051
69    TEST_PCIE_P0_T06    57    TEST_PCIE_P0_T06
70    TEST_PCIE_P0_T061    58    TEST_PCIE_P0_T061
71    TEST_PCIE_P0_T07    59    TEST_PCIE_P0_T07
72    TEST_PCIE_P0_T08    60    TEST_PCIE_P0_T08
73    TEST_PCIE_P1_T101    61    TEST_PCIE_P1_T101
74    TEST_PCIE_P1_T102    62    TEST_PCIE_P1_T102
75    TEST_PCIE_P1_T106    63    TEST_PCIE_P1_T106
76    TEST_PCIE_P1_T107    64    TEST_PCIE_P1_T107
77    TEST_PCIE_P1_T109    65    TEST_PCIE_P1_T109
78    TEST_PCIE_P1_T301    66    TEST_PCIE_P1_T301
79    TEST_PCIE_P1_T302    67    TEST_PCIE_P1_T302
80    TEST_PCIE_P1_T304    68    TEST_PCIE_P1_T304
81    TEST_PCIE_P1_T309    69    TEST_PCIE_P1_T309
82    TEST_PCIE_P1_T401    70    TEST_PCIE_P1_T401
83    TEST_PCIE_P1_T502    71    TEST_PCIE_P1_T502
84    TEST_ABIST_PCIE_P1_T202_T203    72    TEST_ABIST_PCIE_P1_T202_T203
85    ABIST_Flash_Firmware_Version_Check    73    ABIST_Flash_Firmware_Version_Check
86    Thermal_IC    74    Thermal_IC
87    AUXADC_CALIBRATION    75    AUXADC_CALIBRATION
88    AUXADC_EFUSE_BLANK_CHECK_DSSC    76    AUXADC_EFUSE_BLANK_CHECK_DSSC
89    AUXADC_BURN_CODE    77    AUXADC_BURN_CODE
90    AUXADC_EFUSE_BURN_CHECK_PASS    78    AUXADC_EFUSE_BURN_CHECK_PASS
91    ABIST_DDR3_PAT0    79    ABIST_DDR3_PAT0
92    TEST_ABIST_PON_T00    80    TEST_ABIST_PON_T00
93    TEST_ABIST_PON_T01    81    TEST_ABIST_PON_T01
94    TEST_ABIST_PON_T10    82    TEST_ABIST_PON_T10
95    TEST_ABIST_PON_T11    83    TEST_ABIST_PON_T11
96    TEST_ABIST_PON_T12    84    TEST_ABIST_PON_T12
97    TEST_ABIST_PON_T13    85    TEST_ABIST_PON_T13
98    TEST_ABIST_PON_T14    86    TEST_ABIST_PON_T14
99    TEST_ABIST_PON_T15    87    TEST_ABIST_PON_T15
100    TEST_EFUSE_BURN_CHECK_7528HU    88    TEST_EFUSE_BURN_CHECK_7528HU
101    All_Setting_Restore    89    All_Setting_Restore

授人于鱼,不如授人于渔
早已停用QQ了
2020-03-30 22:25
wube
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:23
帖 子:1817
专家分:3681
注 册:2011-3-24
得分:0 
以下是引用风吹过b在2020-3-30 22:21:58的发言:

按我的思路写出来的代码。你试试看。
Option Explicit
....


好厉害,居然能写得出来,本来都想请使用者放弃了。

不过可能没有表达清楚,左右两个列表,所有资料分别存在两个不同的结构体内,初始数字代表Array内的index,
而需求是要对两个不同结构体内的阵列资料,进行比对排序后,最后输出文本档,且左右两边资料分隔不是空格,
而是每行最多各占满80个字(如代码),而字符串结构下还有子结构也会在最后一起输出。

其实实际资料内完全没有一个空白,因为被防火墙挡住没法贴图,所以容易造成误解。

不过重点是,我从没想过可以左右两边先合并后再处理,版主这个方式,我可以略加修改,就能完成需求。

P.S lj好像完全没用到?

程序代码:
Private Function 结构比对(ByRef Flow1 As FLOW_INFO, ByRef Flow2 As FLOW_INFO) As String
    '本需求.....
    结构比对=FormatOutString(mstrProj1(),mstrProj2(),mLine)
Exit Function

Private Function FormatOutString(ByRef mstrProj1() As String, ByRef mstrProj2() As String, ByVal LineNum As Long) As String'将两阵列资料累积存入一个字符串内
Dim strOutputDiffPart As String, i As Long
Dim RemailCharNum1 As Integer, strChar1 As String, RemailCharNum2 As Integer, strChar2 As String
    
    For i = 0 To LineNum - 1
        If Len(mstrProj1(i)) > 75 Or Len(mstrProj2(i)) > 75 Then
            strChar1 = mstrProj1(i): strChar2 = mstrProj2(i)
            RemailCharNum1 = Len(mstrProj1(i)): RemailCharNum2 = Len(mstrProj2(i))
            Do
                If RemailCharNum1 > 75 Or RemailCharNum2 > 75 Then
                    If RemailCharNum1 > 75 Then
                        strOutputDiffPart = strOutputDiffPart & AlignmentFormat(Left(strChar1, 75), LEFT_JUSTIFY, 80)
                        RemailCharNum1 = Len(strChar1) - 75
                        If RemailCharNum1 > 0 Then
                            strChar1 = Trim$(Right(strChar1, RemailCharNum1))
                        Else
                            strChar1 = AlignmentFormat(Left(strChar1, 75), LEFT_JUSTIFY, 80): RemailCharNum1 = 0
                        End If
                    Else
                        If Trim$(strChar1) <> "" Then
                            strOutputDiffPart = strOutputDiffPart & AlignmentFormat(Left(strChar1, 75), LEFT_JUSTIFY, 80)
                        Else
                            strOutputDiffPart = strOutputDiffPart & AlignmentFormat(Left(" ", 80), LEFT_JUSTIFY, 80)
                        End If
                        RemailCharNum1 = 0: strChar1 = ""
                    End If
                    
                    If RemailCharNum2 > 75 Then
                        strOutputDiffPart = strOutputDiffPart & AlignmentFormat(Left(strChar2, 75), LEFT_JUSTIFY, 80) & vbCrLf
                        RemailCharNum2 = Len(strChar2) - 75
                        If RemailCharNum2 > 0 Then
                            strChar2 = Trim$(Right(strChar2, RemailCharNum2))
                        Else
                            strChar2 = AlignmentFormat(Left(strChar2, 75), LEFT_JUSTIFY, 80): RemailCharNum2 = 0
                        End If
                    Else
                        strOutputDiffPart = strOutputDiffPart & AlignmentFormat(Left(strChar2, 75), LEFT_JUSTIFY, 80) & vbCrLf
                        RemailCharNum2 = 0: strChar2 = ""
                    End If
                Else
                    If RemailCharNum1 = 0 And Trim$(strChar1) = "" And RemailCharNum2 > 0 And Trim$(strChar2) <> "" Then
                        strOutputDiffPart = strOutputDiffPart & AlignmentFormat(Left(" ", 80), LEFT_JUSTIFY, 80) & strChar2 & vbCrLf
                    ElseIf RemailCharNum1 > 0 And Trim$(strChar1) <> "" And RemailCharNum2 = 0 And Trim$(strChar2) = "" Then
                        strOutputDiffPart = strOutputDiffPart & AlignmentFormat(Left(strChar1, 75), LEFT_JUSTIFY, 80) & strChar2 & vbCrLf
                    ElseIf RemailCharNum1 > 0 And Trim$(strChar1) <> "" And RemailCharNum2 > 0 And Trim$(strChar2) <> "" Then
                        strOutputDiffPart = strOutputDiffPart & AlignmentFormat(Left(strChar1, 75), LEFT_JUSTIFY, 80) & strChar2 & vbCrLf
                    End If
                    RemailCharNum1 = 0: RemailCharNum2 = 0: strChar1 = "": strChar2 = ""
                    Exit Do
                End If
                If Trim$(strChar1) = "" And Trim$(strChar2) = "" Then Exit Do
            Loop
        Else
            If mstrProj1(i) <> "" Then '2010 4/20
                strOutputDiffPart = strOutputDiffPart & AlignmentFormat(Left(mstrProj1(i), Len(mstrProj1(i))), LEFT_JUSTIFY, 80)
            Else
                strOutputDiffPart = strOutputDiffPart & AlignmentFormat(" ", LEFT_JUSTIFY, 80)
            End If
            strOutputDiffPart = strOutputDiffPart & mstrProj2(i) & vbCrLf
        End If
        DoEvents
    Next i
    
    FormatOutString = strOutputDiffPart
    
End Function

Public Function AlignmentFormat(ByVal Str As String, ByVal AlignmentType As FORMAT_ALIGNMENT, ByVal LenNum As Integer) As String
Dim FormatStr As String
    FormatStr = String(Abs(LenNum), "@")
    FormatStr = IIf(AlignmentType = LEFT_JUSTIFY, "!", "") & FormatStr
    AlignmentFormat = Format(Str, FormatStr)
End Function

不要選我當版主
2020-04-06 16:33



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500655-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.122471 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved