返回列表 上一主題 發帖

[發問] 多條件計算交易明細

本帖最後由 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)

TOP

本帖最後由 singo1232001 於 2023-12-15 18:35 編輯

回復 3# shuo1125


從我目前的觀察 就當前你的功力 基本摸到門檻很夠了
若沒加廣度 儘早跳到SQL 由於你的業務性質 學習VBA 應該會更吃力 正常應該是會失敗
當然此題用3~4維陣列 能解 或字典嵌套 例如 ar(0)(1)(2)(3) 這類陣列 (但要複驗測試答案 會是一個更嚴重的問題 SQL能複驗正確性)
對比直接跳到SQL 的情況 若系統量化 大概是如下表
-------------------------
有GPT的情況下 打5分
對比 含SQL ,單靠vba
輕鬆  4,1  (用GPT超級咒語 跟 邏輯分解 )  GPT超咒: 用生活生動事情說明邏輯流程 並舉兩例       GPT邏輯分解:將代碼邏輯流程分解並詳細說明
簡單  5,2  (GPT無腦生答案 任君選五種不同口味解答)
實用  5,1  (1分是真的無法 該特殊題型限制)
學程  5.2  (只包括資料結構的部分 其他類型不管,SQL有GPT學習時間約3個月,VBA若只有資料結構分析部分 大概1年 都最拚的情況下)

沒GPT的情況下
輕鬆  2,3 (一開始的學習的徬徨感,跟一開始學陣列字典差不多的感覺)
簡單  3,2 (沒人教 花式題不會解)
實用  3,1 (沒人教 花式題不會解,但你的題型在SQL中是基礎題,大概學15天(20~30小時)就會的那種)
學程  2,2  (學習時間約1年 沒人解題)
----------------------
最後取決衝不衝而已
畢竟 此題用vba硬上有解  一題約要解3~4H  但條件會隨時修改 可能有100種哈姆雷特
若SQL 就是3分鐘的事情
大概是這樣 僅共參考

另外 資料分析 跟您們公司的SQL系統 無關
任何資料都可以自建SQL分析 正常來說
應該是公司伺服器原本的一個系統  
你用虛擬機或者用個人電腦 灌一個另外個人用的SQL 兩者無關 獨立  別用access 太多限制

TOP

本帖最後由 singo1232001 於 2023-12-17 00:43 編輯

回復 5# shuo1125


    才想到  目前這題的主要問題是之前給的"資料有問題有缺"
我可以用vba+SQL 幫忙試作
但問題是檔案內的資料有問題  所以我也不知道要怎麼作
要重新給對的資料  不然應該早有人幫忙解題了 或者補充說明一下 是否有哪些流程沒提到

另外 可以一次提3~5種 不同的查詢需求  我用adodb應該可以馬上生出來

例如
第1題. 2023,1~12月  模糊名稱 5開頭 A表
第2題. A表(2022,某月  非某名稱 6開頭 )+B表(N年,N月  要某名稱 6開頭 N金額區間) 有相同的才算  或 金額誤差內 或相同日期
...
...
像上面這類題目 SQL 配GPT都是秒解

TOP

本帖最後由 singo1232001 於 2023-12-18 18:08 編輯

Xl0000108v02v3.zip (113.46 KB) 回復 17# shuo1125


之前有做過一個查詢介面  剛好趁這次練習一下

[

TOP

本帖最後由 singo1232001 於 2023-12-18 22:19 編輯

回復 17# shuo1125


        修正一些功能  增加排除字 跟說明
目前只有表名中含有 "明細表"的 表才會被篩選

[聯集交集] O滿足任一條件 , X全部條件滿足
[順排0逆排1] 該欄位 0-順排  1-逆排  空白-不排列 (只能選一欄 )
[模糊;;] 模糊比對        [完整;;] 完整比對
[小於] 數字小於         [大於] 數字大於
[模糊排除字] 排除掉某個字
其他1: 任一欄位 ;;符號 多條件 (大小於不可用) 滿足其一就有
其他2: 篩選順序是由上到下
其他3: 全部留空 全部顯示
其他4: 黑色部分 輸入無效    (再次點擊說明可關閉)

這種方式 就是把 SQL語法 動態化
改關鍵字 語法就會變化 大概是這樣的作法
大概就是一個 強化版的篩選功能  能排除字 合併表 模糊比對  大小於 順便排序
但我沒有深入測試 或許有bug

Xl0000108v02v6.zip (109.63 KB)

TOP

回復 20# shuo1125



修正日期 大小搜索
簡化代碼 完整版代碼有保留
Xl0000108v02v8.zip (115.48 KB)

TOP

回復 20# shuo1125


    全功能 各種篩選一應具全
若遇到 Xl0000108v02v10.zip (117.04 KB) bug的話請回報

TOP

回復 23# shuo1125


1.追加功能 顯示SQL語法
2.增加範例
3.修正選取 與排除的順序 問題
4.增加查詢時間與筆數
   
Xl0000108v02v12.zip (135.46 KB)

TOP

本帖最後由 singo1232001 於 2023-12-20 06:57 編輯

回復 25# shuo1125


av
同月有兩筆以上
有需要相加嗎?


Xl0000108_TESTv01z01.zip (530.45 KB)

大概目前進度30 只有第一列做到一半  
應該會有2~3個版本  其中應該一個是完整不精簡的  語法容易看
另一個就是全部用迴圈跟變數 替代壓縮起來
但不過有幾項我確實不太能理解關聯

TOP

回復 27# shuo1125


        再測試 內有簡單一行學習版 問GPT版 完整版 跟 簡化測試版
若可行  我再把其他的部分弄完

Xl0000108_TESTv01z03.zip (680.21 KB)

TOP

        靜思自在 : 【做人的開始】每一天都是故人的開始,每一個時刻都是自己的警惕。
返回列表 上一主題