• 締切済み

【ExcelVBAまたはExcel関数】成績管理

※Excel2010を使用しております。 約100名の成績一覧に入力した成績を、個人の成績表(学生ごとにシートがあります)に 反映させるようにしたいのですが、どのようにすればよいか分かりません。 Sheet1に、成績一覧があります(画像sheet1) なお、9001、9002、9003・・・は学籍番号で、3001、3002・・・は科目コードです。 生徒はすべての科目を履修しているのではなく、履修していない科目については、 空欄になっています。 sheet2以降に各生徒の成績表があります。(画像sheet2、sheet3・・・)成績表には、履修していない科目は表示 されていません。 ここで、成績一覧に入力されている成績を、個人の学籍一覧に反映させるように したいのですが、どのようにするのが最も効率的でしょうか。 VLOOk関数でできるかと考えましたが、できませんでした。

みんなの回答

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.1

シート1はお示しのような表としてシート2からシート100まではShiftキーを押しながらシート見出しをクリックすることで同じ作業グループとします。 シート2がアクティブシートの状態になっていますので例えばA1セルには学籍番号の文字を入力し、A2セルには学籍番号を入力することにします。B2セルには氏名を入力します。 A3セルから右横方向には科目コードを、A4セルから右横方向には科目名を入力するとします。 そこでA5セルから右横方向にはシート1からの成績を表示させることにすればA5セルには次の式を入力して右横方向にドラッグコピーします。 =IF(A$3="","",IF(VLOOKUP($A$2,Sheet1!$B:$XX,MATCH(A$3,Sheet1!$B$2:$XX$2,0),FALSE)="","",VLOOKUP($A$2,Sheet1!$B:$XX,MATCH(A$3,Sheet1!$B$2:$XX$2,0),FALSE)))