すでに解決済みになってしまいましたが、せっかく書いたので投稿します。
セルの関数ではできそうになかったので、Apps Script で書いてみました。
https://docs.google.com/spreadsheets/d/1OTy97IZzWkWBkBP65cMPKX0FZj71_1ktniA0js14n1w/edit#gid=0
スプレッドシートをコピーしてから実行してみてください。
[ツール]>[マクロ]>[mergeData]で実行できます。
初回のみ認証を聞いてきます。
[merged]という名前のシートに結果を書き込みます。
この名前を持つ既存のシートは削除されますので注意してください。
このスクリプトをご自分のスプレッドシートに組み込みたい場合、ご自分のシートで[ツール]>[スクリプトエディタ]を開き、デフォルトで入っているコードを全部消して、スクリプト全体を貼り付けて Ctrl+S で保存します。
新しいプロジェクト名を聞いてくるのでそのままで[OK]。
その後実行ボタン(右三角)を押して実行します。
データのシート側から実行する場合、[ツール]>[マクロ]>[import]で[関数を追加]します。
その後は[ツール]>[マクロ]配下に[mergeData]という関数名が見えるようになります。
Google
1/**
2 * 最初のシート:ID一覧(id_list)
3 * その他のシート:クラス詳細データ
4 */
5function mergeData() {
6 var ss = SpreadsheetApp.getActiveSpreadsheet();
7 var merged =ss.getSheetByName("Merged"); // 結果出力用シート
8 if (merged) {
9 ss.deleteSheet(merged);
10 }
11 var sheets = ss.getSheets();
12 var id_list = sheets[0]; // ID一覧があるシート
13 // ID一覧取得
14 var numIds = id_list.getLastRow() - 1; // タイトル行は除く
15 var ids = id_list.getSheetValues(2, 1, numIds, 1); // 全ID数
16 Logger.log("numIds = " + numIds);
17 Logger.log("ids = " + ids);
18 var addrs = [];
19 var scores = [];
20 for (var i = 0; i < numIds; i++) {
21 addrs[i] = "";
22 scores[i] = "";
23 }
24 // 各シートのスキャン
25 var numClasses = sheets.length - 1; // クラス数
26 Logger.log("numClasses = " + numClasses);
27 for (var i = 0; i < numClasses; i++) {
28 var curr = sheets[i + 1];
29 var numStudents = curr.getLastRow() - 1; // このクラスの生徒数
30 Logger.log("numStudents = " + numStudents);
31 // ID, 住所, 成績を2次元配列で取得
32 var data = curr.getSheetValues(2, 1, numStudents, 3);
33 Logger.log("data =" + data);
34 for (var j = 0; j < numStudents; j++) {
35 for (var k = 0; k < numIds; k++) {
36 if (ids[k] == data[j][0]) {
37 addrs[k] = data[j][1];
38 scores[k] = data[j][2];
39 break;
40 }
41 }
42 }
43 }
44 Logger.log("addrs = " + addrs);
45
46 // 結果の書き出し
47// var ui = SpreadsheetApp.getUi();
48// ui.alert("Writing results");
49 var sheet = ss.insertSheet('Merged');
50 sheet.getRange("A1:C1").setValues([["ID", "Addr", "Score"]]);
51 sheet.getRange(2, 1, numIds, 1).setValues(ids);
52 for (var i = 0; i < numIds; i++) {
53 sheet.getRange(2 + i, 2, 1, 1).setValue(addrs[i]);
54 sheet.getRange(2 + i, 3, 1, 1).setValue(scores[i]);
55 }
56
57} // mergeData()
58
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。