• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル関数を使い、2つの条件にあった値(文字)を2つの条件にあったセルに返す。)

エクセル関数を使い、2つの条件にあった値(文字)を2つの条件にあったセルに返す

このQ&Aのポイント
  • エクセル関数を使用して、2つの条件に一致する値をセルに返す方法について質問します。
  • 具体的には、{シート1}の特定の生徒の特定の科目のセルに、{シート2}で指定された条件に一致する評価を表示したいと考えています。
  • 以前教えていただいた数式を使用して、数値を返すことはできましたが、文字を返す場合にエラーが発生しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

例データ Sheet1 A1:C10 生徒ID 教科 評価 A001 算数 C A001 国語 B A001 社会 A A002 算数 B A002 国語 A A002 社会 C A003 算数 B A004 国語 D A005 社会 D Sheet1に(下記A、B、C、Dは式の結果答えも出た様子) 生徒ID 算数 国語 社会 作業列 A001 C B A 0 A002 B A C 3 A003 B D D 6 式を簡単にするため、作業列はどこか秋列に作る(ここではF列とする) 式は=MATCH(A2,Sheet2!$A$2:$A$100,0)-1 意味は生徒IDの初出(開始)行のB1からの隔たり行数を出している。 ーー B2に =OFFSET(Sheet2!$A$2,$F2+MATCH(B$1,OFFSET(Sheet2!$B$2,$F2,0,100,1),0)-1,2) B2no式をB列下方向に生徒数分、b2:B4の式を右方向に科目数分 式を複写する(+ハンドルを引っ張る等) 結果 上記の通り。 作業列はF列の式をB2の式にネストして、、組み込めば不要となるのは ご存知でしょうが、理解のため、そのままにします。 ーー やっているのはMATCH関数で生徒IDや科目命をみつけている。 ただし(B2以下でなく)その生徒IDの開始行以下で科目名を探さないといけないので、その分修正しているので複雑化している。

chikamori
質問者

お礼

ご回答が遅くなりました。 ご提示頂きました計算式で試してみましたら、目的の形になりました。 すばやい対応を頂きありがとうございました。 また、どうぞ宜しくお願い致します。

その他の回答 (2)

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.2

シート2 のデータが規則性を持って並んでいるのであればセルの位置を計算で指定できますから INDIRECT関数で 示すことができると思います。 シート1のB2セルにはA001の数学の評価が入るのであれば、  =INDIRECT("シート2!C2") で示すことができます。 括弧の中は他の関数に置き換えることで規則性を持たせることができます。 教科の数が3つなら  B2 =INDIRECT(ADDRESS((ROW(B2)-2)*3+(ROW(B2),3,,,"シート2"))  C2 =INDIRECT(ADDRESS((ROW(C2)-2)*3+(ROW(C2),3,,,"シート2"))  D2 =INDIRECT(ADDRESS((ROW(D2)-2)*3+(ROW(D2),3,,,"シート2")) 教科の数が5つなら  B2 =INDIRECT(ADDRESS((ROW(B2)-2)*5+(ROW(B2),3,,,"シート2"))  C2 =INDIRECT(ADDRESS((ROW(C2)-2)*5+(ROW(C2),3,,,"シート2"))  D2 =INDIRECT(ADDRESS((ROW(D2)-2)*5+(ROW(D2),3,,,"シート2"))  E2 =INDIRECT(ADDRESS((ROW(E2)-2)*5+(ROW(E2),3,,,"シート2"))  F2 =INDIRECT(ADDRESS((ROW(F2)-2)*5+(ROW(F2),3,,,"シート2")) など(ADDRESS、ROW以外の関数を使用しても可能です) A002以下の行は、A001の数式をフィルでコピーするだけです。 規則性がない状態で入力されているとは考えにくいので、この方法で十分な気がするのですが如何でしょう。 ※使用している関数の詳細はExcelのヘルプを参照してください。

chikamori
質問者

お礼

お返事が遅くなりました。 ご提示いただきました関数を試してみたいと思います。 ありがとうございました。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

シート1のB2に以下の式を入れます =OFFSET(シート2!$C$1,SUMPRODUCT((シート2!$A$2:$A$700=$A2)*(シート2!$B$2:$B$700=B$1)*ROW(シート2!$A$2:$A$700))-1,0) このセルを右方向、下方向にコピー シート2に該当するデータが無い場合は、#REF!エラーになりますが、エラーになる方が点検はしやすいと思います。 なおシート2のデータは700行まであるものとして式を書いていますので、それ以上なら変更して下さい

chikamori
質問者

お礼

お返事が遅くなりました。 教えていただきありがとうございました。 今後ともどうぞ宜しくお願い致します。

関連するQ&A