学生の成績表を作成している者です。皆様のお知恵を拝借したく、質問させていただきました。
エクセルで学生の学籍番号を入力(A5セル)し、別シート(成績項目CSV)のデータをvlookupで引っ張って来たいと考えています。
学生によって試験の受験回数が異なるので、Ⅷ期を受けた学生はⅧ期の、受けていない学生はⅦ期の…と言うように、最後に受験した試験のデータを引用したいです。
ただし、「A5セルと同キーの最終行の該当セル」にはまた違うデータが入力されているため、XLOOKUPの「検索方法-1」は使えませんでした。
下記の長い関数で動いてはいるのですが、いつ何があって動かなくなるか恐ろしいので、もっとシンプルで分かり易い方法がありましたら是非ご教示ください。
どうぞ宜しくお願い申し上げます。
=IF(VLOOKUP(A5&"Ⅷ期",成績項目CSV!C:Q,15,0)<>"",(VLOOKUP(A5&"Ⅷ期",成績項目CSV!C:Q,15,0)),IF(VLOOKUP(A5&"Ⅶ期",成績項目CSV!C:Q,15,0)<>"",(VLOOKUP(A5&"Ⅶ期",成績項目CSV!C:Q,15,0)),IF(VLOOKUP(A5&"Ⅵ期",成績項目CSV!C:Q,15,0)<>"",(VLOOKUP(A5&"Ⅵ期",成績項目CSV!C:Q,15,0)),IF(VLOOKUP(A5&"Ⅴ期",成績項目CSV!C:Q,15,0)<>"",(VLOOKUP(A5&"Ⅴ期",成績項目CSV!C:Q,15,0)),IF(VLOOKUP(A5&"Ⅳ期",成績項目CSV!C:Q,15,0)<>"",(VLOOKUP(A5&"Ⅳ期",成績項目CSV!C:Q,15,0)),IF(VLOOKUP(A5&"Ⅲ期",成績項目CSV!C:Q,15,0)<>"",(VLOOKUP(A5&"Ⅲ期",成績項目CSV!C:Q,15,0)),IF(VLOOKUP(A5&"Ⅱ期",成績項目CSV!C:Q,15,0)<>"",(VLOOKUP(A5&"Ⅱ期",成績項目CSV!C:Q,15,0)),(VLOOKUP(A5&"Ⅰ期",成績項目CSV!C:Q,15,0)))))))))
参照元シートのイメージは以下の通りです
学籍番号 受験期 ~~~ (15列目)
001 Ⅰ期 不用データ
001 Ⅱ期 不要データ
001 Ⅲ期 該当データ
001 Ⅳ期 空欄
(略)
001 Ⅷ期 空欄
001 総括 不要データ (←これがあるためにXLOOKUPが使えません…)
002 Ⅰ期 不用データ
002 Ⅱ期 不要データ
002 Ⅲ期 不要データ
002 Ⅳ期 該当データ
No.18
- 回答日時:
蛇足の愚問ですが、
学生は、必ずⅠ期,Ⅱ期,Ⅲ期,Ⅳ期,Ⅴ期,・・・と連続で受験するものですか?
途中で何らかの理由で受けない?期があることはないですか?
例えば、Ⅰ期,Ⅱ期,Ⅳ期,Ⅴ期,・・・ と(Ⅲ期を受験しない)などのようなことはないのですか?
すでに回答が出ているようで、不要な質問ですが、まだ締め切っておられないので。
返信が遅くなり申し訳ありません。
はい、学生は必ずⅠ期、Ⅱ期、と順番に連続で受験します。
ただ、受験開始時期が異なるために、最終受験期がばらばらになってしまいます。
今回のエクセルファイルでは、最新のデータをもとに配布資料を作りたいので、この問題を解決したく質問させていただきました。
もっと良い方法がございましたら、是非ご教示ください。宜しくお願い致します。
No.17
- 回答日時:
[No.12お礼]へのコメント、
》 結合セルだと配列数式が動かないから、でしょうか…?
當りです。(パチパチ…)
》…上手く動きませんでした。
其れ丈ぢャ分かンな~い、具体的に述べなきャあ~
》 これを別シートに引用する方法が分かりません…
其れ丈ぢャ分かンな~い、具体的に述べなきャあ~
「別シートに」何を何の爲にどの樣に「引用する」の?
何れにせよ、既に「目から鱗」の囘答が得られた樣で、もう結構、私は退散します。サヨナラ。
No.16
- 回答日時:
うまくいったみたいでよかったです。
自分のテストの時に総括が集計するようになってなかったかも…と思って別案も出しましたが、お好きな方で作ってみてください。
いくつかの方法をご提示くださりありがとうございました。
二つ目のOFFSETの方は自分が理解できていないせいか、上手く動かすことができず……、
職場のみなさんもExcelがあまり得意でないので、自分で説明できる「最終」を入れる方を
現在は使わせていただいております。
勉強のためにもうしばらく回答は締め切らずに置こうと思います。
大変お世話になりました。ありがとうございました!
No.15
- 回答日時:
そうか、総括にも点数が入ってたんでしたね。
G1=OFFSET(INDIRECT("A"&MATCH($C$1,$A$1:$A$21,0)),COUNTIFS($A$4:$A$21,C1,$D$4:$D$21,"<>")-2,8,,)
とかもいけるかな。
興味なかったらスルーかな。
No.14
- 回答日時:
横からごめんなさい。
最初の質問文に、
>最終行の該当セル」にはまた違うデータが入力されているため、XLOOKUPの「検索方法-1」は使えませんでした。
つまり、添付図の「202001 総括 [点数省略] いっしょうけんめいです。」というコメント欄にデータがあるので、XLOOKUPは使えない。
ということでしたよね。
では、総括の欄のコメントを削除すれば、XLOOKUPは使えるのですよね。
簡単なこと、総括のコメントを削除すればいい。
みなさんの回答や補足コメントを拝読すると、総括のコメント欄は空白です。・・・なんか訳が分からなくなりました。
総括のコメント欄が空白ないので、質問がでてきているのに、
総括のコメント欄が空白で可なら、質問の意味がないじゃないですか。
分かりにくい図にしてしまってすみません。「総括」のところですが、コメントが入っています。
このファイルはエクセルが苦手な先生も使うので、基本的に元データをコピペして、あとは学籍番号を入力するだけで
欲しい状態の資料がプリントアウトできるようにしたいのです…。
なので「総括」のコメントを全部消す、と言う作業は難しいです。
No.12
- 回答日時:
此の機会に(ドンナ機会やねん?)、添附圖を一新しました。
H2: =INDEX(コメント,MAX(IF((学籍番号=H1)*(コメント<>""),ROW(コメント)))-3)
【御斷はり】上式は必ず配列數式として入力の事
【三流大學超難問クイズ】
此の「配列數式」こそ、レイアウト變更の理由でした。何故か考へてみて下さい。(貴方も試行錯誤してみたらァ~?)
結合セルだと配列数式が動かないから、でしょうか…?
御教示の通りにやってみたのですが、上手く動きませんでした。
また、これを別シートに引用する方法が分かりません…すみません…。
No.11ベストアンサー
- 回答日時:
ちょっとベタな感じですが、今C列に入れているデータを結合したものは削除して代わりに以下の式を入れます。
C4=IF(AND(B4<>"総括",A4=A5,D4<>"",OR(D5="",B5="総括")),"最終","")
すると、点数の入っている最新の期のところに「最終」と入ります。総括のところには入りません。
学籍番号と「最終」をキーにしてその行のコメントを反映してくるのではどうでしょうか。
条件式、もっとスマートなものを他の方が出してくれるといいのですが。
この方法で出来そうです!!ありがとうございます!
「D列に何もない所があったら、その一つ上のC列のセルに「最終」と入力してね」と言うことですね…?
全く思いつかなかった方法です。目から鱗でした。
これなら別シートからの引用方法もわかります。ありがとうございます。
もしかしたら他にもいい方法をお持ちの方がいらっしゃって、
そしてそれが、私ではない誰かのお役に立つこともあるかもしれませんので、
もうしばらく回答募集を続けてみようと思います。
No.10
- 回答日時:
[No.8お礼]へのコメント、
私は寿限無如きのダラダラ(詳細とも云ふ)説明が嫌いなので、Alt+AVV、Alt+MC等のショートカットを多用します。
》 作業手順2を実施しようとすると、
》 「現在の’B'の設定と置き換えま
》 すか?」というメッセージが…
ですッて?何の事やらサッパリポンです。
私は手元に在る Excel 2019 に基いてコメントしてますが、貴方の Excel のバージョンは何?
イヤだけど「作業手順2」をダラダラと書くと下記の樣に成ります。
2.範圍 A3:I500 を選擇⇒Alt+MC⇒“上端行”だけにチエック入れ⇒[OK]
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
2.範圍 A3:I500 を選擇⇒[数式]⇒[定義された名前 <選択範囲から作成>]
 ̄ ̄⇒"上端行"だけにチェック入れ⇒[OK]
ネ、1.5倍くらい長~い説明に成るでしョ?
私ィ~、「'B'の設定」なんて知りません。そこで…
[数式]⇒[定義された名前 <名前の管理>]でShiftキーを抑えた儘でイッチャン上の名前とイッチャン下の名前をツンツンして全名前を選擇⇒[削除]⇒[OK]⇒[閉じる]
を實行して、最初からやり直してみたら如何かと。
Alt+MCの手順のエラーは解決しました!有難うございました。
しかし、最終目標にまだ到達できておりません。
またお知恵を拝借できればと存じます。補足をご覧いただけますと幸いです。
宜しくお願い致します。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 表示形式、文字列セル(列)に数式を入力するには マクロ 1 2022/09/18 10:53
- Excel(エクセル) Formulaプロパティーを使ってセルに数式を組んだのですが簡潔にしたい。 3 2022/08/21 20:51
- Excel(エクセル) マクロを簡潔にしたい 6 2022/09/16 10:37
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- その他(プログラミング・Web制作) Windowsのバッチファイルについてご教示ください 5 2023/07/25 20:23
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) エクセルの関数 2 2023/01/17 15:24
- Ruby pandasでsqlite3にテーブル作成・追加・読み出しでindexの取り扱い方教えてください 5 2023/03/08 09:57
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- その他(Microsoft Office) VBA CSV出力について 3 2023/04/19 14:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
はがきについて。
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
【関数】先頭だけにある、半角...
-
Excel ピボットテーブルで日付...
-
Excelのpivotについて質問です
-
時間によってファイル名が変わ...
-
エクセル 白黒印刷で白線を印刷...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
WPS OFFICEでの縦書きについて
-
Excelのチェックボックスの使い...
-
エクセルの条件付き書式につい...
-
エクセルのセルに同じ大きさの...
-
エクセルの関数について教えて...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報
》「同キー」
A5セルと同じ内容が入っている別シートのA列のセルが複数あります、と言う意味です。
(例えば学籍番号001が全部で9行あります)
》XLOOKUPの「検索方法-1」
XLOOKUPの検索方法で「下から検索」と言うものがあり、それを使うと一番下のセルを引用できるのですが、一番下のセルのデータではなく、その次に新しいデータを引用したいのです。
情報不足で申し訳ありません。
Excel2016を使用しております。
画像が添付できることに気付いておりませんでした。
分かりにくい説明で申し訳ありません。
改めて状況をお伝えいたします。
画像のA列の学籍番号を利用して、I列のコメントを引っ張って来たいです。
(C1に「202001」だけを入力し、G1に「すばらしい!」を表示したい。実際は別シート)
なぜC1に「202001Ⅳ期」と入力できないかと言うと、学生によって最終受験期がバラバラなので、
どの学生に何期と入力すればいいか分からないからです。
そのため、「202001」と入力し、A列に「202001」と入力されているもの(図の4~12行)の中から、一番下から2つ目のコメント(I7)を返したいと考えました。
一番下には「総括」行があるため、「一番下のデータを返す(xlookupの逆から検索)」は使えませんでした。
(補足続きます)
質問本文の寿限無式は、
「202001Ⅷ期で検索して、あればその行のI列のデータを返してね、
なかったら202001Ⅶ期で検索して、あればその行のI列のデータを…
…(中略)…202001Ⅰ期で検索して、その行のI列のデータを返してね」
と、IF検索をひたすら繰り返しているものです。
とてもじゃないけれど良い状態とは言えません。力技です……。
しかし自分にはお恥ずかしながらこれしか思いつかなかったのです…。
そこで皆様のお知恵を拝借したいと質問させていただきました。
エクセルのバージョンは2016です。
どうぞ宜しくお願い申し上げます。
》mike_g様
詳細かつ分かり易い説明をありがとうございます。
仮名遣いが独特でいらっしゃるので、明治時代から
タイムスリップしてきた方にパソコンのことを習っているようで、
なんだか楽しいです。勝手に明治先生とお呼びしています。
仰る通りに「ツンツンして全名前を選択⇒[削除]⇒[OK]⇒[閉じる]」をしましたら、
先の手順が実行できました!
教えていただいた数式もちゃんと動きました。
ただ、私の説明不足で、やりたいことをきちんとお伝えできていなかったようで…
次の画像の場合、「2020001」の学生はI7の「チョベリグ!」を、
「202002」の学生の場合はI14の「ようやった」を表示させたいのです。
学生によって最終受験期が違うので、それぞれの最新コメントを拾って来たい、
という訳です。
またご教示いただけますでしょうか。
Excelのバージョンは2016です。