Proficient programming language:

  • Google sheet

善用工具的心法很簡單:

我相信有這個功能

不過還是需要拆解一下:需求 -> 功能分解 -> 合併

需求

以這次功能為例,我想要針對所有同學進行分組,但是不需要隨機,只要按照順序分 A, B, C 就好。

功能分解、逐漸合併

三個一個循環很容易想到取餘數 (modulo)1。接著到 Google sheet function list 2 搜尋看看有沒有:

搜尋結果

搜尋結果

OuO

我們大概可以知道 MOD(x, y) 得到的是 x/y 的餘數,因此 x 是對應到列數,而 y 是分組的數量。

再來比較抽象。我們有了餘數功能,要怎麼對應到每一列 (row)? 所以就找到 ROW() 可以取得目前的列數,這樣我們就得到 x 了。

每個人的列數

每個人的列數

OuO

y3 代入

2,0,1 重複出現

2,0,1 重複出現

OuO

如果分組編號就是 0,1,2 的話就可以在這邊停止,不過如果要重新取代號 (A,B,C) 或是分配不同內容給各個組別時就需要繼續下去。

再來的思考方向,就是用剛剛的 0,1,2 當作索引值 (index),查看看如何用索引值取得其他格子的內容。我們選擇使用 INDEX(),其使用方法就是先選擇一個區塊 reference 接著用 row, column 去選擇。

選一個功能最不複雜的

選一個功能最不複雜的

OuO

套用進去會長這樣,INDEX(\$E\$1:\$E\$3, MOD(ROW(), 3)) (\$ 是鎖定用,不會因為下拉導致列或欄改變,因為 E1:E3 是固定放我們的代號)。

目前的成果

目前的成果

OuO

會發生上面的錯誤是因為 INDEX 使用的列起始是從 1 開始,所以我們來加 1

完成

完成

OuO

如果想要 A 開始的會只要將右邊 E 欄換個順序即可。

換順序

換順序

OuO