2007年10月2日 星期二

[EXCEL] 顯示組合清單

 
  相關函數:INDEX() / ROW() / MOD() / INT()

  如下圖,我們有四種水果,三種包裝尺寸,兩種包裝方法,想要列出一個清單能包含各種組合狀況,如何設公式?

##CONTINUE##
  根據排列組合原理,共有 4*3*2=24 種組合狀況,使用下面的通用公式,我們可以利用 Excel 快速的把這二十四種組合狀況的清單列出來。

  =INDEX(顯示資料範圍,1,
   MOD(INT((ROW(A1)-1)/(低階資料個數乘積)),顯示資料個數)
   +1)

  以水果清單 A6 的公式為例

  =INDEX($B$1:$E$1,1,MOD(INT((ROW(A1)-1)/(3*2)),4)+1)

  • 顯示資料範圍:即為水果種類所在範圍 $B$1:$E$1,因為稍後要直接往下複製,所以必須為絕對位置。
  • 低階資料個數乘積:所謂低階資料,就是表格右側的資料,也就是尺寸種類 3,和包裝種類 2 的乘積。
  • 顯示資料個數:即為水果種類 4。

  同理,尺寸清單 B6 的公式如下

  =INDEX($B$2:$D$2,1,MOD(INT((ROW(A1)-1)/(2)),3)+1)

  同理,包裝清單 C6 的公式如下,沒有低階資料時,乘積直接填 1

  =INDEX($B$3:$C$3,1,MOD(INT((ROW(A1)-1)/(1)),2)+1)

  然後,再把 A6:C6 直接往下複製即可。

  好了,現在你有了二十四種組合狀況的清單,可以幹活了....幫每種組合狀況定個價錢如何?

2008/5/30 補充說明:

  針對公式,做較深入的說明。其實,所謂排列組合的清單,說穿了,只是做兩件事:

  第一,找出這是第幾輪的資料,也就是從資料清單中要挑第幾個資料出來顯示。以範例來說,第一層的第一輪要出現蘋果,第二輪要出現香蕉。

  第二,找出低一層的資料個數乘積,也就是同一輪的資料要顯示幾次。以範例來說,第一層的第一輪要出現蘋果的次數,是第二層尺寸3*第三層包裝2=6次

  再回頭看公式,MOD()+1,就是做第一件事。INT(ROW(A1)-1/乘積),就是做第二件事。再進一步看公式:

  ROW(A1)-1:是要把序號 1-24,變成 0-23,這樣待會兒在做 INT(序號/低階資料個數乘積) 時,才會得到正確的結果。例如,位置 A10 和 A11 是第五和第六個組合,序號 5,6,應該都顯示第一輪蘋果,但是如果做 INT(5/6)=0,INT(6/6)=1,會顯示不同的資料。為了把序號 5 和 6 落在同一個正確的位置,所以要先減一才行。

  而 MOD(...)+1,則是因為 ROW(A1)-1 後,得到的資料會從 0 算起,0,1,2,3,而 INDEX() 要求的是 1,2,3,4,所以再 +1 補回來。

2007年9月21日 星期五

摺紙青蛙

 
  丫丫一直要我教他摺紙青蛙,而且是會跳的那種。

  我發誓,我小時候會摺,可是現在真的忘了,找了一些摺紙書也沒發現,所以我一直找藉口拖延,說我還在「研究中」。

  前兩天,丫丫又要我教他摺紙青蛙,我正想說我還沒研究好,丫丫突然冒出一句:

##CONTINUE##
  「那我們上 Google 找摺紙青蛙的方法啊!」

  呵呵,上次和她上網找「兩點鋸鍬形蟲」的資料,成果不錯,丫丫現在是舉一反三。可是,網路上會有摺紙青蛙的方法嗎?

  兩人興沖沖的打開電腦,在 Google 輸入「摺紙 青蛙」,嘿!還真找到了,而且是一步一步的照片說明喔!網址是

  http://www.froghome.idv.tw/html/class_7/life_12.html

[藍色青蛙是我摺的,粉紅色青蛙是丫丫摺的,跳的還不錯喔!]

  這下可好,不必再尷尬的找藉口了。而且,摺紙青蛙的照片說明,我看的懂,丫丫只看懂一半,呵呵,終於可以重拾老爸無所不能,有求必應的雄風了,哈哈哈哈!

2007年9月19日 星期三

[EXCEL] 尋找第二組子字串

 
  相關函數FIND() / SUBSTITUTE()

  要在一個字串中找到另一組子字串的位置,例如,在 "This is a book" 中找出第一組 "is" 的位置,只要直接使用 FIND() 函數即可,如下圖 C1。

  但是,如果要在一個字串中找到第 n 組子字串的位置時,該如何做?

##CONTINUE##
  Excel 有另一個函數 SUBSTITUTE() 可以把字串中的第 n 組子字串換成任何別的字串。如上圖 B3 把第二組 "is" 換成 "*"。

   利用這個特性和 FIND() 結合,就可以找出第 n 組子字串的位置了。其關鍵點是,利用 SUBSTITUTE() 把你要找的字串換成一個在原字串中沒有的字元,再利用 FIND() 找出這個字元即可。如上圖 C3,可以找出第二組 "is" 的起始位置是 6。

  把 SUBSTITUTE() 的最後一個參數換成別的值,例如,換成 5,就可以找出第五組子字串的位置了。

2007年9月17日 星期一

等待夕照-星海之戀

 
  因為一幅美麗的夕照圖,來到桃園蘆竹的星海之戀咖啡館,然後帶著小小的失望回家。

  如果你喜歡一直坐在露天椅子上痴痴的等待夕陽 (如果運氣好,天氣很配合的話),遠遠的看飛機起降,或是等待夜色到來的燈火夜景,和好友聊聊天,或是靜靜的思考 (如果運氣好,旁邊的客人不吵的話),那麼,這裡還滿適合的。

##CONTINUE##
  如果你除了靜靜坐著之外,還想四處走走,看花看草,那就對不起啦!綠草如茵的高爾夫球場搭配夕陽,是很不錯的景色。不過,別懷疑,這裡也就這麼一個角度,這麼一個景而已。除此之外,沒啦。

  小孩不宜來,因為腹地很小,沒地方跑,沒東西玩,只能坐著聊天看風景。

  大聲喧嘩的客人也不宜來,因為會吵到別的客人,破壞難得的氣氛和景色。

  寵物狗也不宜來,因為既沒地方跑,也會吵到別的客人。

  星海之戀咖啡館網站上的十張照片就是所有的景色了。你可以先去看看,然後祈禱天氣好,祈禱沒有煞風景的客人和你一起到。

2007年9月12日 星期三

Google Picasa 網路相簿

 
  繼「Yahoo 個人網站」關閉之後,「Yahoo 網路相簿」也即將在下個月收攤了。

  對我來說,「網路相簿」是親朋好友之間聯絡感情的好方法。尤其是有些親友南北相隔,有些親友住在國外,一張照片,可能勝過千言萬語。因此,Yahoo 的網路相簿倒了,我的網路相簿可不能倒,只好另起爐灶。

##CONTINUE##
  國內最著名的網路相簿應該是「無名小站」了,可是它已被 Yahoo 併購,未來動向不明。而且廣告頗多,畫面凌亂,對崇尚簡潔明瞭的我而言,並不喜歡。

  Yahoo 則是推薦使用 Flickr,我有去稍微看了一下,直覺上有點隔閡,不是 Flickr 不好,只是個人感覺有點陌生。

  因為幾個原因,後來決定先試用 Google 的「Picasa 網路相簿」。

  第一,我已經有免費的 Google 帳號了,不必重新申請。

  第二,我一向很喜歡 Google 簡潔的風格,廣告也很少。

  第三,也是最重要的原因,我本來就有在單機上使用「Picasa 相片管理軟體」了。而「Picasa 相片管理軟體」和「Picasa 網路相簿」是可以完美結合的,很容易就上傳照片,所以當然先試用看看囉。

[Picasa 網路相簿的外觀,簡單明瞭!]

  試用了一下,覺得還滿好用的。

  • 配合「Picasa 相片管理軟體」,上傳照片很容易,管理也很方便。
  • 可以上傳任意大小的照片。對方可以下載後直接沖洗成照片。
  • 完整保留照片的 EXIF 資訊。沖洗照片時很好用。 (什麼是 EXIF?看這裡的說明)
  • 如果對方有 Google 帳號,可以直接針對照片留言,交換心情。
  • 幻燈片模式,質感不錯。
  • 雖然容量限制為 1GB,但是把照片縮小成適合螢幕觀看的 1600像素或 1024像素之後,仍然可以放下兩三千張照片,對我而言夠用了。而且,縮小照片的動作,「Picasa 相片管理軟體」會在上傳時自動幫你做好,不需另外傷神。
  • 也可以上傳和播放影片喔!

[Picasa 網路相簿的單張模式,右側有詳細的 EXIF 資訊。]

  總之,到目前為止,我很滿意,也推薦你試用看看。

  • Picasa 相片管理軟體:官方網站,可免費下載。http://picasa.google.com/
  • Picasa 網路相簿:官方網站,可免費申請帳號。http://picasaweb.google.com/