2022年12月27日 星期二

更換手機


先複製舊手機資料到新手機

 因為都是使用sony 所以複製程序很容易理解,新手機會自動尋找舊手機

(照片跟影片移到SD卡就略過這部分的複製)


轉移Google Authenticator帳號

Authenticator 匯出帳戶 必須驗證身分,這裡的密碼是 手機本身的 PIN碼(螢幕鎖定密碼)



轉移line

1.line變更密碼前也會讓你輸入 PIN碼(螢幕鎖定密碼)

密碼設定要有英文小寫跟數字

2.LINE App「12.10」最新版本。設定選單新增「以行動條碼移動帳號」的新功能。

這次我使用掃描條碼方式


IB轉移

1.轉移時會傳送一組驗證碼到你的手機,這時還是會要你輸入 PIN碼(螢幕鎖定密碼)

2.有一個更改設備那邊點選就可以轉移(在新手機那邊)



-----

上一支sony手機2018/11 /27算是使用了4年也可以了

2022年11月24日 星期四

VBA_反樞紐

             在工作上看過很多人習慣用表格呈現資料,不過不是以樞紐表,而是用輸入的方式,這在分析運用上很沒彈性,剛好有一個表格要資料化,本來想用Power Query處理,後來還是決定寫VBA,避免Power Query會一直重複查詢,而且很多人喜歡把不同部門資料放在同一個工作表內,這時還是用VBA比較快。

           在家裡弄了個簡單版,隔天上工可以快速修改用上。


Sub A0_反樞紐()

    '2022/11/24 22:35

    Dim arr_資料()

    With ActiveSheet

        br = 3

        lr = .Cells(br, 1).End(xlDown).Row

        lc = .Cells(br, 1).End(xlToRight).Column

        n = 0

        For i = br To lr

            in_代碼 = .Cells(i, 1)

            in_名稱 = .Cells(i, 2)

            For c = 1 To 16 '12個月+4季

                in_月份 = .Cells(1, c * 2 + 1)

                in_噸數 = .Cells(i, c * 2 + 1)

                in_金額 = .Cells(i, c * 2 + 2)

                

             n = n + 1

             ReDim Preserve arr_資料(1 To 5, 1 To n)

             arr_資料(1, n) = in_代碼

             arr_資料(2, n) = in_名稱

             arr_資料(3, n) = in_月份

             arr_資料(4, n) = in_噸數

             arr_資料(5, n) = in_金額

            Next

        Next

    

        .Range("A19").Resize(n, 5) = Application.Transpose(arr_資料)

    

    End With


End Sub





  • 很多人喜歡用的表格方式,這裡簡單的表達一下

類樞紐表格
類樞紐表格

  • VBA執行完就能呈現如下面的資料


表格資料化
表格資料化

  • 執行完作了個驗證,確認資料正確


比對資料
比對資料


2022年11月14日 星期一

Power Query_避免重複查詢_Power BI desktop版

 

  • 如果沒有強大的電腦資源,處理太大量資料
  • 避免重複查詢(Desktop版無法像excel版分檔處理)


        大約10月中在現在的公司開始在使用Power Query,因為excel版本不夠,所以使用desktop版,不過在使用上發生了瑕疵,筆電的資源不足,跑10萬筆以上資料就開始會鈍,在假日時好不容易花了1小時用了複雜查詢,在存檔時也花了1小時,一度要放棄存檔...

       有一句名言當你得不到你想的到的東西時,你會得到經驗這次我真的是得到經驗了,我花了點時間,將資料比較多的部分改成用SQL擷取,而且是分段處理,因為我在用SQL時如果用比較複雜的子查詢也是卡住,人生不該把時間放在等待...

2022年11月11日 星期五

固定資產_驗收資料核對_主要使用VBA

        這幾天比對驗收報告及財產清冊原本使用Power BI的 Power Query處理,發現無法全部直接對上,後來單純比對品號及品名時發現可能的問題,現在想想這種無法完全1對1的還是要用VBA處理比較快速。

        在電腦效能不夠強的情況下,VBA還是有優勢,不過Power BI+SQL在不夠了解狀況下還是有一定的掃盲,只是SQL跟Power Query 在今天(2022/11/9)讓我的新筆電卡住了。

         VBA將兩份數據做1對1的比對還是耗比較少資源,把兩份數據分別丟進陣列中,對記憶體的使用比SQL跟PQ要少些,PQ很容易一直載入,存檔時跟完成新步驟時都會。SQL則是在子程序卡住了。不過用法上PQ跟SQL還是簡單些。

PS.VBA還沒寫,先記錄,下次比較容易完成。



狀況:

  • 有條件驗收日
  • 正常驗收日
  • 其他驗收日(未知)
  • 品號無法對應(某一方未輸入)
  • 品名無法對應(財產清冊品名與驗收報告不同)
  • 有驗收但不在財產清冊上 VS 財產清冊上有但驗收報告上無(有可能自製入庫)
  • 為了支付供應商款項提前領用備品...(每間公司狀況不同)

篩選條件:
  • 自製入庫的品號_SQL
  • 驗收報告整理_SQL
  • 財產目錄(全部)
主要處理方式:1對1

使用VBA,完全比對之後再模糊比對

以前使用過的地方:
  • 比對運費
  • 二十大營運分析 (費用對應)
  • 附註費用

2022年9月30日 星期五

Power BI Desktop無法解除安裝

            前兩天要將家裡舊版Power BI Desktop解除安裝,竟然發生失敗,這個去年A公司時也發生過,那時我還問公司資訊,不過A公司資訊對於對於Power BI不熟,所以我也放棄安裝新版Power BI。

       這次再發生同樣事情,我就開始猜是不是有什麼原因,於是我猜是因為我解除的同時開著excel,關掉excel 仍然一樣無法解除,於是我關掉另一個office的軟體 word,這次終於能解除了

      在A公司我是Excel重度使用者所以我沒有發現原因,還以為是電腦舊了,但同樣的狀況在不同地方發生,我就往開啟的程式猜,竟然猜中...,順利安裝新版Power BI。


winRAR解壓縮失敗_No archives found

 

       最近一個壓縮檔用RAR解壓縮,出現No archives found,因為檔案是我壓縮的,所以我知道內容沒問題,後來查了google發現可以用7-Zip方式解壓縮,下載了最新版的7-zip真的解開了。


winRAR解壓縮失敗_No archives found
winRAR解壓縮失敗_No archives found


2022年9月28日 星期三

縮小excel檔案大小_xlsb二進位工作表

           會注意到xlsb這個檔案格式,一開始是請資訊(C公司)幫忙撈報表資料時,都是用xlsb的格式提供,有次看資料量有幾萬筆,但是檔案不大,開始了解xlsb這個格式,發現有它的優缺點。



搜尋相關資訊可以發現一些資料大概說明如下:


Excel是將資料內容儲存成了XML格式的檔案,而.xlsb格式不包含xml。


xlsb格式的優點:

檔案更小。

  • xlsb的檔案小,對保存大Excel檔很有用。
  • 打開和保存的速度更快。
  • EXCEL直接使用二進位工作表比xlsx檔速度更快。


.xlsb格式的缺點:

 安全性。

  • 對於XLSX/XLSM格式而言,我們可以輕易分辨哪些檔案帶有巨集,哪些沒有。如果用XLSB格式,無法知道這個檔案是否帶有巨集。(2003版的excel也是會有這問題)
  • Power Query無法支援XLSB如果要用Power Query,在舊版的excel跟 power query不支援xlsb,但是新版的power bi  跟 office 365 可以用power query開啟xlsb的檔案。



如果有使用excel外部連結方式,測試結果是可以把xlsb當一個小的資料庫,用sql連結撈取資料。

  • 下面可以看出同樣檔案用xlsb儲存,大小會變成1/3

二進位工作表(縮小excel檔案)
二進位工作表(縮小excel檔案)




2022年8月14日 星期日

Bat_批次檔學習紀錄

           Windows 批次檔(batch),第一次知道這個小程式,是在A公司時資訊人員丟出了可以迅速關掉ERP當掉的不良循環,當時有查過一點點使用方式,不過真正比較深入了解是在今年6月中,因為對於一些重複性的工作有點煩,如果將檔案處理交給VBA處理就會讓原本已經有些沒效率的電腦更加無用,因此搜尋更多BAT的使用方式。

我目前使用過下面的方式

1.固定備份特定資料夾(桌機至共享)

   .一開始只是學整個備份

   .後來學特定時間之後的備份

   .未來要嘗試自動備份到特定資料夾(自動將資料夾命名含有日期)

2.刪除特定資料夾(將要刪除的資料夾整個刪除)

   .使用bat的方式不會進入回收桶

3.清除tmp資料(這是網路上最常分享的語法)

4.將檔案列出清單(轉出txt清單,但還無法像VBA一樣列出完整資訊,但速度似乎較VBA快)

    .一開始學習列出所在資料夾

    .後來學習將包含子資料夾也列出

5.移動檔案(A桌機移至共享再移至B桌機)

   .會用這種方式,主要是B桌機電腦不夠強需要用A桌機幫忙轉資料,然後迅速將檔案移到B桌機處理

6.迅速建立資料夾

   .目前還想不到比較實際的用途,不過有試過類似俄羅斯娃娃一次建立很多層的資料夾

7.自動關機(在A公司時使用過)

2022年6月17日 星期五

程式學習網站_tutorialspoint_相當豐富

 

        最近幾天在摸索bat批次處理,第一次知道bat時是在A公司資訊丟了各簡單的執行清除垃圾的檔案,那時我只是簡單的查一下,還不到深入,後來到了M公司,資訊提供的協助比以往要少,為了讓工作更有效率,更努力的把電腦的能力擠出來,突然到bat。

        在搜尋相關資料時,看到一個網站,提供了一些簡單的教學,好奇心驅使下,看了一下整個網站,發現是程式教學網站,很多免費的基礎教學(收費的部分也不貴),個人感覺也算不錯的入門,而且內容很豐富。


程式網站 tutorialspoint


免費課程相當豐富,也將程式做了分類,可以讓想學習的人很快找到基礎教學。

免費課程
免費課程


微軟相關課程,excel也有教學,如果是要看VBA、Power Pivot、Power view等都有。
微軟相關程式課程
微軟相關程式課程

    就收費而言比台灣很多線上課程便宜,而且這學習網站付費的還有相關的PDF檔。
專家收費課程
專家收費課程


主題課程
主題課程


2022年5月15日 星期日

Power Query 久沒用 會退化

         做個簡單紀錄,到新公司大約5個半月,因為新公司office版本不支援PQ,所以PQ也超過3個月沒寫,現在只有每週投資紀錄的修改,突然想要把一個資料排除時,瞬間有點卡住,失智是這種感覺嗎?

之前PQ可以在進階編輯器裡迅速地寫出想要的代碼,現在大概是能改、能用,不禁有種不進步真的是一種很恐怖的感覺,這比手上股票跌還難過,這是一種技能被剝奪的感覺。







2022年4月23日 星期六

馬斯克的時間管理法學習

    

         了解馬斯克的時間管理,認為自己要在工作安排上再做些調整,另外學習新的工具需要再努力。引用一下《藝妓回憶錄》的名言:我所走的每一步都是為了接近你。以前我學習工具的出發點都是以用在工作為前提(想讓公司更好),現在要多思考一下自己未來要走的路,新工具仍然是可以讓工作更快,不過更大的成分是工作以外的部分。

        馬斯克與我的距離不只有財富...他的一年可以抵八年(感覺是不止),我要如何讓自己的時間更有意義呢?

1. 遇到毫無營養的對話時,就毫不留情結束

※馬斯克遇到無營養的對話時就毫不留情地結束...

我在A公司只對一個階級比我高的主管這樣,那個主管對話老是在同一件事打轉,感覺幾句話可以解決非得花10-20分鐘以上。

對我而言,我覺得比較好的方式,了解每一個要對話的人的風格,直接將要談的主題盡可能簡短的完成。(所以我到新公司很勤的與每個同事溝通,了解各同事)


2.Time Boxing工作法

※馬斯克將時間以 5 分鐘為單位來安排行程,一天 24 小時就切成了 288 個「時間方糖」。重點不是什麼時候要做這件事,而是做這件事要多久時間。

5分鐘對我而言有點困難,從以前我就有在記錄自己做一件工作要花多久時間,不過我是用30分鐘為一單位,在新公司仍然這樣紀錄,不過有些時間性的任務加入,因此我除了紀錄花的時間,也提前排了工作甘特圖。這樣做的好處,例行性的工作再度發生時可以提前規劃並且縮短完成時間。


3.帕斯托雷法則

這個法則是由義大利經濟學家帕斯托雷提出。他認為:「原因和結果、投入和產出、努力和報酬之間本來就存在著巨大的不平衡。」

※要專注於訊號而不是噪音,不要把時間浪費在那些不能讓事情變得更好的事情上。

當稽核的頭幾年,我也是每次1-2小時去實地盤點庫存,不過我發現庫存大問題都不是盤出來的。

把時間花在對的時間真的很重要,如果沒方法花再多的時間查核,能得到的只是一個有執行查核動作但無法確保查核的項目的合理性。

時間真的要擺對地方!!

4.非同步溝通

馬斯克偏好用電子郵件工作,只要有可能會選擇非同步溝通的方式。

※同步與非同步

非同步:當發出mail之後不用等待對方回信,可以去做其他事。

同步:A工作沒執行完之前無法進行下一工作。譬如查核時你沒拿到查核資料時你無法進行篩選樣本。

在新公司很多資料來源需要考慮到源頭的習性,有人會拖有人可以及時,資料有時無法直接於系統中取得,為了讓工作順暢,安排變得重要了,有種回到事務所的感覺,只是在事務所需要安排組員任務,現在需要調配自己的行程,目前細項行程可以直接排到下個月,再Run一陣子,應該整年的細項行程都可以抓出來了。

PS.因為有花時間了解各單位的習性,已經知道誰的資料要提前要,避免耽誤例行性工作。


5.早起,固定作息時間

在A公司就維持早上5點多起床,上班時間半小時前到公司,我覺得這種方式讓我在開始上班時就能馬上進入狀況,尤其是當其他人姍姍來遲或是仍在悠閒吃早餐時。

PS.效率與鎂光燈評斷方式看到的人有關。





2022年4月10日 星期日

線上學習_學習新技能

           3月底時買了一個看了很久的線上課程,是一個熱門的程式理財課程,並不會想經由這課程就學會程式,而是打算藉由實際操作方式,讓自己能有一個常用這程式環境,然後學會並活用,我覺得有時學習要像日文學習(勉強)那樣勉強自己。

         我打算先看過課程一次,看第二次時跟著操作,然後看相關書籍學習完整的知識,希望年底能增加一項新技能,在此先做個紀錄,順利的話也能用在工作上,這是一個會比原本我會的工具還要強的程式。

           以前自學VBA花的時間有點多,這次算是學不同程式,我認為會比當初學VBA快一些,因為 迴圈、字典這些我在VBA都已經硬學成功了。






線上學習_好學校Haow
線上學習_好學校Haow


2022年3月27日 星期日

檸檬樹終於開花

 

        大約11-12年前,大約是我在剛進前公司時,用買來的檸檬榨完汁後把子弄出來,種種子盆栽,本以為過個3-4年可以結果,沒想到連花都沒開過,在今天終於看到兩個花苞。

       每次只要檸檬樹要快要長更高就會被岳母修短,今年算是開花了。


檸檬樹花苞
檸檬樹花苞

檸檬樹花苞
檸檬樹花苞

檸檬樹花苞
檸檬樹花苞

檸檬樹花苞
檸檬樹花苞

檸檬樹花苞
檸檬樹花苞


2022年2月15日 星期二

小孩學程式

 

        今天女兒洗完澡後說有一個電腦功課,沒想到是在線上學習程式,因為不能太晚睡,所以就陪著她看了一下,那個課程有20關,說明是1小時課程,但母親大人要求他9點半完成,於是會一點點程式的爸爸就幫忙看了一下,雖然是方塊式的學習,以沒有經驗的小孩來說1小時似乎還有點少。

       女兒在小1~3年級時有參加學校的機器人,課程也有一點點程式概念,但我女兒相較於其他小朋友應該沒那麼深入,所以只能說以往的經驗只有一點點幫助,20個小關卡含有迴圈、邏輯、迴圈+邏輯,因為有點難,於是給予小孩一點點建議,在20分鐘內完成順利在9點半睡覺,沒想到也有證書。

         看了一下網站內容,是亞馬遜、谷歌和微軟的工程師幫助創建了這些材料,而且是免費,看介紹是大家都能學習,是個程式新手可以學習的地方,也是可以引起小孩對程式感興趣的方式。

學習網址:https://studio.code.org/courses

免費線上學習網址 studio.code.org
免費線上學習網址 studio.code.org

線上學習證書
線上學習證書


2022年2月9日 星期三

新冠疫苗第三劑_BNT施打紀錄(副作用?)

        2/9 今天下午感覺到左膝關節有些不舒服,以前沒發生過
(感覺相關新聞很常出現這句話)

---------------------------------2/3
        在施打前一天剛好看到打第三劑的一些負面新聞,多少有一些心情緊張,我老婆就暫時取消了原本預約好的時間。如果還有第四劑可能真的要思考一下...
         我知道的中醫師本身比較推薦自我抗體、對症下藥,不過政策有時是很難去違抗。

          下面做了簡單紀錄,會量體重是想看看有沒有變瘦,上次施打疫苗有感覺到稍微瘦,不過這次是春節期間,吃了一星期體重也沒什麼增加,不知跟疫苗有沒有關係。紀錄沒有定時,只有頭兩天有稍微注意,後面就在有點症狀時紀錄一下相關資訊。
        基本上只有手稍微痠痛,其他症狀幾乎沒有,頭兩天有點疲倦,整體而言還是第一劑AZ症狀比較多一點。

1/27 開始補充高單位 C泡錠

1/29 
8:30 打第三劑(BNT)
20:30 體溫36.3 體重62

1/30 
8:30 體溫36.4 體重60.7  心跳70 血壓142/94
22:30 體溫 36.4 體重61.7 心跳70 血壓 138/91

2/3
11:30(有點頭痛) 體溫36.4 體重62.3 心跳67 血壓137/91

2/9 (懷疑是副作用...)

13:00 睡醒後感覺左膝蓋關節有點痠痛,走動會痛。
20:00 站了30分鐘左右洗碗,爬樓梯感覺左腳要伸直,是有明顯感覺不舒服。

因為心不安,所以去看了一下中醫,問診後說不向血栓,說我的感覺來自肌肉內,要再觀察一下,就幫我退掛。

如果是蹲下或者坐著做腳的擺動也沒什麼感覺,唯獨走動跟上下樓梯有感覺,這我自己也覺得有點怪。

2022年2月2日 星期三

Excel_SQL_外部連結兩個工作表_單頭單身

有些國外大廠的ERP(如Oracel)轉出來的資料是分開的單頭單身,如果沒有相關報表串聯,這時候用SQL是一個不錯的選擇(另一個選擇是Power Query),如果用VBA的話可能要將兩個工作表資料先放同一個檔(比較少用VBA的SQL語法),代碼寫起來也花時間,下面用SQL語法相對簡單一些。



SELECT A.單據號碼,客戶名稱,品號,品名,數量,單價

FROM [單頭$] A

LEFT OUTER JOIN 

[單身$] B

ON A.單據號碼=B.單據號碼

ORDER BY 客戶名稱

2022年1月20日 星期四

回顧2021年

          今天(2022/1/20)發現忘了回顧2021年,因為12月換新公司,心思較無法注意太多地方

       2021年12月去新公司感覺就在挖礦?應該說交接的資料很不齊全,慢慢拼湊,每天早到半小時(7:30),晚一小時下班(18:00),當然回家也是有利用一些時間在公事上,以不同形式,譬如學習或查詢相關法令,企圖趕快把未完進度趕上,還有迅速熟悉公司。當然不可能毫無意義的趕資料,在趕的過程中也思考下次做怎樣比較快。

        PS.個人覺得做一樣的事很無聊,所以要把時間用在有意義的地方。


  1. 2021年1月認真學習Power Query。
  2. 2021年6月Power Query有明顯進展。
  3. 2021年11月底告別待了12年的公司。
  4. 2021年12月到新公司挖礦??



Excel_SQL_字元限制(當你得不到想要的,你就會得到經驗)

 當你得不到想要的,你就會得到經驗

        這句話是最近看到的,不過卻是2007年時就出現的名言,最近才聽到,不過我感受到了,下面的SQL 程式碼要再擴充時(Excel中使用SQL字元太多無法運作),excel就出現錯誤訊息,N年前在前公司使用時好像有印象遇過一次,沒想到現在這麼快就遇到了,在這邊紀錄一下。 

         這時我想到的是Power Query的好用,不過大概要再過一陣子,表現出自己是一個重度數據使用者,這樣提出一個公司沒有出現過的office版本才有說服力(我只是想要office 2016版)。


PS.2022/1/14 我用SQL讓我的excel當掉,也因此可以從4G記憶體往上擴充記憶體。



select *,"20"& mid(請購單編號,4,2) as 年,

switch(摘要 like "%維護營運費%","ORACLE相關"

,摘要 like "%ORACLE%","ORACLE相關"

, 摘要 like "%Spam SQR%","Spam SQR相關"

,摘要 like "%UPS%","UPS不斷電"

,摘要 like "%不斷電%","UPS不斷電"

,摘要 like "%VM相關%","ERP、VM相關維護費用"

,摘要 like "%趨勢%","防毒相關"

,摘要 like "%防火%","防毒相關"

,摘要 like "%Fire%","防毒相關"

,摘要 like "%Storage%","Storage及Server相關費用"

,摘要 like "%Server%","Storage及Server相關費用"

,摘要 like "%專案%","專案型支出"

,金額<10000,"其他金額10000以下"

,True,摘要) as 項目分類

from [XX請購$]

Excel_SQL_HAVING+COUNT統計出現多次及單次的紀錄寫法

 下面的例子應該可以用在統計同一銷售客戶同一品號兩個報價以上,

以及同一品號只有一個供應商提供,也許會讓電腦不夠強的當掉。(如果用Power Query 就能解決比較複雜的狀況)



'..........................統計兩次紀錄以上資料

SELECT  A.料號,品名,單位,倉別,庫存數

FROM [物料表$] A , 

(SELECT 料號 FROM [物料表$] GROUP BY 料號 HAVING COUNT(料號) >1) B 

WHERE A.料號 =B.料號


'----------------------------------------------------統計單次

SELECT * FROM [程式清單$] A

WHERE (SELECT COUNT(程式代號) FROM [程式清單$] WHERE 程式代號=A.程式代號)=1



'----------------------------------統計單次另一種方式

SELECT *  FROM [程式清單$]  

WHERE 程式代號 IN

 (SELECT 程式代號 FROM [程式清單$] GROUP BY 程式代號 HAVING COUNT(程式代號)=1)

2022年1月16日 星期日

Excel_SQL_INNER JOIN連接不同格式表格

 

將不同格式相同key的資料聯結




SELECT 學生姓名,性別,年齡,課程名稱,老師姓名

FROM ([學生$] A INNER JOIN [課程$] B ON A.編號=B.編號)

INNER JOIN [老師$] C ON B.編號=C.編號

ORDER BY 課程名稱

非本人信用卡繳保險_規定

以下是金管會的新聞稿,可能是金管會特別發新聞稿,保險公司原本沒有很要求非本人信用卡繳保險的,現在也要提供相關證明。 




金管會提醒消費者購買保險繳交保費應注意事項

   金融監督管理委員會(下稱金管會)提醒消費者購買保險繳交保險費時,應向經手之業務員索取收據,並最好以信用卡、銀行帳戶扣繳或開立平行及禁止背書轉讓且抬頭為保險公司之支票繳交保險費,以維護自身之權益。
為使繳交保險費之交易流程清楚明確,避免爭議,金管會提醒消費者繳交保險費,應留意瞭解以下規定:
一、    「保險法施行細則」第3條規定,保險公司收取保險費,應由其總公司或分公司簽發正式收據。故消費者繳交保費後,如未拿到保險公司製發之收據,應向保險公司洽詢確認,以保障自身權益。
二、    「保險業授權代收保險費應注意事項」第2點規定,保險業收取以現金或支票方式繳納保險費,應「同時」交付保戶送金單或收據並載明收費時間,保險業授權所屬保險業務員、保險代理人或其所屬保險業務員代收保險費,亦應依規定交付送金單或收據,保險業並應負授權人之責任,以減少消費爭議。
三、    消費者以信用卡、銀行帳戶扣繳保險費時,應注意授權書上相關資料填寫之正確性,授權人簽名處應由授權人親自簽名。又依「保險法」第115條規定,利害關係人得代要保人交付保險費,如有以非要保人本人之信用卡或銀行帳戶扣繳保險費者,應先向保險公司瞭解應提供之關係證明文件,以避免衍生相關爭議。
金管會進一步呼籲即使是透過親朋好友購買保險,消費者於繳交保險費時,仍應要求業務員同時交付收據,並核對收據金額及相關資訊之正確性,如有異常,亦應向保險公司洽詢確認,以確保自身之權益。

聯絡單位:保險局壽險監理組
聯絡電話:(02)89680763
如有任何疑問,請來信:本會民意信箱

2022年1月13日 星期四

VBA_填充_樞紐資料_縮排_超越頓悟

       幾年前在前公司,某一天正在key VBA代碼時,突然不用查代碼可以一直很順的打出代碼,那時我相信武俠小說寫的頓悟,今天晚上洗澡時在想明天公司資料擷取時要怎麼寫代碼比較快(不好的習慣,下班後還在想公事...太難改掉),因為是以前寫過的,洗著洗著突然認為可以在沒資料時寫出代碼,就這樣試著打,還真的完成代碼了,明天去公司只要微調就能使用,這次有BLOG記錄這個心情,心情開心,這跟超級賽亞人變身一樣嗎? 

        我想曾經打過的方式,應該都能在沒資料時都把code建構出來了吧。

PS.下面的代碼用在抓樞紐資料,因為樞紐跑出來會有點類似縮排,如果要抓類似資料格式,我個人認為是用VBA比較快。(尤其是沒有可用Power Query版本的office)



Sub A0_頓悟()

    '2022/1/13 22:03

    

    Application.ScreenUpdating = False

    Dim D_資料, sh_來源 As Worksheet, sh_目的 As Worksheet

    

    Set D_資料 = CreateObject("scripting.dictionary")

    Set sh_來源 = Sheets("A")

    Set sh_目的 = Sheets("B")

    

    With sh_來源

        lr = .Range("A1048576").End(xlUp).Row

        arr_資料 = .Cells(1, 1).Resize(lr, 2)

        

        For i_次 = 1 To 2

            For i = LBound(arr_資料) To UBound(arr_資料)

                If i_次 = 1 Then

                    If arr_資料(i, 1) = "" Then

                        arr_資料(i, 1) = arr_資料(i - 1, 1)

                    End If

                ElseIf i_次 = 2 Then

                    in_料號 = arr_資料(i, 1)

                    in_客戶 = arr_資料(i, 2)

                    in_條件 = in_料號 & in_客戶

                    

                    D_資料(in_條件) = Array(in_料號, in_客戶)

                End If

            Next

        Next

    

    End With


    With sh_目的

        .Cells.Delete

        .Range("A2").Resize(D_資料.Count, 2) = Application.Transpose(Application.Transpose(D_資料.items))

    End With

End Sub



用VBA寫股市交易策略可行嗎?

 

        在國內有些教授出書提到用VBA寫股市策略,我自己有買的書就是姜林杰佑、許江河這兩個教授寫的,也許還有其他教授出書教怎麼用VBA寫策略也不一定,只是我後來在這方面少著墨。最近翻交易聖經2這本書,作者布倫特‧潘富( Brent Penfold)提到他用VBA做不同的策略回測,這讓我有點訝異,沒想到知名的股市名人也會用VBA去做交易策略回測。

        我自己幾年前也曾經用VBA以去做過,只是在資料庫整理方面花時間,只玩了一小段時間,不過基本上VBA做交易策略是可行的,只要有一點點VBA程度就可以。

        如果用這方面來看Power Query ,我的理解似乎是無法做這方面的測試,但應該是能用在股市資料庫整理,以及相關資訊的連結。

2022年1月12日 星期三

VBA_移動檔案_清單方式

           移動檔案用清單的方式,這是我覺得比較方便的方式,試了之後很快,下面可以看到來源夾剩一個檔案,故意留下來看看是不是我要的結果,目標夾全移過去了。

           為了整理凌亂的檔案,這是其中一個步驟。



移動檔案的清單
移動檔案的清單

移動檔案的來源資料夾
移動檔案的來源夾

移動檔案的來源目標夾
移動檔案的目標夾



 Sub 移動檔案_清單方式()

'2022/1/12 22:15

    Application.ScreenUpdating = False

    With ActiveSheet

    For i = 2 To 8

    in_原始 = .Cells(i, 1).Text

    in_新位置 = .Cells(i, 2).Text

        Name in_原始 As in_新位置

    Next

    End With

End Sub

VBA_移動檔案_資料夾

移動檔案,整個資料夾移動, 


Sub 移動檔案_資料夾()

'2022/1/12  21:56

Application.ScreenUpdating = False


Dim objFile As File

Dim objFolder As Folder

Dim objFSO As FileSystemObject

Dim in_原始夾 As String

Dim in_目標夾 As String

in_原始夾 = "C:\Users\arthur\Desktop\C槽桌面\TESTA"

in_目標夾 = "C:\Users\arthur\Desktop\C槽桌面\TEST"

Set objFSO = New FileSystemObject

Set objFolder = objFSO.GetFolder(in_原始夾)


For Each objFile In objFolder.Files

'If (objFile.Name <> ThisWorkbook.Name) And (InStr(1, objFile.Name, ".xls") Or InStr(1, objFile.Name, ".csv")) Then

objFile.Move (in_目標夾 & "\" & objFile.Name)

'End If


Next objFile


End Sub

VBA_移動複製檔案_檢查日期

下面的代碼是當初整理相片時網路上找到然後修改,印象中花瞭半小時處理1萬個以上的相片檔,現在想要用在批次整理新公司的檔案,不過還不夠簡單,但先存一下做個紀錄。

 主要功能,透過檢查日期的方式,以檔案的修改日、建立日、授權日中最小的日期當作檔案一開始的日期(如果同一天會做備份,這部分需要自己檢查有沒有依樣),然後做分類,算是比較花時間的方式,但比自己去分類相片簡單多了。


Sub 移動檔案___改()

    '2017/10/14 2017/10/16改

    Application.ScreenUpdating = False

    

    Dim objFile As File, 目的_File As File

    Dim objFolder As Folder, 目的_folder As Folder

    Dim D_檔案檢查 As Object

    

    

    ' DateLastModified DateCreated DateLastAccessed

    Dim objFSO As FileSystemObject

    

    Dim current_path ' As String 在namespace那邊抓不到

    

    

    current_path = "D:\照片\2016\新增資料夾" '應該可以用dic 方式把所有資料夾丟到Arr or 參考取得檔案名稱的方式修改

    

    Set objFSO = New FileSystemObject

    Set objFolder = objFSO.GetFolder(current_path)

    Set D_檔案檢查 = CreateObject("scripting.dictionary")

    

    mypath = "D:\照片\"

    On Error Resume Next

    For Each objFile In objFolder.Files

            in_修改日 = Format(objFile.DateLastModified, "yyyymm")

            in_建立日 = Format(objFile.DateCreated, "yyyymm")

            in_授權日 = Format(objFile.DateLastAccessed, "yyyymm")

            

            With CreateObject("shell.application").Namespace(current_path)

                in_文字 = Split(Split(.getdetailsof(.Items.Item(objFile.Name), -1), vbLf)(1), ":")(1)  'objFile.Name

                in_拍攝日 = Right(Split(in_文字, "/")(0), 4) & Format(Mid(Split(in_文字, "/")(1), 2, Len(Split(in_文字, "/")(1)) - 1), "00")

                

            End With

            

            If in_拍攝日 <> "" Then

                目的_path = mypath & Left(in_拍攝日, 4) & "\" & in_拍攝日 & "\"

                Set 目的_folder = objFSO.GetFolder(目的_path)

                For Each 目的_File In 目的_folder.Files

                    D_檔案檢查(目的_File.Name) = 目的_File.Name

                Next

                If D_檔案檢查(objFile.Name) = False Then ' And Format(objFile.DateLastModified, "yyyymm") = in_年度 & Format(i_月, "00") Then

                    objFile.Move (目的_path & "\" & objFile.Name)

                Else

         '           Do While D_檔案檢查(Split(objFile.Name, ".")(0) & "_1." & Split(objFile.Name, ".")(1))=false

                    objFile.Move (目的_path & "\" & Split(objFile.Name, ".")(0) & "_1." & Split(objFile.Name, ".")(1)) '備分確認用

                    

                End If

            Else

                in_最小日 = Application.Min(in_修改日, in_建立日, in_授權日)

                目的_path = mypath & Left(in_最小日, 4) & "\" & in_最小日 & "\"

                Set 目的_folder = objFSO.GetFolder(目的_path)

                For Each 目的_File In 目的_folder.Files

                    D_檔案檢查(目的_File.Name) = 目的_File.Name

                Next

                If D_檔案檢查(objFile.Name) = False Then ' And Format(objFile.DateLastModified, "yyyymm") = in_年度 & Format(i_月, "00") Then

                    objFile.Move (目的_path & "\" & objFile.Name)

                Else

                    objFile.Move (目的_path & "\" & Split(objFile.Name, ".")(0) & "_1." & Split(objFile.Name, ".")(1)) '備分確認用


                End If

              '  Set D_檔案檢查 = Nothing '***************

            End If

            

            

    Next objFile

                Set D_檔案檢查 = Nothing '***************




End Sub

2022年1月4日 星期二

開始學習word

            新的工作使用word的部分比以前要多,讓我感覺到自己對word的不足,因此翻出以前出差大陸時買的word書籍,還有再次進入論壇學習word(偏高階及word VBA),看到當初註冊的時間點2010/5/15 23:30,真是佩服自己的學習心,當年進入前公司是在2009/9/1,那時主要是學習Excel,讓我從一個小白變成前公司Excel最強? 既使是現在目前公司,仍然覺得自己excel還可以輾壓很多同事。

         對於word使用佔據太多正常工作時間,深深感覺到有點浪費生命,因此打算提前把一些word知識預先學習,減少無謂的浪費,畢竟文書工作人人能做,不能學習Doctor-X~外科醫·大門未知子說的話那我就選擇加強自己word能力,開始對於自己能縮短word的工時,之後會把學習的部分放blog中記錄成長過程。


論壇註冊時間
論壇註冊時間


WORD_VBA_選定首行做處理

            開始學習Word  VBA,不過用在word上比較少,因此打算可能會用到的語句開始,雖然同樣是VBA,但excel VBA跟word VBA 還是有些差異處,語法方式看起來是一樣。


  1. Sub 對於文章中每段首行做標示()
  2. application.screenupdating = false
  3.     Dim i As Long
  4.     Selection.HomeKey unit:=wdStory
  5.     Do
  6.         Selection.EndKey unit:=wdLine, Extend:=wdExtend
  7.         Selection.Font.Color = wdColorRed '紅色
  8.         Selection.Font.Bold = True '粗體
  9.         Selection.Font.Underline = wdUnderlineWavyHeavy '波浪線
  10.         Selection.MoveDown unit:=wdParagraph, Count:=1'往下移動
  11.         i = i + 1
  12.     Loop Until i = ActiveDocument.Paragraphs.Count
  13. End Sub

2022年1月2日 星期日

VBA_彙總不同工作表相同格式資料

如果使用Power Query 該有的欄位都有,但不同檔的欄位排列不一樣的話(A檔 甲乙丙,B檔 丙乙甲),Power Query可以自動排列,我還是比較喜歡用Power Query。



彙總個工作表資料 

Sub A0_彙整資料()

    '2022/1/2 22:00  22:30完成

    Application.ScreenUpdating = False

    

    Dim D_項目, D_附件, D_工作表, Sh_項目 As Worksheet, sh_附件 As Worksheet

    

    Set D_項目 = CreateObject("scripting.dictionary")

    Set D_附件 = CreateObject("scripting.dictionary")

    Set D_工作表 = CreateObject("scripting.dictionary")

    

    

    For i = 1 To Sheets.Count

        D_工作表(Sheets(i).Name) = i

    Next

    If D_工作表.exists("項目彙總") = False Then

        Sheets.Add.Name = "項目彙總"

    End If

    If D_工作表.exists("附件彙總") = False Then

        Sheets.Add.Name = "附件彙總"

    End If

    Set Sh_項目 = Sheets("項目彙總")

    Set sh_附件 = Sheets("附件彙總")

    'On Error Resume Next

    For i_sh = 1 To Sheets.Count

        With Sheets(i_sh)

            If .Cells(9, 2) = "稽核項目" Then

                br = .Cells.Find("稽核項目", LookIn:=xlValues).Row

                bc = .Cells.Find("稽核項目", LookIn:=xlValues).Column

                lr = .Cells(br, bc).Offset(, 1).End(xlDown).Row

                For i = br To lr

                    in_項目 = .Cells(i, bc)

                    in_範圍 = .Cells(i, bc + 1)

                    in_單位 = .Cells(i, bc + 2)

                    in_日期 = .Cells(i, bc + 3)

                    in_工作表 = Sheets(i_sh).Name

                    

                    D_項目(in_工作表 & i) = Array(in_工作表, in_項目, in_範圍, in_單位, in_日期)

                Next

            ElseIf .Cells(6, 2) = "編號" Then

                br = .Cells.Find("編號", LookIn:=xlValues).Row

                bc = .Cells.Find("編號", LookIn:=xlValues).Column

                lr = .Cells(br, bc).Offset(, 1).End(xlDown).Row

                For i = br To lr

                    in_編號 = .Cells(i, bc)

                    in_部門 = .Cells(i, bc + 1)

                    in_文件 = .Cells(i, bc + 2)

                    in_工作表 = Sheets(i_sh).Name

                    

                    D_附件(in_工作表 & i) = Array(in_工作表, in_編號, in_部門, in_文件)

                Next

            End If

        End With

    Next

    With Sh_項目

        .Cells.Delete

        

        .Range("A2").Resize(D_項目.Count, 5) = Application.Transpose(Application.Transpose(D_項目.items))

        

    End With

    With sh_附件

        .Cells.Delete

        

        .Range("A2").Resize(D_附件.Count, 4) = Application.Transpose(Application.Transpose(D_附件.items))

        

    End With


End Sub


用GPT修改M語法_以日期列處理

在2023年GPT開始使用時我就詢問過GPT,可能當時的GPT還不夠聰明,給予的答案無法運行,我認為原始的語法應該可以更聰明點,詢問過Power BI社群的人,但沒有人提供答案,終於在現在再度詢問GPT給予的答案與我思考的方向依樣,只是我懂得語法不多,透過GPT幫忙解答,我也學到...