2022年1月13日 星期四

VBA_填充_樞紐資料_縮排_超越頓悟

       幾年前在前公司,某一天正在key VBA代碼時,突然不用查代碼可以一直很順的打出代碼,那時我相信武俠小說寫的頓悟,今天晚上洗澡時在想明天公司資料擷取時要怎麼寫代碼比較快(不好的習慣,下班後還在想公事...太難改掉),因為是以前寫過的,洗著洗著突然認為可以在沒資料時寫出代碼,就這樣試著打,還真的完成代碼了,明天去公司只要微調就能使用,這次有BLOG記錄這個心情,心情開心,這跟超級賽亞人變身一樣嗎? 

        我想曾經打過的方式,應該都能在沒資料時都把code建構出來了吧。

PS.下面的代碼用在抓樞紐資料,因為樞紐跑出來會有點類似縮排,如果要抓類似資料格式,我個人認為是用VBA比較快。(尤其是沒有可用Power Query版本的office)



Sub A0_頓悟()

    '2022/1/13 22:03

    

    Application.ScreenUpdating = False

    Dim D_資料, sh_來源 As Worksheet, sh_目的 As Worksheet

    

    Set D_資料 = CreateObject("scripting.dictionary")

    Set sh_來源 = Sheets("A")

    Set sh_目的 = Sheets("B")

    

    With sh_來源

        lr = .Range("A1048576").End(xlUp).Row

        arr_資料 = .Cells(1, 1).Resize(lr, 2)

        

        For i_次 = 1 To 2

            For i = LBound(arr_資料) To UBound(arr_資料)

                If i_次 = 1 Then

                    If arr_資料(i, 1) = "" Then

                        arr_資料(i, 1) = arr_資料(i - 1, 1)

                    End If

                ElseIf i_次 = 2 Then

                    in_料號 = arr_資料(i, 1)

                    in_客戶 = arr_資料(i, 2)

                    in_條件 = in_料號 & in_客戶

                    

                    D_資料(in_條件) = Array(in_料號, in_客戶)

                End If

            Next

        Next

    

    End With


    With sh_目的

        .Cells.Delete

        .Range("A2").Resize(D_資料.Count, 2) = Application.Transpose(Application.Transpose(D_資料.items))

    End With

End Sub



沒有留言:

張貼留言

用GPT修改M語法_以日期列處理

在2023年GPT開始使用時我就詢問過GPT,可能當時的GPT還不夠聰明,給予的答案無法運行,我認為原始的語法應該可以更聰明點,詢問過Power BI社群的人,但沒有人提供答案,終於在現在再度詢問GPT給予的答案與我思考的方向依樣,只是我懂得語法不多,透過GPT幫忙解答,我也學到...