mosty は、次のような構造の Excel ファイル(.xlsx、.xlsm)を想定しています。
📄 シートの構造#
- 1 つのファイルに、複数のシートがある。
- 各シートは 1 行が 1 人の学生 を表す表になっている。
- 各行の先頭の数列(既定では A〜C 列)に、学生証番号 と 氏名 がある。
- どちらが左でも構いません。
- 表の上に、タイトルや見出しの行があっても構いません。
- 表の途中に、空行、小見出しの行、集計の行があっても構いません。学生証番号のない行は、学生の行として扱いません。
- 表が A1 から始まっていなくても構いません。
例:
| A | B | C | D | E | |
|---|---|---|---|---|---|
| 1 | 課題の成績 | ||||
| 2 | |||||
| 3 | 学生証番号 | 氏名 | 課題1 | 課題2 | 合計 |
| 4 | 1234001 | 京都 太郎 | 8 | 9 | =SUM(C4:D4) |
| 5 | 1234002 | 京産 花子 | 10 | 8 | =SUM(C5:D5) |
配点表やメモのように、学生の行を持たないシートがあっても構いません。そのようなシートは検証の対象外になります。
🔗 シートをまたいだ参照#
最終成績などのシートが、ほかのシートのセルを数式で参照していることを想定しています。
| A | B | C | D | |
|---|---|---|---|---|
| 1 | 学生証番号 | 氏名 | 課題 | 試験 |
| 2 | =名簿!A2 | =名簿!B2 | =課題!E4*配点!$B$2/20 | =試験!C2*配点!$B$3/100 |
mosty は、参照元の行(最終成績の 2 行目)と、参照先の行(課題の 4 行目)の学生証番号を比べます。
🔢 学生証番号の書き方#
学生証番号は、既定では 7 桁の数字 とします。次の書き方はどれも同じ学生として扱います。
- 数値のセル(
1234001) - 文字列のセル(
"1234001") - 前後に空白(全角空白を含む)がある文字列のセル(
" 1234001 ")
先頭に英字が付いた学生証番号("g1234001" など)を使っている場合は、--id-pattern で正規表現を指定してください。
mosty init --id-pattern '^[A-Za-z]*(?<id>[0-9]{7})$' grades.xlsx- 正規表現は、常にセル全体と比べます(
^と$を省略しても同じです)。 - 名前付きグループ
idを書くと、その部分だけで学生を比べます。上の例では、1234001と"g1234001"を同じ学生として扱います。 - 正規表現の書き方は、Rust の regex に従います。
🧮 学生証番号が数式の場合#
学生証番号のセルが、名簿のシートを参照する数式(=名簿!A2 など)でも構いません。
mosty は、Excel が保存した計算結果を学生証番号として使います。
Excel 以外のツールで作ったファイルなど、計算結果が保存されていない場合は、単純な参照(=名簿!A2 の形)であれば参照先をたどって学生証番号を求めます(最大 10 段)。
それ以外の数式で計算結果がない場合は警告が出るので、Excel で開いて保存し直してください。