本文將講述Excel的一些基礎用法,函數相關部分,以及如何設計表格的數據字段。
EXCEL用法相關
Microsoft Excel是當下最流行的個人數據處理軟件,這裏自然不太想展開說Excel是如何流行起來的,只是說在數據處理上,Excel足夠強大而且足夠友好。
並不是每個人都有編程基礎,能接受諸如json
、xml
、binary
的數據組織格式——而且在可讀性,修改性等等方便,也不見得這些會比Excel方便到哪裏去。
當然這也不是說Excel就是萬能的——世界上真的存在萬能的解決方案嗎?一切都是取決於需求和當前環境,是在各方因素的糾纏下的一種取舍、讓步和折中。
但是這並不影響些什麽,Excel還是很強大,並且可以做很多事情。
增补:一些常用需求
- 去重:在“数据”选项卡上,单击“删除重复项”。
- 填0补位:
=TEXT(A1,REPT("0",n))
- 次方A1**B1:
POWER(A1,B1)
- 先乘再求和:
SUMPRODUCT()
- 转换进制:
BASE(F5,2)
- 取字符串:
RIGHT()
,LEFT()
,MID()
- 仅粘贴值!可以将其添加到快捷操作栏
繪制圖表
我們可以轻松制作出的表格。
眾所周知,Excel的圖表功能很強大,簡單來說繪制一個圖表我們需要:
- 選擇數據源
- 繪制圖表(明確圖表類型)
- 修改圖表細節
- 描述文字,UI元素。
- 風格,顏色,元素位置。
我們可以按住CTRL
拖動選擇數據源(要修改也可以右鍵選擇數據源,然後拖動選擇),然後鍵入CTRL
+F1
快速新建表格。
然後我們需要根據我們的目標選擇合適的圖表類型,比如廣泛使用的條形圖、折線圖等等,在設計面板的類型選項下面可以找到更改圖表類型。
同樣的,我們在設計面板上可以找到圖表樣式、快速布局等等選項,單擊表格可以找到添加元素、樣式、篩選選項,右鍵表格也可以找到若按選項,雙擊則可以彈出選項設置框,總之需要調啥就找到設置然後調就是了。
對於未處理的原始數據,我們可以使用數據透視圖,可以選擇原有數據進行求合匯總;對於多列元素,除了並列顯示,我們也可以采用組合的形式展現,比如組合折線圖和條形圖。
公式基礎
一些簡單基本的函數。
公式當然也是使用Excel避不開的一部分,內置的為各種場景定制的函數,極其詳實,讓人看到就心生退意,這裏挑一些簡單的說一下。
我們自然註意到Excel是有一個行和列的,列的字母表示+行的行數就組成了單元格的id,然後就可以用到函數裏面,比如A1
,A2
,B1
這樣,然後指定範圍可以A1:A10
,A1:B10
這樣。跨視圖、表格的話大概這麽寫'./[filename.xlsx]viewname'!A1
。
基本的單元格是可以簡單的加減乘除冪運算(^)的,對於結果有一定格式化的手段,比如用A1&','&B1
,或者是A1&TEXT(B1, "YYYY年M月D日")
這樣的。
特別值得一提的是VLOOKUP
函數,幾個參數的含義如下。
表格设计
接下來將講述關係型數據庫中字段的設計,然後給出一個實際工作中的例子並進一步熟悉Excel的使用。
关系数据库字段设计
先從範式開始講起吧,範式這個詞是指符合某種關係模式,然後有這麽幾種範式
名字 | 要求 |
---|---|
1NF | 每個屬性都是不可再分的 |
2NF | 消除非主屬性對碼的部分函數依賴 |
3NF | 消除非主屬性對碼的傳遞函數依賴 |
BCNF | 消除主屬性對碼的部分和傳遞函數依賴 |
稍微解釋一下這幾個名詞,首先是:
- 碼:除了碼以外的所有屬性都完全函數依賴與的一個或一組屬性。
- 非主屬性:不在任何一個碼中的屬性。
- 主屬性:存在于任何一個碼中的屬性。
然後是:
- 函數依賴:
y=f(x)
,唯一x確定y。 - 完全函數依賴:對於x的真子集不成立。
- 部分函數依賴:不是完全的函數依賴
示例
這裏給出一個關於關卡與玩家的對於表格的例子,具體字段暫且不解釋其含義(似乎不解釋含義也很難理解究竟是在幹啥OTZ)
我們先考慮拆分一個id的各個字段對應的屬性:
然後將各個字段對應的子表格拆開:
這是數據池表格,具體的value會再根據屬性表去更新。
分別是屬性對應表、職業枚舉名稱對應表、組隊方式對應表、地圖難度對應表
我是比較習慣使用名稱管理器,方面在子表中間查找。
然後在子表1裏面我們就可以這樣根據id的子段去lookup
=INDEX(
DB_Table[name],
MATCH(RIGHT(A2,4),
DB_Table[total_id],
0)
, 1)
在子表2裏面我們可以根據pair和name_id生產對於的id字段
=100&
TEXT(VLOOKUP(H2,
Dungeon_Difficult_Table,
2), "00")&
INDEX(Role_Table[key],
MATCH(VLOOKUP(H2,
Pair_Table,
COLUMN()),
Role_Table[enum],
0))&
TEXT(I2, "00")
簡單來看就是各種來回查找,其實邏輯並不算複雜。