原始數據表
源數據
套裝構成表
套裝構成表
要求:【原始數據表】中產品型號為套裝的數據,要根據【套裝構成表】拆解成所有套裝數據,比如【原始數據表】中[A套裝],要拆成4條數據,見【套裝構成表】中的所有[A套裝]構成,同時【原始數據表】中的 [數量] 要和【套裝構成表】中 [套裝用量]要相乘。
結果:
結果
Sub 解套()
Dim arr, brr, crr(1 To 66666, 1 To 4)
arr = Sheet1.[a1].CurrentRegion'原始數據表
brr = Sheet2.[a1].CurrentRegion'套裝構成表
For i = 2 To UBound(arr)
If InStr(arr(i, 1), "套裝") = 0 Then'如果原始數據表中的產品型號不是套裝
k = k + 1'計數
For j = 1 To UBound(arr, 2)'將整條數據放進crr數組
crr(k, j) = arr(i, j)
Next
Else'如果原始數據表中的產品型號是套裝
For m = 2 To UBound(brr)'遍歷套裝構成表
If arr(i, 1) = brr(m, 1) Then'如果是套裝名相同
k = k + 1'計數,并向數組crr寫入數據
crr(k, 1) = brr(m, 2)'產品型號
crr(k, 2) = arr(i, 2)'客戶
crr(k, 3) = arr(i, 3) * brr(m, 3)'數量*套裝用量
crr(k, 4) = arr(i, 4)'日期
End If
Next
End If
Next
Sheet3.[a2:d66666].ClearContents'清空數據存放區域
Sheet3.[A2].Resize(k, 4) = crr'寫入拆解后的數據
End Sub
select b.產品型號,a.客戶,a.數量*b.套裝用量 as 數量,a.交貨期
from [原始表$] a
inner join
[套裝構成表$] b
on a.產品型號=b.套裝名
union all
select 產品型號,客戶,數量,交貨期
from [原始表$]
where 產品型號 not like "%套裝"
SQL
示例文件下載:
鏈接: http://pan.baidu.com/s/1nvsQ3aT 密碼: 1g66