2008年4月28日 星期一

五股濕地淨灘記

 
  星期六,參加了荒野保護協會的淨灘活動,地點在五股濕地的淡水河灘。

〔行前說明,丫丫拿夾子在耍寶〕
##CONTINUE##
  淨灘,其實就是撿垃圾,把隨著潮水日積月累在河灘上的垃圾,努力的清乾淨。這當然不是一件好玩的事情,因為河水並不乾淨,垃圾也很臭,除了人造的垃圾之外,還有死貓死魚之類的。近矩離接觸時,髒臭指數也隨著距離接近成指數上升。實在很佩服荒野保護協會的志工們,可以長期做這種服務性工作。

〔到達河灘地,開始淨灘〕

  不過,對丫丫而言,撿垃圾是一項「任務」,沒有好壞可言。她很認真的尋找垃圾,很努力的用大夾子夾垃圾,很執著的去追被風吹走的垃圾....和我們這些打混摸魚,沒有全力以赴的大人們相比,決定了,給丫丫第一名啦!

[丫丫撿垃圾,超認真〕

  因為剛好漲潮,河灘地被河水淹沒,範圍並不大,不過,河邊的垃圾還是不少,我們努力了約一個半小時,撿了幾大袋垃圾,也算成果豐碩了。

〔驗收成果,垃圾還真是多啊!〕

  有限的人力,無限的垃圾,河灘的垃圾,大概是永遠淨不完的。淨灘,其實不是為了淨灘,而是要淨心!心乾淨了,河灘自然就乾淨了。淨完了灘,希望大家都學會,用心來愛護我們的環境。

  忘了問丫丫,下次還要不要來淨灘?

2008年4月8日 星期二

[軟體] 快速切換網路設定 - NetSetMan

 
  當你帶著筆記型電腦在不同的網路環境下上網時,可能每次都需要重新做網路設定。網路設定怎麼做?〔開始〕〔控制台〕〔網路連線〕〔區域網路〕〔內容〕〔TCP/IP〕〔內容〕,然後選擇「自動取得 IP 位址」或是填入 IP 位址,子網路遮擇,預設閘道....

  很麻煩吧!

  更慘的是,你每次換網路環境都要重覆做一次...

  現在,你有更好的選擇- NetSetMan!!

##CONTINUE##
  NetSetMan 是免費的,可切換英文版中文簡體版。它可以記住六組不同的網路設定,只要事先做好一次網路設定,以後切換設定時,只要按兩個鍵,就可以輕鬆切換了,方便吧!

  上圖是主畫面,有六個頁面可以設定六組設定,每個頁面可以任意自訂名稱,方便使用。第一次設定時,記得按 Refresh 鈕自動掃描你的網路卡,並選擇一張你想設定的網路卡,再開始設定。

  想切換網路設定時,只要選擇你想要的設定頁面,再按 Activate 鈕,就會出現下圖的視窗,並開始更改網路設定。更改完成之後,再按 OK 取消子視窗即可。


2008年4月7日 星期一

[EXCEL] 用公式做資料排序

 
  如果可以用公式來篩選資料,那麼可不可以用公式來排序?也是可以的。

  要把資料排序,可以在〔資料〕〔排序〕,然後選擇你要的鍵值和排序方法。但是,一樣會有一些不方便的地方。

  • 第一,如果資料有所變動,都要重新排序一次,無法自動排序
  • 第二,排序會破壞原始資料的順序
  • 第三,不能只顯示部份欄位,所有欄位都會全部顯示
  如果想跳脫上述的限制,我們可以自己設計公式來做排序的動作。

##CONTINUE##
  如上圖,要從學生的成績單中自動做分數的遞增排序,可以在 E2 輸入陣列公式

=INDEX(B:B,MOD(SMALL($C$2:$C$6*100+ROW($C$2:$C$6),ROW(A1)),100))

  公式說明:
  • $C$2:$C$6*100+ROW($C$2:$C$6): 將分數和所在列數編碼成一個數字,並形成一個陣列。此數字的百位數以上就是分數,百位數以下則是所在列數,將此數字陣列排序後,可以維持分數的正確大小順序,而且可以推算出所在列數。
  • SMALL(數字陣列,ROW(...)): 依序從數字陣列中傳回第一小,第二小...的數字。
  • MOD(SMALL(...),100): 從數字中回推出所在列數。
  • INDEX(顯示資料欄位,SMALL(...)): 從顯示資料欄位中取出所在列數所對應的值。
  在 F2 輸入陣列公式

=INDEX(C:C,MOD(SMALL($C$2:$C$6*100+ROW($C$2:$C$6),ROW(A1)),100))

  再直接往下複製即可。這是一個陣列公式,記得用 CTRL+SHIFT+ENTER 來完成輸入。

  這樣,我們可以任意在 A:C 欄變動資料,E:F 欄會馬上自動顯示出最新的排序結果,而且可以任意指定要顯示那些欄位。

  如果想遞減排序,只要把 SMALL() 改成 LARGE() 就可以了。如 H2 輸入公式

=INDEX(B:B,MOD(LARGE($C$2:$C$6*100+ROW($C$2:$C$6),ROW(A1)),100))


2008/10/06 補充:

  原文中的公式,如果分數有小數點,或是資料超過 100 列,就無法正常運作。故修正公式如下:

  =INDEX(C:C,MOD(SMALL($C$2:$C$6*(10^(X+Y))+ROW($C$2:$C$6),ROW(A1)),10^X))

  其中,資料最大列數必須小於 10^XY 則是分數的小數點位數。

  它的原理和原文中的說明是一樣的,只是把它具體化為公式,比較容易運用。如原文中的例子,資料列數 =6 <100 (=10^2),分數都是整數 (小數 0 位),則 X+Y=2+0=2。

  如果資料列數 =101 <1000 (=10^3),分數有兩位小數,則 X=3,Y=2,公式就要變成

  =INDEX(C:C,MOD(SMALL($C$2:$C$6*(10^(3+2))+ROW($C$2:$C$6),ROW(A1)),10^3))

  或是直接把 10 的次方算出來,變成

  =INDEX(C:C,MOD(SMALL($C$2:$C$6*100000)+ROW($C$2:$C$6),ROW(A1)),1000))