• 締切済み

Excel INDEX関数ズレて抽出される

INDEX関数で行列番号取得にMATCH関数を使用したときにズレてしまう。 定例のミーティングの参加表を作成しようとしています。 シートの構成は添付画像の通りです。 Sheet1 定例のミーティングの参加表 巡回Aは月ごとに担当者が変わる。 Sheet2 巡回Aの月別の担当表 巡回Aの担当表を用意して、COUNTIF関数で参加表の氏名が巡回Aのリストに含まれていない場合(カウント0)は空欄にし、0以外の場合、INDEX関数で列番号のところにMATCH関数をネスト、MONTH(TODAY())+1とし、ex. 8月なら翌月の9月に該当する列番号を抽出して巡回Aの出席を月が変わると連動するようにしたいです。 =IF(COUNTIF($B$22:$B$29,$B3)=1,IF(INDEX($C$22:$N$29,MATCH($B3,$B$22:$B$29,0),MATCH(MONTH(TODAY())+1,$C$20:$N$20,0))=0,"",INDEX($C$22:$N$29,MATCH($B3,$B$22:$B$29,0),MATCH(MONTH(TODAY())+1,$C$20:$N$20,0))),"") 職場のExcel2016では列がズレてしまい、抽出ができないです。 Excel365では問題なく抽出ができました。 2016でズレるのは何故でしょうか。 詳しい方居ましたらご教授下さい。 よろしくお願い致します。

みんなの回答

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.3

こちらでは正しく動いています。確認して下さい。 https://1drv.ms/x/s!AnfEM367OeSdkFBNg6n1Jm7B3h9n?e=OrPvUc 見ても解らない場合、 データ便 https://www.datadeliver.net/1 OneDrive https://www.microsoft.com/ja-jp/microsoft-365/free-office-online-for-the-web 等に上げていただければ見てみます。

nadeko666
質問者

補足

回答頂きありがとうございます。 エラーは出なくなましたが、該当しない氏名が表示されてしまいます。 画像が一度しか添付できない仕様なので、別件として質問投稿を行いました。 https://okwave.jp/qa/q10179538.html ご教授頂ければ幸いです。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.2

>翌月の9月に該当する列番号を抽出 を見落としていたのと、シートを分けたので再回答します。 G3: =IFERROR(VLOOKUP(B3,Sheet2!B:N,MONTH(TODAY())-Sheet2!$C$2+3,0)&"","") 下へコピペ。

  • SI299792
  • ベストアンサー率47% (772/1616)
回答No.1

Sheet1、Sheet2となっていますが、数式を見る限り、シートは別れておらす画像の通りになっているようなので、その前提で回答します。 G列:巡回A は現在8月なので、8月の値を表示すればいいのですね。 G3: =IFERROR(VLOOKUP(B3,$B$22:$N$29,MONTH(TODAY())-$C$20+2,0)&"","") 下へコピペ。 (貴方の数式は複雑すぎるので検証していません。) B31 1 B32 2 表示形式、ユーザー定義「"巡回担当"0」 (この設定は、Microsoft365の無償版ではできません。Excel2016 で設定してアップロードして下さい。機能します) C31 =INDEX($B:$B,SMALL(IF(C$22:C$29="○",ROW($22:$29)),$B31)) Ctrl+Shift +Enter で配列数式にします。 https://support.microsoft.com/ja-jp/office/%E9%85%8D%E5%88%97%E6%95%B0%E5%BC%8F%E3%82%92%E4%BD%9C%E6%88%90%E3%81%99%E3%82%8B-e43e12e0-afc6-4a12-bc7f-48361075954d (Microsoft365なら、そのまま入れればいいです) 右下へコピペ。 (必ず2人いる前提です。そうとは限らない場合、IFERROR を付けて下さい) シートを分けたい場合、19行以下を切り取り、別シートに磔て下さい。

nadeko666
質問者

補足

回答ありがとうございます。 B31 1 B32 2 表示形式、ユーザー定義「"巡回担当"0」 (この設定は、Microsoft365の無償版ではできません。Excel2016 で設定してアップロードして下さい。機能します) C31 =INDEX($B:$B,SMALL(IF(C$22:C$29="○",ROW($22:$29)),$B31)) Ctrl+Shift +Enter で配列数式にします。 >> #VALUE!と表示されました。

関連するQ&A