EXCEL-VBA帶合并單元格的數(shù)據(jù)轉(zhuǎn)置Ⅱ

最近見(jiàn)到蠻多存在合并單元格的數(shù)據(jù)轉(zhuǎn)置需求的。
源數(shù)據(jù)

源數(shù)據(jù)

結(jié)果

結(jié)果

處理方法:合并單元格中存在數(shù)據(jù)(非空)的行號(hào),用變量標(biāo)記,然后引用。

Sub CAT()
    Dim arr, r, brr(1 To 50000, 1 To 5)
    r = [a1024768].End(3).Row + 7 '//最后的行號(hào),確定數(shù)據(jù)區(qū)域
    arr = Range("a5:f" & r)    '//數(shù)據(jù)源
    For i = 1 To UBound(arr) Step 8  '//數(shù)據(jù)還有有規(guī)律的,8行一個(gè)合并單元格
        t = i  '//合并單元格中非空行的行號(hào)(在數(shù)組arr中的行號(hào))
        For m = 5 To 6  '//遍歷耗材,其在數(shù)組的第5列和第6列
            For n = 0 To 7  '//每個(gè)素材最多8個(gè)
                If arr(i + n, m) <> "" Then   '//有數(shù)據(jù)的耗材就提取
                    k = k + 1   '//計(jì)數(shù)
                    brr(k, 1) = arr(t, 1) '//引用合并單元格數(shù)據(jù)
                    brr(k, 2) = arr(t, 2)
                    brr(k, 3) = arr(t, 3)
                    brr(k, 4) = arr(t, 4)
                    brr(k, 5) = arr(i + n, m)     '//耗材
                End If
            Next
        Next
    Next
    [h5:L55555] = ""
    [h5].Resize(k, 5) = brr  '//輸出轉(zhuǎn)置數(shù)據(jù)
End Sub

示例文件下載:
鏈接: http://pan.baidu.com/s/1i4AtZKx 密碼: xwns

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

推薦閱讀更多精彩內(nèi)容