2010/01/23

Excel programming

週五被社發科科長徵召下樓,在 Excel 中處理某種人力分配數字,最終是要把包含正負整數的數列裡面非負的挑出來加總。Excel 基本上是 purely functional,不過功能相當弱,例如我一直覺得沒有個 LET 之類的東西真是太失敗了(替代方案是把要綁定的算式真的填在某一格裡,然後參照那一格,但很多時候我們根本不想讓那算式實際出現在試算表內)。如果是 Haskell 的話寫 sum . filter (> 0) 就完了,但 Excel 沒這麼泛化的構件,幸好最後發現有 SUMIF 可以用,之後查到也可以用 SUMPRODUCT 模擬,稍微泛化一點。查的時候也發現 JFP 2007 年有篇〈Spreadsheet functional programming〉就是讓 Excel 裡面可以寫 Haskell,但看完發現根本沒提到怎麼處理 lists,沒有多大用處。後來我想可以用 VBA 把 list 轉成 Haskell 可讀的型式和 Haskell program 一起送進 runghc 然後把輸出轉譯回來,但就算真的做得到,也代表每重算一格就得喚起一個 runghc process,光想像其效能之低劣就令人不寒而慄!比較可行的方案應該是像 Agda mode 那樣放一個 ghci 在背景與之互動,但這以我近乎零的 VBA 功力(或是寫 Office 插件的能力 ─ 完全是零)得花不少時間摸索。所以目前還是 Excel 原有的功能先撐著用啦。

--
其實只要有這點功力就已經在辦公室內呼風喚雨了 XD。

Labels:

Blogger 海龜1/24/2010 7:26 pm 說:

Save as HTML.
Programming in jQuery!!

=.= 我承認方法很爛

 

<< 回到主頁