~~~~~~~~~~~~~~~~~~~~~~~~~~

我們單位的報表在活動經費資料的下方會有一些相關的說明文字,因此一個活動計劃都包含數列的高度(幾列並不固定)。

現在,我必須依舊活動經費餘額由大到小遞減排序,因而面臨跨數列的整組排序困擾。資料如下圖所示:

GloupSort01.jpg 

 

請問我該怎麼做?

~~~~~~~~~~~~~~~~~~~~~~~~~~

 

原則上,我認為這個問題其實原本是不應該發生的。所謂「人無遠慮,必有近憂」。當初在建立報表時,如果仔細地考慮未來的使用需求,而在佈局時好好的進行規劃,不要一味地延用舊規、追求美觀,那會有今天的困擾?不過,人總是事後諸葛,有問題就來設法解決吧。

 

〔解題思路〕

如果每組資料都有一個唯一的組別代號,那麼整組排序(移動)就不成問題了。我們不妨在原始資料的右側增加一個「組別代號」欄位(C欄)。

觀察範例資料,在A欄中的「活動計劃」欄位資料正好可以用來區分組別,但是排序的關鍵欄位是位在B欄中的經費數額,因此我們必須使用” 經費數額”串接”活動計劃”的文字公式來產生組別代號。以C2儲存格為例其公式應為

    =B2&A2

但是仔細觀察範例資料,在同一組資料中只有該組第一列的A欄上會有代號資料,其餘各列的A欄中都是空白儲存格,這項差異迫使我們必須加上條件式公式。

如果A欄的儲存格中是空白的,就延用上一格的組別代號,否則就用B欄及A欄的資料串接成組別代號文字

 

這段條件語法轉譯成公式內容就成為(以C2儲存格為例)

    =IF(A2=””,C1,B2&A2)

將C2儲存格公式往下複製,便可產生各組的組別代號。

GloupSort02.jpg 

 

 

當排序範圍中含有公式資料時,您必須小心處理公式中的相對/絕對參照關係的設定,否則可能會在排序後,得到非預期的錯誤答案。

因此,我通常都會建議好友將充當排序鍵值的公式資料先轉成常數值。在2007/2010版中,您可以使用「常用/複製常用/貼上值」這2個指令來完成轉成值的工作;在2003版(或更早版本)中,則必須使用使用「編輯/複製編輯/選擇性貼上/值」這2個指令來處理。在範例中D欄中是轉成值的組別代號。

 

 GloupSort03.jpg

 

然後再以已經轉成常數值的組別代號(D欄)資料為排序鍵值,以遞減方式對整份資料進行排序,就可以求得所要的整組排序結果了。

 

GloupSort04.jpg 

 

由於新增的組別代號公式與值(C欄及D欄)資料都是為排序作業而新增的多餘欄位,完成排序之後,便可以將此2欄位予以隱藏或刪除。

arrow
arrow
    全站熱搜

    OfficeDr 發表在 痞客邦 留言(2) 人氣()