結構化參照語法規則 - 從參照到結構化參照系列(5/5)

從Excel「參照」到「結構化參照」系列分享
結構化參照語法規則(5/5)

好了,有了前面基本觀念的鋪陳,我們就來聊聊Excel結構化參照的語法規則與實務範例囉!在建立結構化參照的公式時,參照公式裡可具有以下的元件:

  • 資料表名稱(Table Name)
    例如:此範例中我們對於新建立的資料表(原本預設名稱為「表格1」),變更其資料表名稱為「銷售統計」。每一個活頁簿裡所建立的資料表格都應該具有獨一無二的資料表名稱。與其使用預設且沒有意義的流水號名稱,當然衷心建議使用者為資料表自訂較有意義與可讀性高的資料表名稱。
  • 欄指定元(Column specifier)
    欄指定元指的是資料表裡的各欄位,例如此前述範例中的[商品]、[銷售金額]、[成本]等等,便是欄指定元,也就是資料表裡的各欄位名稱(或稱資料行名稱)。這些欄指定元所代表的便是該資料行裡不包含欄標題及合計列的所有資料內容。切記,必須使用中括弧括住欄位名稱。此外,欄指定元可以搭配以下的運算元(Operand),以利於同時參照數個欄位:​
  • 項目指定元(Item specifier)
    項目指定元指的是可以參照到資料表裡特定部位的特殊項目。Excel的結構化參照一共有五種項目指定元,分別為:[#全部]、[#資料]、[#標題]、[#總計]以及@(或[#這個列])。例如:[#總計]或英文版稱之為[#Totals],指的是資料表的合計列;而[#資料]或英文版稱之為[#Data],指的是資料表裡除了標題列與合計列以外的所有內容。相信從以下的幾幅插圖表標示,相信您一定可以清楚的瞭解資料表中可參照的項目指定元是代表那些位置及其專有名詞。

  • 表格指定元(Table specifier)
    如果在資料表以外的工作表儲存格內,欲參照資料表裡的表格元素,也就是表格裡的部份內容,則表格名稱的後面就加上一對中括號框起來的表格指定元。簡單的說,表格指定元(Table specifier)就是以逗號將項目指定元(Item specifier)與欄指定元(Column specifier)結合起來,再用中括號將指定元框起來。其語法為:
    =資料表名稱[項目指定元,欄指定元]
    例如:若對應到前述範例,想要結構化參照名為「銷售統計」之資料表的總計列其總成本的值,則的參照寫法即為:
    =銷售統計[[#總計],[成本]]
    可傳回一個值,因此,只需一個儲存格來存放此參照結果。
    而若是要參照整個銷售金額欄位裡的每一筆內容,則參照寫法即為:
    =銷售統計[[#資料],[銷售金額]]
    可傳回多個值,即資料裡的每一個銷售金額,因此,必須事先有較多的空白儲存格空間來存放此參照結果。

綜觀,一個完整結構化參照的可能的語法型態如下:

  • table_name 資料表名稱
  • table_name[column_specifier] 資料表名稱[欄指定元]
  • table_name[item_specifier] 資料表名稱[項目指定元]
  • table_name[table_specifier] 資料表名稱[表格指定元]

回顧

若是以手動輸入公式的方式來建立或編輯結構化參照時,輸入正確的資料表名稱,會自動以藍色文字提示,有同名開頭的資料表亦可顯示選單提示與挑選。在工作表名稱後按下左中括號「[」按鍵,亦可展開資料表的欄指定元與項目指定元的選單,讓您從中點選所要的內容。

各項目指定元的表示方式與意義:

  • @這個列
    僅選擇指定欄中的這一列。
  • [#全部]
    傳回這個表格的整個內容,或是指定的表格欄,包括標題列、資料列和合計列。
  • [#資料]
    傳回表格的資料儲存格或指定的表格欄(僅包含資料列)。
  • [#標題]
    傳回表格欄標題,或指定的表格欄。若表格樣式選項中,未勾選標題列,則會出現#REF!錯誤。
  • [#總計]
    傳回表格的合計列或指定的表格欄。若表格樣式選項中,未勾選合計列,則會出現#REF!錯誤。
  • [@]
    僅包含與作用儲存格同列的所有資料。
  • [@columnName]
    僅包含與作用儲存格同列,屬於columnName欄位的資料。

(註:此Excel陣列函數系列文章的實作範例下載)