返回列表 上一主題 發帖

匯入總表數據bug

回復 1# waitto04

方便附上檔案,謝謝

TOP

回復 3# waitto04

請測試看看,謝謝

Sub test()
Dim Arr, xD, T$, i&, j%
Set xD = CreateObject("Scripting.Dictionary")
For Each sh In Sheets
    If InStr(sh.Name, "專案") Then
        With sh
            Arr = .[a1].CurrentRegion
            For i = 5 To UBound(Arr)
                If Arr(i, 3) = "" Then GoTo 90
                T = sh.Name & "|" & Arr(i, 1)
                xD(T) = Arr(i, 3)
90:         Next
        End With
    End If
Next
With Sheets(1)
    [b5:f58] = ""
    Arr = .[a1].CurrentRegion
    For i = 5 To UBound(Arr): For j = 2 To UBound(Arr, 2)
        T = Arr(4, j) & "|" & Arr(i, 1)
        Arr(i, j) = xD(T)
    Next: Next
    .[a1].Resize(UBound(Arr), UBound(Arr, 2)) = Arr
End With
End Sub

TOP

回復  samwang


   
這個沒辦法作業...
沒有bug 但是總表沒有生成
waitto04 發表於 2022-5-29 09:59


我測試沒問題如附件,比對條件如照片(工作表名稱+項目)有符合就帶入數據,
請再測試看看,謝謝

1.JPG (191.27 KB)

1.JPG

簡化版_0529.zip (136.38 KB)

TOP

本帖最後由 samwang 於 2022-5-29 11:00 編輯
回復  samwang


    感謝你不厭其煩的測試!!
但沒辦法成功引入...反而原有的"經管表格"內容也被清空了 ...
waitto04 發表於 2022-5-29 10:40


反而原有的"經管表格"內容也被清空了
>> 對不起,清除總表資料[b5:f58] = "",前面少了. 請自行加入,我也把程式附上說明,請再自己確認一下,謝謝

Sub test()
Dim Arr, xD, T$, i&, j%
Set xD = CreateObject("Scripting.Dictionary")
For Each sh In Sheets
    If InStr(sh.Name, "專案") Then '工作名稱有專案
        With sh
            Arr = .[a1].CurrentRegion '資料裝入數組
            For i = 5 To UBound(Arr)
                If Arr(i, 3) = "" Then GoTo 90 '沒數據離開
                T = sh.Name & "|" & Arr(i, 1)  '條件:工作表名稱+項目
                xD(T) = Arr(i, 3)              '數據裝入字典
90:         Next
        End With
    End If
Next
With Sheets(1)
   .[b5:f58] = "" '清除原有數據資料,前面原來漏掉  .   ,請自行修改
    Arr = .[a1].CurrentRegion  '資料裝入數組
    For i = 5 To UBound(Arr): For j = 2 To UBound(Arr, 2)
        T = Arr(4, j) & "|" & Arr(i, 1) '條件:工作表名稱+項目
        Arr(i, j) = xD(T) '匯出字典數據
    Next: Next
    .[a1].Resize(UBound(Arr), UBound(Arr, 2)) = Arr '數據回填到excel
End With
End Sub

TOP

回復  samwang


  有點想哭!
是因為版本不同的關係所以有所差別??
因為真的帶不出來...
waitto04 發表於 2022-5-29 11:11


With sheets(1) 先設停止點,然後按F5執行,再確認字典有無資料,正確應該要有資料,請確認,謝謝

1.JPG (223.23 KB)

1.JPG

TOP

大師,想問個!!
如果以我原本的一長串的方式是可以帶的過去的
但現在卡住的有兩點
1.如同您寫 ...
waitto04 發表於 2022-5-29 11:26


2.B的欄位都會被跳過
>> 看你的程式,個分頁資料-->"經營表格"-->C欄資料--> 總表
看不懂你實際需求是要什麼,謝謝

TOP

本帖最後由 samwang 於 2022-5-29 19:32 編輯
剛剛又重複嘗試了一次,沒成功帶出...

  設定是
"經管表格" C欄的資料可以帶入 "總表"依名 ...
waitto04 發表於 2022-5-29 12:22


依據你的測試#14 有成功,#15又失敗,你又說字典有資料
所以有可能你的總表第4列(如附圖)被清除然後執行結果就會失敗
第4列的各分頁的工作名稱不能清除
因為那是字典匯出時比對的條件之一
請再測試看看,謝謝

另外,我寫的程式執行前不用清除舊資料,因為程式最後會自動清除(我有註解)

1.JPG (93.29 KB)

1.JPG

TOP

所以有可能你的總表第4列(如附圖)被清除然後執行結果就會失敗
第4列的各分頁的工作名稱不能清除
因 ...
waitto04 發表於 2022-5-29 23:26


但有一件事情是,若這個編碼再下次會更新是不一樣的(非作業,實戰使用)
是不是變成要先將專案代碼先匯入總表內,再將後續的數值呼叫出來呢?
>>對,先將各分頁的的名稱先匯至總表後再執行即可,謝謝

TOP

大大,感謝你!!
語法我已經都寫完了,也有結合先前的一些語法把專案案號進行匯入

另外我想問 ...
waitto04 發表於 2022-5-31 20:08


1. 是
2. 對,一般流程如下,A數據-->  數組--> 字典,然後B數據-->數組-->取出字典數據處理變成需求
後學一些經驗,說明不好地方,請多包涵指教,謝謝

TOP

        靜思自在 : 謊言像一朵盛開的鮮花,外表美麗,生命短暫。
返回列表 上一主題