半導體企業內的數位轉型課程筆記-1-Excel

製程整合單位的數位轉型課程架構與概念-Excel

excel

前言:Microsoft應用程式的界面邏輯

在一系列筆記之前,我們可以透過應用程式的概念去了解這個程式大致的功能,
如此一來就可以很容易的理解一個介面,這樣的話即使更新或者是其他程式,
例如把這個想法套到Excel和PBI上面,都可以很快的上手,而之後我們用VSCode也是一樣的概念。

ref: Windows app silhouettes

  • 上方導覽:用於控制主視窗內容項目及搜尋
    例如: Word中的File, Home, Format

上方導覽

  • 左方導覽:用於控制整個應用程式的設定,或切換主視窗內容
    例如: Outlook中的切換郵件內容(主視窗內容)的郵件選單

左方導覽

  • 下方狀態:主視窗視覺設定,或簡要系統設定
    例如: Excel中的縮放,巨集執行狀態。或是VSCode中的程式語言版本等等。

下方狀態

  • 右方導覽:主視窗的小部件細項控制
    例如: PowerPoint中的圖片選項,Excel中的座標軸控制選項等。

右方導覽

為什麼從excel開始講,excel有什麼好講?

我覺得在企業內推動數位轉型的時候,最大的阻力是資料來源,有各式各樣的資料來源需要標準化,
簡單來說,電腦要讀取的資料,和人類讀取的資料角度,是有很大的不同。
假如一開始就轉換成電腦讀的資料,意思是標準化、正規化的資料,很多問題就會迎刃而解。
如果想要讓一般同仁具有此概念的話,使用excel了解資料的本質是很重要的,
Excel的本質,就是一個易於操作的資料表,而不瞭解資料表的基礎概念的話,同仁常常拿一份巢狀的報表,或者是結構異常複雜的報表,想要轉換成Power BI或使用Python進行分析,那是十分困難。
我們在使用公司資料的時候,從資料庫取出的資料,通常呈現的會是標準化過的資料,而我們進行的加工與合併,就是反正規化的結果,但無論如何這些資料都會保持column & row的關係,像excel 最原始的結構一樣,不會有像財務報表一般的合併儲存格、在儲存格中同時填入單位與數字的狀況。

人類眼睛看的報表
電腦讀取的報表

因此,當我們需要分析資料的時候,首先最基礎的就是把資料的人類閱讀方便部分消除,包含顏色,合併儲存格等,再進行整理。 那這樣的基本步驟,最方便的就是使用excel 轉換,所以,熟練地使用excel公式處理資料是相當重要的。

在資料庫領域,正規化與反正規化是兩個有著不同概念的資料設計過程,用於優化資料庫的結構和效能。以下是這兩者的詳細解釋:


資料庫中的正規化、標準化(Normalization)

定義:資料庫中的標準化(Normalization)是一種設計概念,旨在將資料分成不同的表格以避免冗餘(重複)並確保資料的完整性。透過將數據拆分為小而專門的表格來減少數據的不一致性,並使用外鍵(Foreign Keys)在表格間建立關聯。

目標

  • 減少資料冗餘,優化資料儲存效能。

  • 確保資料一致性,避免重複或異常資料。

  • 補充 - 常見的標準化形式

    現在大部分資料庫遵守到第三正規形,因為過於標準化會造成效能負擔,當然有更多正規的形式,有興趣的朋友可以自行上網查詢補充資料。

    • 第一正規形(1NF):每個表格中的欄位必須只包含單一值,即「原子性」。
    • 第二正規形(2NF):符合1NF,並且所有非主鍵欄位必須完全依賴於主鍵。
    • 第三正規形(3NF):符合2NF,並且所有非主鍵欄位必須只依賴於主鍵,而不依賴於其他非主鍵欄位。
    • BCNF(Boyce-Codd Normal Form):比3NF更嚴格,用於解決某些特例。

比如說,假設我們有一個包含學生資料的表格,包括學生姓名、課程名稱和老師名字。通過標準化,我們可以將此表格分解為三個表:學生表課程表老師表,並使用關聯來連接它們。這樣可以避免老師或課程名稱重複出現在多行中。

雖然資料標準化具有對數據關係更好的約束性,但也可能導致數據關係表增加而令資料庫IO更易繁忙。


資料庫中的反正規化(Denormalization)

定義:資料庫中的反正規化(Denormalization)是標準化、正規化的相反過程。它將已標準化的表格進行合併,以便在查詢時減少表格之間的連結,從而提高讀取效能。正規化通常會帶來一定程度的資料冗餘,但可以加快查詢速度。

目標

  • 提高查詢效率,減少複雜查詢的執行時間。
  • 簡化某些高頻率查詢,以提升應用程式效能。

應用場景

  • 當查詢頻繁且涉及多表連結時,正規化有助於提高查詢速度。
  • 在資料倉儲中,通常更傾向於正規化,以快速查詢資料。

例子:以一個包含訂單資訊的資料庫為例,若頻繁查詢顧客名稱和地址,可以將顧客資訊合併到訂單表中,儘管這會導致某些顧客信息重複儲存,但可提高查詢效能。


總結

  • 標準化:是一種將資料分解為多個表以消除冗餘、提升一致性的過程。適合於強調資料完整性和一致性的情境。
  • 反正規化:是一種將已標準化的資料表進行合併、引入冗餘的過程,以提升查詢效率。適合於查詢頻繁且需要快速讀取的情境。

在資料的儲存時,選擇標準化或反正規化,取決於應用需求,例如資料的一致性需求和查詢效能等。

必須學會的公式

Excel內含了基礎的資料處理邏輯,我們可以從這邊開始學習,例如

  • and, or
  • sum, average, count, counta: 計算非空格資料
  • if, countif, sumif
  • vlookup
  • concat/ concatenate 連接
  • 快速比較: 儲存格A = B,會直接回傳True/False

Excel巨集撰寫與使用

由於Excel巨集是一個很大的議題,因此只列出一些我遇到的觀念問題

  • 程式碼放sheet和放module的不同?
    • sheet 只作用在那一個sheet
    • ThisWorkbook: 作用在目前的worksheet
    • module: 可以給不同的sheet使用的功能
  • Option Explicit: 強制每個變數都需要宣告型態的設定