麻辣家族討論版版's Archiver

wsx1130 發表於 2021-12-7 19:28

EXCEL VBA 連接ACCESS計算內容

請教一下各位高手
如附件方式,目前我只會下單一個條件進行搜尋
1.如果想要尋找報工日期區間,或是所有資料同時下載,條件要如何下
2.下載時能同時計算如工作表二,像是使用sumifs或是vlookup

再請各位高手幫幫忙

samwang 發表於 2021-12-7 22:01

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117937&ptid=23508]1#[/url] [i]wsx1130[/i] [/b]

1.如果想要尋找報工日期區間,或是所有資料同時下載,條件要如何下
[color=Blue]>>請測試看看,謝謝[/color]
[color=Blue]Sub test()
Dim conn As New ADODB.Connection
conn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\database-test.mdb"
Sheets(3).Range("a1").CopyFromRecordset conn.Execute("select * from [DailyReport43600]")
conn.Close
End Sub[/color]

wsx1130 發表於 2021-12-7 23:50

[quote]回復  wsx1130

1.如果想要尋找報工日期區間,或是所有資料同時下載,條件要如何下
>>請測試看看,謝謝 ...
[size=2][color=#999999]samwang 發表於 2021-12-7 22:01[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117944&ptid=23508][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]

感謝sam的代碼,已經可以全部下載下來了

samwang 發表於 2021-12-8 07:11

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117937&ptid=23508]1#[/url] [i]wsx1130[/i] [/b]

2.下載時能同時計算如工作表二,像是使用sumifs或是vlookup
[color=Blue]>> 紅色框的項目是怎麼來的?? 是固定的麼? 請確認,謝謝[/color]

samwang 發表於 2021-12-8 09:41

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117937&ptid=23508]1#[/url] [i]wsx1130[/i] [/b]

2.下載時能同時計算如工作表二,像是使用sumifs或是vlookup
[color=Blue]>> 紅色框的項目是怎麼來的?? 是固定的麼? 請確認,謝謝[/color]
[color=Blue]>> 時間都是抓工單號碼的第1筆嗎??
如果時間是要以工單號碼+製程簡稱為主,是要取哪一筆時間
Ex: 17256+品管液手工包裝 有2筆時間(假設不一樣),要取哪一筆[/color]

samwang 發表於 2021-12-8 11:32

[i=s] 本帖最後由 samwang 於 2021-12-8 11:33 編輯 [/i]

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117937&ptid=23508]1#[/url] [i]wsx1130[/i] [/b]

請測試看看,謝謝
1. 工單號碼/製成簡稱: 從資料庫取唯一值然後自動匯出
2. 2021/11/02 16:06_1080_2021/11/02 16:13
    工單+製程: 第一筆開始時間 _ 累加數量 _ 最後完成(max)時間

Sub test()
Dim conn As New ADODB.Connection
Dim Arr, xD, Brr(), xD1, C%, n%, m%, i&, SD, ED, cnt
Set xD = CreateObject("Scripting.Dictionary")
Set xD1 = CreateObject("Scripting.Dictionary")
With Sheets(3)
    .[a1].CurrentRegion.Offset(1) = ""
'    .[a1:i1] = Array("ID", "報工序號", "工號", "班別代碼", "報工日期", "工單號碼", "作業序號", "製程簡稱", "作業細項")
'    .[j1:q1] = Array("開始時間", "完成時間", "時數", "數量", "不良數量", "工單號碼", "備註", "原因代碼", "狀態")
    conn.Open "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=D:\database-test.mdb"
    .Range("a2").CopyFromRecordset conn.Execute("select * from [DailyReport43600]")
    conn.Close
    Arr = .[a1].CurrentRegion
End With
ReDim Brr(1 To UBound(Arr), 1 To UBound(Arr))
For i = 2 To UBound(Arr): xD(Arr(i, 8) & "") = "": Next
With Sheets(4)
     .[a1].CurrentRegion = ""
    .Range("b1").Resize(1, xD.Count) = xD.keys
    .[a1] = "工單號碼/製程簡稱"
    For i = 2 To UBound(Arr)
        C = Application.WorksheetFunction.Match(Arr(i, 8), .Range(.[b1], .Cells(1, xD.Count + 1)), 0) + 1
        If xD1.Exists(Arr(i, 6) & "") Then
            m = xD1(Arr(i, 6) & "")
            If Brr(m, C) <> "" Then
                SD = Split(Brr(m, C), "_")(0)
                cnt = Split(Brr(m, C), "_")(1)
                ED = Split(Brr(m, C), "_")(2)
                If Arr(i, 11) > ED Then ED = Arr(i, 11)
            End If
            Brr(m, C) = SD & "_" & cnt + Arr(i, 13) & "_" & ED
        Else
            n = n + 1: xD1(Arr(i, 6) & "") = n
            Brr(n, 1) = Arr(i, 6)
            Brr(n, C) = Arr(i, 10) & "_" & Arr(i, 13) & "_" & Arr(i, 11)
        End If
    Next
    .Range("a2").Resize(n, xD.Count + 1) = Brr
End With
End Sub

wsx1130 發表於 2021-12-8 20:52

[quote]回復  wsx1130

2.下載時能同時計算如工作表二,像是使用sumifs或是vlookup
>> 紅色框的項目是怎麼來的 ...
[size=2][color=#999999]samwang 發表於 2021-12-8 09:41[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117948&ptid=23508][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]

不好意思Sam那麼晚才回您,紅色框的部分是固定,的確您計算的是我想要的方式,我再研究試試看
非常的感謝您

wsx1130 發表於 2021-12-18 00:00

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=117949&ptid=23508]6#[/url] [i]samwang[/i] [/b]
Sam大大,請問一下如果需要sheet4製程簡稱位置是固定項目(不是所有的,手動輸入幾個特定製程),能用這樣的方式計算嗎

samwang 發表於 2021-12-18 09:21

[quote]回復  samwang
Sam大大,請問一下如果需要sheet4製程簡稱位置是固定項目(不是所有的,手動輸入幾個特定製 ...
[size=2][color=#999999]wsx1130 發表於 2021-12-18 00:00[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=118083&ptid=23508][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]

[color=Red]當然可以如同先前談到的5#問題,條件要先訂好,謝謝[/color]

[color=Blue]時間都是抓工單號碼的第1筆嗎??
[color=Blue]如果時間是要以工單號碼+製程簡稱為主,是要取哪一筆時間
Ex: 17256+品管液手工包裝 有2筆時間(假設不一樣),要取哪一筆[/color][/color]

wsx1130 發表於 2021-12-18 19:48

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=118084&ptid=23508]9#[/url] [i]samwang[/i] [/b]

Sam大大,抓取第一筆的時間
ex: 177256 品管液QA貼標、裝箱   2021/11/02 16:06

samwang 發表於 2021-12-19 08:21

[quote]回復  samwang

Sam大大,抓取第一筆的時間
ex: 177256 品管液QA貼標、裝箱   2021/11/02 16:06
[size=2][color=#999999]wsx1130 發表於 2021-12-18 19:48[/color] [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=118086&ptid=23508][img]http://forum.twbts.com/images/common/back.gif[/img][/url][/size][/quote]

如附件,請測試看看,謝謝

aa7551 發表於 2021-12-19 11:43

打擾各位先進,Access是一個資料庫架構,如果要工作表二的型態,在其表單就可完成,為何要在excel下寫VBA,難道它的速度比較快

wsx1130 發表於 2021-12-19 12:17

[b]回復 [url=http://forum.twbts.com/redirect.php?goto=findpost&pid=118088&ptid=23508]12#[/url] [i]aa7551[/i] [/b]

是要產出類似的報表,所以想要用下載資料後再進行vba的計算,這樣得到的就是明確的值,但如果只是用工作表二的公式,比數太多只要移動或是新增其他資料,
下方就會出現重新計算進度%,等待時間會花費很長

頁: [1]

麻辣家族討論版版為 麻辣學園 網站成員  由 昱得資訊工作室 © Since 1993 所提供