- 帖子
- 354
- 主題
- 5
- 精華
- 0
- 積分
- 387
- 點名
- 0
- 作業系統
- windows7
- 軟體版本
- vba,vb,excel2007
- 閱讀權限
- 20
- 性別
- 男
- 註冊時間
- 2017-1-8
- 最後登錄
- 2024-8-2
 
|
2#
發表於 2023-12-15 10:34
| 只看該作者
本帖最後由 singo1232001 於 2023-12-15 10:46 編輯
回復 1# shuo1125
這個題目
確實有正規的作法 而且 只能用這個做法
看到你的代碼後 我認為你該走向這方向
這種 不同多種 x 多次 x 多條件 x 多表 x 多篩選 基本上就只能指望SQL 就只能指望SQL 就只能指望SQL
很重要說三次 別拿VBA試
基本上公司除了專門的MIS 基本上不可能讓非專業人士開啟資料庫操作
所以我建議
最佳方式
自己安裝SQL server + SSMS (安裝 操作 使用 也可以叫GPT教)
將這筆資料直接匯入或貼上SQL 或者大量的話 直接跟mis拿.bak檔 .csv .xlsx檔案
然後GPT4+SQL語法 叫GPT幫出代碼 9成都能秒殺(不過基礎要自學影片至少40小時 但保證不虧)
你的問題應該可以在3~10分鐘內解決 而且看往後這種查表篩選有多少問題都能快速解決
若要用VBA 基本上 也是直接調用adodb.connect SQL代碼(但功能殘缺 需各種花式)
但這個方向 網上會搞的人 基本上不會待著 他們會直接轉向直接使用SQL
想查VBA+SQL 基本上查到的資料非常少 反而GPT資料多 整合起來有機會使用
就算問GPT 也只能給你6成答案 4成自己補
但我看了看資料 也做不了
原因是G表中 5.6開頭的 沒有半筆Mn資料 (我創了假資料)
M表中 5.6開頭的 也沒半筆 無法測試
我會嘗試 是因為正在練習對付非正規化格式的 花式SQL語法
需開一個工作表1 再執行 (要把你原本的代碼全部槓掉)
但工作表1沒有任何資料
Sub t1()
i = Split("Provider=Microsoft.,Jet.OLEDB.4,.0;Extended Properties=Excel ,8,.0;Data Source=", ",")
If Application.Version > 12 Then i(1) = "ACE.OLEDB.12": i(3) = 12
Set cn = CreateObject("adodb.connection"): cn.Open Join(i, "") & ThisWorkbook.FullName
q = "select [DATA_序],[DATA_月],[DATA_餘額] from [G明細帳$A1:T] where "
q = q & " [DATA_序] like '5__' and [DATA_摘要] like '%mn%' "
Set rs = cn.Execute(q)
Sheets("工作表1").[A2].CopyFromRecordset rs
Sheets("工作表1").[a1:d1] = Split("DATA_序,DATA_月,DATA_餘額,總餘額", ",")
q1 = "select sum(DATA_餘額) as sumX from ( " & q
q1 = q1 & " ) "
Sheets("工作表1").[D2].CopyFromRecordset cn.Execute(q1)
'...
End Sub
當然你想要用其他資料庫也可以 反正都有外掛圖形化介面
mysql sqlserver ptsql
TEXT交易統計GM_20230430.zip (137.09 KB)
|
|