當前位置:編程學習大全網 - 編程語言 - 創建鏈接到Excel表的可變長度,動態報告-Excel學習網

創建鏈接到Excel表的可變長度,動態報告-Excel學習網

當您更改單元格中的條件值時,Excel可以使用公式和條件格式來自動擴展或收縮報表,而無需宏。這是如何做。

Excel Tables是Excel 2007中引入的壹項強大功能。您不僅可以直接向它們報告,還可以將它們用作動態報告(包括可變長度手風琴報告)的數據源。

第壹項任務是快速而輕松的;第二個更有趣。讓我們看看兩者。

直接從Excel表報告

假設您有壹個這樣的表,並且想要為每個銷售人員生成壹個呼叫分配報告。

最簡單的方法是直接從表格中報告。例如,如果要報告Alyson,可以單擊?銷售人員?過濾器,然後從列表中選擇Alyson,從而得到以下結果:

您可以打印她的報告,然後為Peter做同樣的事情。

但是,您通常不希望直接從表格中報告。例如...

您可能需要包括公式以顯示添加到表中數據的信息。(當然,您可以將計算出的列添加到表中,但是如果這些計算需要大量查找,則較長的表可能需要很長時間才能重新計算。)

您可能需要在報告中為表格中的每壹行報告多行信息。

在這些情況下,您將需要創建壹個動態報表,該報表從表中返回數據,這是壹個非常有趣的任務。

引入動態的?手風琴?報告

下圖顯示了由同壹工作表生成的三個報告。如您所見,報告的長度各不相同...像手風琴壹樣展開和收縮。因此,我稱它們為手風琴報告。

通過從列表中選擇? *?,我自動顯示了第壹個報告。我選擇? Alyson?顯示了第二個,而選擇? Peter?顯示了第三個。所有這三個報告都從上面的兩個Excel表中獲取數據。

以下說明向您展示了如何從頭開始構建此報告。

從壹個電子表格動態創建三個手風琴報告。

這些報告也是動態的,因為它們會根據您在壹個或多個單元格中指定的條件動態變化。

壹覽無余,這是報告工作表的樣子,其中通配符被選為CurSeller標準:

註意...

此頁面頂部的呼叫分配日誌有六個分配。該報告也有六個分配,但是每個分配使用兩行。

該報告在D列中顯示了銷售人員,當選擇了特定的銷售人員時,該字段將不成立...如下圖所示。

第18和19行包含允許添加其他呼叫分配的公式。您可以根據需要在電子表格中向下復制這兩行。

這是選擇Alyson的同壹報告:

選擇Alyson後,報告結構將以兩種方式自動更改。首先,D列的內容消失。其次,僅顯示Alyson的作業,在報告底部保留空白行。

讓我們看看如何創造這種魔力...

創建日誌和客戶端表

第壹步是在新工作簿中創建日誌表。為此,請輸入此處顯示的日期和文本。

然後,要將簡單表轉換為Excel 2007或更高版本中的Excel表,請選擇該表,然後選擇?插入?,?表?,?表?。在?創建表?對話框中,確保選中? 我的表具有標題?,然後選擇?確定?。

默認情況下,第壹個表名為Table1。要將名稱Log分配給該表,請選擇表中的任何單元格,然後在?表工具?,?設計?,?屬性?中,輸入名稱Log 作為表名。

同樣,我們需要壹個?客戶詳細信息?表:

將名稱客戶端分配給該表。

設置控制表

第二步是設置控制表。首先,在報表工作簿中創建壹個新工作表,並將其命名為Control。

右圖顯示了控制表的全部內容。

TopRow單元格返回?呼叫分配日誌?的第壹行號。這是顯示的單元格的公式:

B2:= ROW(Log [#All])

為了創建這個公式,我輸入了...

= row(

...然後我選擇了整個日誌表;輸入了右括號;然後按了Enter鍵。Excel設置了公式中所示的Table引用,即使我指定了較大的區域,這是因為 當我們指定多行範圍時,Excel的 ROW函數將返回第壹行。

NumRows單元格使用 ROWS函數返回日誌表中當前數據的行數。這是顯示的單元格的公式:

B3:= ROWS(Log [#All])-1

將A列中的兩個名稱分配為B列中的範圍名稱。

選擇範圍A2:B3,

選擇?公式?,?定義的名稱?,?根據選擇創建?。

在對話框中,確保僅選中? 左?列,然後選擇?確定?。

要設置賣方列表,請輸入如圖所示的文本,並根據需要設置其格式。然後選擇範圍A5:A8,然後再次啟動?從選擇中創建?對話框。但是,這壹次確保僅選中? 頂行?。

創建報告

首先向您的報表工作簿添加壹個新的工作表。將工作表命名為?報告?。

現在,讓我們在單元格B1中設置列表框,如此處的報告所示(並在下面重復多次):

選中單元格B1,然後選擇?數據?,?數據工具?,?數據驗證?,?數據驗證?。然後,在?數據驗證?對話框中,在? 允許?列表框中選擇? 列表?,然後輸入 = Sellers作為? 源?。然後選擇確定。

現在,您只能在單元格B1中輸入的數據是您在控制表中輸入的賣方列表的內容。

使用?創建名稱?,將範圍名稱CurSeller分配 給單元格B1。

要生成實際報告,請先在F3:F4範圍內輸入標簽。

如下圖所示,要將標簽居中放置在三列上,請勿合並單元格!而是選擇範圍F3:H4,選擇用於對齊的對話框啟動器(由下面的紅色箭頭顯示)以啟動顯示?對齊?選項卡的?設置單元格格式?對話框。

對於對話框中的?水平文本對齊?設置,選擇?跨選區居中?。然後選擇確定。

輸入F5:H5範圍內的標簽,然後為每列輸入公式和數據。

F列包含對報告中的每組行重復的序列號。因為每組呼叫分配信息使用兩行,所以同壹序號出現兩次。H列中的公式依賴於這些數字。

輸入為單元格F6和F7顯示的值。然後輸入此公式...

F8:= F6 + 1

...並將其復制到如圖所示的列中。

G列計算每組行中的每壹行。也就是說,組中的第壹行是1,第二行是2。條件格式公式依賴於這些數字。

要輸入這些數字,請輸入單元格G6和G7中顯示的值,然後將範圍G6:G7復制到該列中,如圖所示。

H列包含報告中最復雜的公式。這些數字的目的是在日誌表中標識包含CurSeller過濾器指定的信息的行。

這是單元格H6的公式。我將其分為七行,因此更易於閱讀和解釋,但您通常可以將其輸入壹行。

類別1:H6:= IF($ F6> NumRows,?,

類別2:IFERROR(

類別3:IF(CurSeller =? *?,$ F6,

類別4:AGGREGATE(15,6,(1 /(Log [ SalesPerson] = CurSeller))*

第5行:ROW(Log [SalesPerson]),$ F6)

第6行:-TopRow),

第7行:?))

第1行:如果當前行的F列中的序列號大於日誌中的行數,則返回壹個空字符串(?)。除此以外...

第2行和第7行:如果以下公式中有錯誤,請在第7行中返回空字符串。否則,返回以下公式的內容。

第3行:如果用戶在CurSeller單元格中選擇了通配符? *?,我們需要顯示此行數據。因此,在F列中顯示序列號。

第4和5行:使用 AGGREGATE函數返回包含Alyson數據的最小行號(假定選擇了她的名字)。

當將此公式復制到單元格H8時,$ F6將更改為$ F8,其值為2。因此,在該單元格中,AGGREGATE函數將返回第二小的行編號,該行編號包含Alyson的數據。將其復制到H10後,它將返回最小的第三列,依此類推。

在第4行中,部分(Log [SalesPerson] = CurSeller)生成壹個TRUE和FALSE值的臨時數組。將數組劃分為1時,它將返回壹個值等於1和#DIV / 0的數組!錯誤,這正是我們在這種情況下想要的。

然後,當我們乘以第5行返回的行號時,我們得到壹個行號數組和#DIV / 0!錯誤。

因為AGGREGATE的第二個參數中的6告訴函數忽略錯誤,並且因為其第壹個參數中的15告訴函數使用SMALL函數,所以AGGREGATE返回最小的非錯誤行號(由單元格F6中的值指定) ,這是找到Alyson姓名的第壹行。

(為了更好地了解AGGREGATE公式在這種情況下的工作方式,請在 AGGREGATE函數頁面上研究示例8至11。 )

第6行:第4行返回的行號是工作表的行號;但是我們需要日誌表中的行索引號。為了獲得該數字,我們減去?控制?工作表中TopRow單元返回的行號。

如圖所示,將公式向下復制到H列。

創建報告的正文

這是報告,從上方再次重復:

有了三個控制列之後,我們現在可以返回報告中顯示的文本。因此,輸入所示的公式...

A3:=?&IF(CurSeller =? *?,?所有賣家?,PROPER(CurSeller))的呼叫分配

此公式返回報告標題的文本。

範圍A4:C5包含顯示的標簽。只需輸入它們。

單元格D4包含以下公式:

D4:= IF(CurSeller =? *?,?銷售人員?,?)

當CurSeller條件等於? *?時,此公式將返回壹個空字符串。

在第6行中,輸入...

A6:= IF($ H6 =?,?,INDEX(Log [Client],$ H6))

B6:= IF($ H6 =?,?,INDEX(Log [Date],$ H6))

C6:= IF($ H6 =?,?,INDEX(Log [CallType],$ H6))

H列用作開關。如果此列中的指定單元格(由INDEX函數標識 )包含空字符串(?),則我們希望工作表不顯示任何內容,既不顯示數字,也不顯示文本,也不顯示格式。當單元格H6不為空時,這些公式將返回客戶端的名稱,日期和呼叫類型。

D6:= IF(OR(CurSeller <>? *?,$ H6 =?),?,INDEX(Log [SalesPerson],$ H6))

單元格D6添加了另壹項測試。如果CurSeller是通配符或單元格H6為空,則返回空字符串。否則返回銷售人員。

接下來的三個公式從?客戶詳細信息表?中返回數據:

A7:= IF($ H6 =?,?,INDEX(客戶[公司],MATCH($ A6,Clients [客戶],0)))

B7:= IF($ H6 =?,?,INDEX (Clients [Phone],MATCH($ A6,Clients [Client],0)))

C7:= IF($ H6 =?,?,INDEX(Clients [PastSales],MATCH($ A6,Clients [Client] ,0)))

這三個公式相似。他們在單元格A6中獲取客戶的名稱,在?客戶詳細信息?表中查找該客戶的行號,然後在該行中分別返回?公司?,?電話?和? PastSales?。

在第6行和第7行中輸入公式後,將公式向下復制到第19行。

格式化報告

為了便於參考,下面是完整的報告:

將所需的所有填充顏色和字體分配給第3至5行。

現在,讓我們分配條件格式,這使報表像魔術壹樣工作。在分配格式時,請記住報告中的公式正在處理文本。也就是說,如果假定行或列為空白,則受影響的單元格中的公式已經顯示了空字符串。

該報告使用四種條件格式...

條件格式1

此格式控制報表正文中每兩行壹組的第二行。分配方法如下:

選擇範圍A6:D19,確保單元格A6是活動單元格。

選擇?主頁?,?樣式?,?條件格式?,?新規則?。

在?新格式設置規則?對話框中,選擇? 使用公式來確定要格式化的單元格?。

在標有? 格式值,其中此公式為true的編輯框:?中,輸入:

= AND($ G6 = 2,$ H6 <>?)

(註意:該行號和下面的其他條件格式公式中的行號必須為與活動單元格相同的行號。)

在?新建格式規則?對話框中,選擇?格式?以啟動?格式單元格?對話框。

在?邊框?選項卡中,指定底部邊框。

選擇確定,直到所有對話框都消失。

條件格式2

此格式控制報表正文中藍色和白色的交替填充顏色。步驟如下:

選擇範圍A6:D19,確保單元格A6是活動單元格。

選擇?主頁?,?樣式?,?條件格式?,?新規則?。

在?新格式設置規則?對話框中,選擇? 使用公式來確定要格式化的單元格?。

在標簽格式為其中該公式為true的值的編輯框中:,輸入:

= AND(ISODD($ F6),$ H6 <>?)

在?新建格式規則?對話框中,選擇?格式?以啟動?格式單元格?對話框。

在?填充?選項卡中,指定淺藍色填充。

選擇確定,直到所有對話框都消失。

條件格式3

此格式是隱藏D列內容的兩種格式之壹:

選擇範圍D4:D5,確保單元格D4是活動單元格。

選擇?主頁?,?樣式?,?條件格式?,?新規則?。

在?新格式設置規則?對話框中,選擇? 使用公式來確定要格式化的單元格?。

在標有? 格式值?(在此公式為true的位置)的編輯框中,輸入:

= CurSeller <>? *?

在?新建格式規則?對話框中,選擇?格式?以啟動?格式單元格?對話框。

在?填充?選項卡中,指定?無顏色?。

在?邊框?選項卡中,指定黑色的左邊框。

選擇確定,直到所有對話框都消失。

條件格式4

這種格式是另壹種隱藏D列內容的格式:

選擇範圍D6:D19,確保單元格D6是活動單元格。

選擇?主頁?,?樣式?,?條件格式?,?新規則?。

在?新格式設置規則?對話框中,選擇? 使用公式來確定要格式化的單元格?。

在標有? 格式值?(在此公式為true的位置)的編輯框中,輸入:

= CurSeller <>? *?

在?新建格式規則?對話框中,選擇?格式?以啟動?格式單元格?對話框。

在?填充?選項卡中,指定?無顏色?。

在邊框選項卡中,指定沒有邊框。

選擇確定,直到所有對話框都消失。

您現在應該有壹份手風琴工作報告。

  • 上一篇:木工數控雕刻機的操作步驟
  • 下一篇:嶽嶽主要經歷
  • copyright 2024編程學習大全網