数据--->结果
要求:将右边的表格转换成左边的表格。就是一维表转二维表。
思路:
- 1、先声明一个足够大的数组,用来装载转置的数据。
- 2、用字典判断产品和工序是否在字典里,如果不在字典里,就增加行数和列数,再用字典分别标记行号和列号。
- 3、直接根据字典标记的行号、列号,形成坐标(X,Y)输出到目标数组当中。
Sub cctv()
Dim arr, brr(), i&, R&, C&, R1&, C1&
arr = [i1].CurrentRegion '//原始数据
ReDim brr(1 To UBound(arr), 1 To 10) '//足够大的数组
Set d = CreateObject("scripting.dictionary") '//创建字典
R = 1: C = 1 '//初始化行号列号
For i = 2 To UBound(arr) '//遍历原始数据
'//如果产品和工序不存在字典里,就分别在数组brr里增加行和列,也就是向下和向右扩张数组
If Not d.exists(arr(i, 1)) Then R = R + 1: d(arr(i, 1)) = R
If Not d.exists(arr(i, 2)) Then C = C + 1: d(arr(i, 2)) = C
'//直接根据上面的行号列号,来输出数据到数组brr
R1 = d(arr(i, 1))
C1 = d(arr(i, 2))
'//输出数据到数组brr
brr(R1, 1) = arr(i, 1) '//行
brr(1, C1) = arr(i, 2) '//列
brr(R1, C1) = arr(i, 3) '//上线时间
Next
[a10].Resize(R, C) = brr '//输出数据到单元格区域
End Sub