2020年3月29日 星期日

[開放標案]還不錯的政府標案查詢系統

開放標案是 G0V 的一個專案,目的是把政府電子採購網上的標案資訊,重新整理為,讓一般民眾容易的了解政府採購資訊。其功能大約分為以下三大部分:

  1. 每日標案:除可依每月瀏覽標案資訊外,也可用招標和決標分開檢視。
  2. 相關單位:可以用機關組織檢索、廠商檢索及廠商檢索依營業類型檢索,檢索機關與廠商的基本資訊。
  3. 統計:可依各月招標統計、得標廠商排行、高額標案排行、各單位得標廠商統計。
其功能完善使用也算方便,例如現在假設我們想要找國眾電腦在108年度所得標案統計資料, 如果我們由選單操作了話,我們可以由[統計]->[得標廠商排行]裡面去找,如下畫面。


在這畫面左上可設定所要查詢的年份,經確可目前可回溯到2012年,畫面下方圖及表格,則為依年度得標金額排行所列,可以看到沒有我們要找的國眾電腦,這時我們可以在其右邊的搜尋欄中鍵入國眾,就可以找出國眾電腦年度標案資訊,如下圖所示。


這裡我們可以看到搜尋的結果,在2020年國眾電腦得標案件有20件,金額新臺幣346,420,100元,如果想看進一步的標案資訊,可點選標案檢索的前往,會跳出國眾電腦的得標案件資訊,如下圖所示。


國眾電腦的得標案件畫面會列出統計圖表,及得標案件資訊,包含招標機關名稱、標案名稱、金額、招標決標日期、得標廠商及原始的決標公告,以統計的用途來說算夠用了。如果想進一瞭解標案執行起迄、招標方式、投標廠商資訊,可在點選原始的決標公告,觀看相關資訊。


真的是要感謝 G0V 開發這個開放標案系統,否則以前要查這些資訊,只能透過付費網站取得,相當的不方便,有興趣的朋友可多多利用。






2020年3月24日 星期二

如何善用 Query 函數自動捉取最新填寫Google表單的紀錄

利用 Google 表單來製作免費的線上問卷調查,或是收集學校班級、公司、民間團體裡的各種投票、意見、資料,當填問卷者重覆填寫問卷時,要如何捉取填問卷者最新回覆的內容呢?
一般人可能會想到將Google 表單填寫的回覆內容寫入Google 試算表後,使用 vlookup 函式捉取,但使用該函式只會捉取指定範圍中的符合條件第一筆資料,而Google 表單紀錄顯示是依填充時間順序由上往下排列,因此使用vlookup 函式,只能捉到最早填寫的紀錄,如以下例子所示。


在上面紅色框我們可以看到Google 表單的紀錄是依填寫時間排列,最新填寫的紀錄,會顯示在最下列,右邊我們顯示了用 vlookup 函式,查找ID為1001人員姓名,查找的結果為「王小明」,是ID為1001中的第一筆紀錄,但通常我們會想要捉取填表者最新填寫內容,就以上例而言我們會想要捉取的名字為「王三明」
要達成上面要求,我們可以使用 query 、 index 及 rows 三個函式來達成,這三個函式中最主要的是用 query 函式找出所有符合 ID 為 1001 的姓名,在本例也就是 「王小明」「王三明」
首先使用 query 函式語法如下:
QUERY(資料, 查詢, [標題])
參數設定如下:
資料: 為所要搜尋資料範圍,在本例為 A:D 欄。
查詢: 所用的語法為 the Google Visualization API Query Language. 語法類似 SQL,在本例我們們使用下面語法
select D where B =1001
上面語法的意義是搜尋符合 B 欄 (ID) 為 1001的所有 D 欄 (姓名)的欄位。
整個語法為
query(A:D,”select D where B=1001")
上述語法執行結果如下:


用 query 函式找出符合條件資料後,接下來捉出最後一筆(最新)資料,這時可用 index 函式,語法如下:
INDEX(參照, 列, 欄 )
參數設定如下:
參照: 在此為用 query 函式找出的結果。
列: 在此我們要找最後(新)一列,我們可以用 rows 函式,傳回用 query 函式找出的結果列數。
欄: 在本例只有一欄,所以為 1。
整個語法為
index(query(A:D,”select D where B=1001"),rows(query(A:D,”select D where B=1001")),1)
上述語法執行結果如下:


我們可以看到執行的結果,是我們想要捉取的姓名為「王三明」。活用 query 、 index 及 rows 三個函式,即可捉取重覆填寫 Google 表單的最新紀錄,達到使用 vlookup 無法達到的效果。

善用 Excel 進階函數 vlookup,解決工作上大小事。

Excel 我們知道提供很多函數,從數學、財務、統計、日期...等等有上百個函數,但要在這些函數選一個最常用的函數,我想非 vlookup 莫屬,這個函數主要用途是在您指定的資料範圍內,透過「查閱值」,去尋找在所指定資料範圍內,你所要的欄位資料,其語法如下:
VLOOKUP(查閱值 , 資料範圍 , 指定欄位索引, [已排序])
其參數說明如下:

  • 查閱值我們所要搜尋的值,使用上有二個限制:
    1. 必需是資料範圍內第一欄所會出現的值。
    2. 資料範圍第一欄內,該值最好在第一欄內是唯一值,否則結果可能不如預期。
  • 資料範圍係我們所要搜尋的範圍,系統會在該範圍的第一欄尋找搜尋詞中指定查閱值。
  • 指定欄位索引,代表要傳回的值所屬的欄索引。資料範圍中的第一欄編號為 1,也就是說,如果你想要傳回資料範圍內第3欄的資料,指定欄位索引就設為3,如指定欄位索引並非介於 1 和資料範圍的欄數之間,系統會傳回 #VALUE!
  • [已排序]有二種情形:
    1. 絕大多數情況下,請設為 FALSE,該設定會使系統會傳回完全相符的值。如果有多個相符值,系統會傳回與找到的資料範圍第一欄中第一個值對應的儲存格內容;如果找不到相符值,則會傳回  #N/A
    2. 設為 TRUE 或省略,系統會傳回最接近的相符值 (小於或等於搜尋詞)。如果進行搜尋的欄中所有的值均大於搜尋詞,則會傳回 #N/A
以下舉一實際範例來說明如何應用,現假設我們想從下面範例的股票股利股息表,捉出特定公司現金股息及股價,算出其現金殖利率,在此因為股票代號是唯一的,當然我們就選用股票代號為查閱值,去查出該股票本年度的現金股息及股價。



因此在下面現金殖利率表中,股票代號由我們手動輸入所要查詢的股票代號,股價欄位則應用 vlookup 捉取,語法如下:


=vlookup(B2,'股票股利股息表'!A:F,6,false)

在此查閱值為現金殖利率表的B2,也就是股票代號欄位;資料範圍為股票股利股息表的A到F欄;指定欄位索引在此我們要的是股價,也就是在股票股利股息表由股票代號起算的第6個欄,因此設定為6;[已排序]一般則設為 false 。同樣的現金股息的部分也是相同的方式,語法如下:


=vlookup(B2,'股票股利股息表'!A:F,3,false)

得到股價及現金股息,就可以計算出現金股息殖利率了,在下表的範例1,我們展示計算泰詠現金股息殖利率的結果;在範例2,我們展示如果我們沒輸入股票代號或輸入股票代號,不在股票股利股息表中時,會傳回  #N/A,如果要避免出現,可加上 iferror 函數,將 #N/A轉為我指定的值,因此前面兩個函數可修改如下:


=iferror(vlookup(B4,'股票股利股息表'!A:F,6,false),) 
=iferror(vlookup(B4,'股票股利股息表'!A:F,3,false),)
修改後的結果如範例3所示,在此我們將 #N/A 改為空白 。



前面介紹完 vlookup 語法,粗略來看該語法所做的事情,事實上很簡單,就是將我們所要的資料,由指定資料範圍找出來,有點像是簡單查詢程式,但其應用變化多端存乎一心,用的好的話可以解決工作上的很多問題,例如可用在下面場合:

  1. 如同前面的範例,將其中一個表當作資料庫,將我們所要欄位資料捉到另一個表做計算使用。
  2. 比對兩個表或欄位資料是否有差異,在文書作業中,我們常常會製做很多表,有的時侯版本控管沒控管好,時間久了我們會忘了那一版為最終版,這時可用 vlookup 函數來做比對,方法是在其中一個表中捉取另一個表中的資料,看是全部都會捉到,還是會出現#N/A,由此可知兩個表的差異,當然如果要更細緻一點,可以在加上 if , and ,or 等判斷式,做更細部的確認
  3. 可以用於將多張不同的表,匯整成一張大表使用。
  4. 將適用於試算表運算的表,改為適合的閱讀或文書作業的表,就如同在如何將紙本表單轉為 Google 表單後,讓填寫人填寫完後轉為紙本表單格式印出。 所做的,將表單填表人所填的資訊,轉為紙本表單格式印出。
  5. 跟 4 的應用反過來,是將適合的閱讀或文書作業的表改為試用試算表計算用的表,在此時單用 vlookup 可能沒辦法完全處理好,需要搭配使用 index 、 column、row 等函數才有辦法處理。
以上為 vlookup 使用方式及其應用的介紹,如果能應用的好,事實上可以解決工作上的很多問題,故我一直認為 vlookup 為 Excel 最重要的函數,不過如果你問我在 Google 試算表是否也是如此,那我會說不一定,原因為在 Google 試算表有提供另一個同類型的函數 query ,其使用限制更少,功能更強,有興趣朋友可以參考我這篇文章。但 query 使用語法較為複雜,需下如 SQL 的語法才能使用,而且限制在Google 試算表才能用,因此 vlookup 還是一值得學習的函數。

2020年3月21日 星期六

[讀書心得]起源-丹.布朗

在起源這本小說,丹.布朗秉持其一貫我稱之為「科學寫實主義」的寫作風格,在既有科學發展及現實環境下鋪陳出他的故事,創造出貼近現實但又科幻的感受,就如其在書中發宣稱的:
事實  本書所有的藝術品、建築、地點、科學與宗教組織皆真實存在。
而其涉及的「事實」範圍可謂是無遠弗屆,包括建築、藝術、詩、科學、生物學、宗教、及其最擅長的符號學,這樣海量的資訊吸收消化,融入這本小說並無違和,可見作者的功力。劇情的鋪陳更是張力十足,吊足人的胃口,在本書丹.布朗同時處理了宗教、科學、科技、同性等多個議題,相當具有企圖心,不過因為其寫作風格太過貼近於現實,只要對科學發展熟悉的,其謎底事實上在中間就可以猜的出來,而讓人覺得會有虎頭蛇尾之感,不過我想這或許就是作者本身的堅持,不讓小說偏離事實太遠,這一點在其「達文西密碼」、「天使與魔鬼」、「失落的符號」、「地獄」系列小說中,我們可以看的出來,而作者或許也了解這點,所以在本書中,採多線議題發展,所以會造成一個很好玩的現象,主線謎底很容易猜,但支線劇情反而沒猜到(或許是本人的功力不夠),西班牙大主教與西班牙國王的關係,到最後一刻才猜的出來,書中的二段話也別具意義。
愛是出自另一個領域,我們無法在需要時製造它,當它出現時也無法壓抑它,愛不是我們能選擇的。
愛情是私事;世人不需要知道每個細節。 
也許我們的作者,以後想往言情小說發展?不論如何,本書雖然解謎性有缺,仍可算是一本充滿知識性及娛樂性的小說,相當值得一看。

2020年3月17日 星期二

使用手機當掃描機,將文件轉成PDF檔

一般來說,如果我們有需求要將文件轉成 PDF 時,會在事務機或在商用影印機,將文件掃描轉成 PDF 檔,但有時剛好在外面有將文件轉換為 PDF 需求時該如何?事實上現在的手機功能強大,並且相機的解析度也高,事實上硬體功能已經足夠來做這件事,也有很多手機 APP有提供這樣的功能,像是 Camera Scanner To Pdf - TapScannerAdobe Scan:PDF 掃描器等,這裡介紹一個個人常用,且其功能持續有在改進的 APP : CamScanner

CamScanner 這個 APP,個人覺得最好用的功能是,可用手機拍文檔,自動去除雜亂背景,生成高清JPEG圖片或PDF檔,除此之外,如果你不滿意 APP 調整的結果,也可手動調節圖像參數,用手機即可將紙質文件,快速轉為電子檔。

 CamScanner 這個 APP的使用非常簡單,在進入主畫面後,按下右下方的相機按鍵,即可開始使用。

接下會進入拍照畫面,下方可以選擇想要的模式,一般來說選擇普通就可以了,將文件擺到定位確定對焦清楚後,按下中間的相機鍵即可,但請注意拍攝的背景畫面最好選擇單色的,並且跟文件的底色差異愈大愈好。另如果拍時怕有反光,也可開閃光燈解決此問題。


在拍完後就會進入到調整畫面,在此我們可以看到 APP 已經自動將文件的裁切邊界標出來,如果覺得不滿意,可以拉動圓點的部分調整,如果沒問題直接選擇右下的打勾鍵。


接下來只要選擇文檔名稱及類型(也可不設),在選確定即完成。


完成整個程序後,會回到主畫面,這時可看到最上方就是我們所新增的文件。


點進去可看到該文件所有影像,如這時還想在這文件新增影像,可在選右下方的相機鍵,依上面的步驟行一次即可。如果想轉為 PDF 檔,請點選右上方 PDF 圖示。


這時會跳到轉換畫面,下方有一些額外的功能可用,不過除了檔案瘦身的功能外,都要付費升級後才可使用,畫面也會列出浮水印位置,如不要浮水印,需付費升級。如看過沒問題,可選擇分享,看要將此文檔轉到那一個 APP 進行後面工作。






以上為簡單介紹 CamScanner 這個 APP,事實上這個 APP 功能不只如此,其功能還有很多,只是部分需付費升級才可使用,有興趣的朋友,可以用用看。




2020年3月15日 星期日

如何捉取其他 Google 試算表資料

在 Goole 試算表中,如果我們要捉取其他試算表的資料,例如現在有一個工作表2如下:
現我們想將工作表2 A1 格內的資料連結到工作表1 A1 的資料,我們可以在工作表1的 A1 鍵入 ='工作表2'!A1 ,這麼做就可將工作表2的A1格的資料連結到工作表1的 A1格中,結果如下面所示。
但如果是要捉取別的 Google 試算表內工作表的資料,該如何做?在 Google 試算表中可以使用 importrange 函式,語法如下:

IMPORTRANGE(spreadsheet_key, range_string)

其中 spreadsheet_key - 做為資料匯入來源的試算表網址,spreadsheet_key 的值必須放置在引號內,或者是一個含有適當文字的儲存格參照。例如我們想要將試表算1的工作表2的A1:B3 的資料連結到試算表2的工作表1,我們要先取得試算表1的網址,如下圖紅框所示。

在使用時,可將全部的網址用引號括起來,然後直接帶入函式中,不然也可以只取 spreadsheet_key,也就是 d/ 至 /edit 中間粗體字串使用。

range_string - 符合 "[sheet_name!]range" 格式的字串 ,用於指定要匯入的範圍。在本例也就是  工作表2'!A1:B3 ,也需要用引號括起來
整個函式為以下:

=importrange("10Pa3p6E5STYxFoq4UPCXMoraQxxS9ml5UZqP4Q_3Sv4", "'工作表2'!A1:B3")

代入試算表2一開始會出現錯誤訊息 #REF ,如下圖所示。
這是因為還未取得授權,只要點下允許存取鍵即可,結果如下圖。
如此即完成整個設定過程。

[短影片]願所有的愛,都能被温柔相待


這影片是大陸六星媒體有限公司所製作,這間公司製作許多短影片,很多是搞笑影片,但也有影片是有深度且發人深省,這部影片就屬於這一類。我想除了父母的愛外(事實上也不應是),沒有什麼愛是理所當然的,如果有幸遇到屬於自已的愛,請記得真心相待,且愛且珍惜,別忘了有些時侯你的歲月靜好,事實上是有人為你負重而行。


2020年3月11日 星期三

在 WIN 10 下執行 SikuliX 2.0.X 版。

在 Win 10 底下,下載了 Sikuli的 Jar 檔,下載下來後行後說缺少 Jython,無法正常執行,跑去Jython官網下載安裝,確仍然無法正常執行,最後才發現,原來是要去下載  SikuliX 下載頁所附下列 Jython 解釋器。

用於python腳本的Jython解釋器2.7.1(默認)

並將其放到與SikuliX.jar相同的文件夾中。
下次啟動時,它們將被SikuliX識別,並移至SikuliX的擴展文件夾。
因此最好是在第一次使用IDE之前先下載。