返回列表 上一主題 發帖

大量資料計算

大量資料計算

本帖最後由 oak0723-1 於 2021-10-5 18:41 編輯

大量數十萬列資料計算
檔案開關慢用函數處理又易當機
麻煩先進能協助
另外請問有較粗淺的vba陣列相關文章可以學習嗎
還有
我這個附件為何會那麼大?如何縮小
Image 1.jpg

1101005-比對&合計.part001.rar (1 MB)

1101005-比對&合計.part002.rar (1 MB)

1101005-比對&合計.part003.rar (1 MB)

1101005-比對&合計.part004.rar (1 MB)

1101005-比對&合計.part005.rar (1 MB)

1101005-比對&合計.part006.rar (1 MB)

1101005-比對&合計.part007.rar (1 MB)

1101005-比對&合計.part008.rar (1 MB)

1101005-比對&合計.part009.rar (1 MB)

1101005-比對&合計.part010.rar (1 MB)

1101005-比對&合計.part011.rar (1 MB)

1101005-比對&合計.part012.rar (443.31 KB)

回復 1# oak0723-1

不好意思,看不懂您真的需求為何? 可否在詳細說明一下
建議移除您的公式這樣檔案才不會那麼大,
另外請問有較粗淺的vba陣列相關文章可以學習嗎>> 網路找一下應該很多
謝謝

TOP

回復 2# samwang
你好
感謝你對我的問題關注
我怕移除我自己所寫的函數公式更會無法把問題講清楚
我的問題就是希望用巨集來完成我函數想完成的內容
只是我“資料庫“工作表的資料數量是不固定的,
“比對“工作表第三列裡的比對資料數量也是不固定
只要兩邊有資料就進行比對,比對結果是一樣的就顯示1,不一樣就顯示0,沒資料就空白

TOP

回復 2# samwang


    補充圖片說明
8253011.jpg

TOP

回復 4# oak0723-1

請測試看看,謝謝
Sub test()
Dim Arr, Drr, Brr(), Crr(), T, T1, T2
Tm = Timer
Arr = Range([資料庫!b6], [資料庫!b65536].End(3))
Drr = Sheets("資料庫").Range("i6:ama" & UBound(Arr) + 5)
[比對!b6].Resize(UBound(Arr)) = Arr
ReDim Brr(1 To UBound(Arr), 1 To 1000)
ReDim Crr(1 To UBound(Arr), 1 To 1)
With Sheets("比對")
    Arr = .Range("i3:alt3")
    For i = 1 To UBound(Drr)
        Crr(i, 1) = 0
        For j = 1 To UBound(Arr, 2)
            T = Arr(1, j): T1 = Drr(i, j): T2 = Drr(i, j + 6)
            If T = "" Or T1 = "" Then Brr(i, j) = "": GoTo 99
            If T = T2 Then
                Brr(i, j) = 1: Crr(i, 1) = Crr(i, 1) + 1
            Else
                 Brr(i, j) = 0
            End If
99:     Next j
    Next i
    .Range("h6").Resize(UBound(Crr)) = Crr
    .Range("i6").Resize(UBound(Brr), UBound(Brr, 2)) = Brr
End With
MsgBox Timer - Tm
End Sub

TOP

回復 5# samwang
執行結果有點怪怪的
因為
工作表"資料庫" i6儲存格=1001
工作表"比對" i3儲存格=1001,故工作表"比對" i6 儲存格應該是 1 才對,不是 0

是否我有作錯甚麼
Image 20.jpg
Image 23.jpg

1101005-比對&合計01.rar (118.41 KB)

TOP

回復 6# oak0723-1


    為了表達更清楚
我是用函數寫了附件檔案
這個函數檔案就是我想用vba完成的

1101005-比對&合計01-1.rar (118.9 KB)

TOP

本帖最後由 samwang 於 2021-10-7 08:12 編輯

回復 7# oak0723-1

修改如下,請再測試看看,謝謝
If T = "" Or T1 = "" Then Brr(i, j) = "": GoTo 99
修改為--> If T = "" Then Brr(i, j) = "": GoTo 99
If T = T2 Then
修改為--> If T = T1 Then

TOP

回復 6# oak0723-1

您的#1、#7規則條件不一樣如圖片,#1條件已回覆#5,#7條件已回覆#8,請再確認,謝謝
1.PNG

TOP

回復 9# samwang
目前已完全符合我的需求
同樣規則可否比對有上限下限二組數據,如附件
感恩
Image 28-02.jpg

1101005-比對&合計02.rar (115.5 KB)

TOP

        靜思自在 : 人要自愛,才能愛普天下的人。
返回列表 上一主題