Excel (一般機能)

Excelの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 11 Home : Excel 2021)
INDEX関数、MATCH関数について
投稿日時: 23/05/30 13:23:08
投稿者: TI

こんにちは。
 
勤続月数、週勤務日数から今年度の有給日数を取得したいと
考えています。
 
以下の表から該当する数値を取得します。
 
A列・・・週勤務日数です。
 
A        B    C        D    E    F    G    H    I    J
勤続月数                6    18    30    42    54    66    78
勤続年数                0.5    1.5    2.5    3.5    4.5    5.5    6.5
5        217            10    11    12    14    16    18    20
4        169    216        7    8    9    10    12    13    15
3        121    168        5    6    6    8    9    10    11
2        73    120        3    4    4    5    6    6    7
1        48    72        1    2    2    2    3    3    3
 
週勤務日数と、勤続月数が2行目の勤続月数を超える最小値の
交わる部分の日数を取得したいと思っています。
 
例 週4日勤務  勤続月数 20月 の場合 → 「9」
 
INDEX関数、MATCH関数を用いて、以下のように記述をしたところ
スピル機能が働いてしまい、数式を入力したセル以外の部分に
求める結果が表示されます。
 
=INDEX(付与日数!$D$4:$J$8,MATCH(付与日数!$A$4:$A$8,Y74,0),MATCH(付与日数!$D$2:$J$2,AB74,1))
※「Y列」・・・週勤務日数  「AB列」・・・勤続月数
 
数式の前に「@」をつけるとスピル機能を停止できるというものを
見つけたので、INDEX関数の前に「@」をつけたところ、
「この式は、一部の旧バージョンのExcelではサポートされていません。
 代わりのこのバリエーションを使用しますか。」
とのメッセージに従うと、エラーになります。
 
修正後の数式
=INDEX(付与日数!$D$4:$J$8,MATCH(@付与日数!$A$4:$A$8,Y74,0),MATCH(@付与日数!$D$2:$J$2,AB74,1))
 
いろいろと検索をしたのですが、対応策が見つかりませんでした。。
アドバイスをいただけると幸いです。
 

回答
投稿日時: 23/05/30 14:00:13
投稿者: 半平太

>スピル機能が働いてしまい、
スピル機能が働いて困ることは滅多にないですけども。
 
その数式の第一引数は検索値なので、位置が逆ですよ?
 
あと、「9」が正しいなら、XMATCHを使うべきではないですか?
>例 週4日勤務  勤続月数 20月 の場合 → 「9」
 
つまり、
=INDEX(付与日数!$D$4:$J$8,MATCH(Y74,付与日数!$A$4:$A$8,0),XMATCH(AB74,付与日数!$D$2:$J$2,1))

投稿日時: 23/05/30 15:02:22
投稿者: TI

半平太様
 
ご返信ありがとうございます。
 
MATCH関数の件、完全に勘違いをしておりました。
恥ずかしい限りです。
 
XMATCH関数のことは初めて知りました。
ありがとうございます。
 
お陰様で希望する結果を取得することができました。
ありがとうございます。