目次
お題
お題
ExcelのXMATCH関数を実装してください。 形式: XMATCH(検索値, 検索範囲, 一致モード) - 検索値に検索する文字列が入ります - 検索範囲に検索される文字列の配列やリストが入ります(長さ1以上) 空配列やnull(空を明示的に表すもの)だった場合は"#VALUE!"という文字列を返却します - 一致モードは整数で0だったら完全一致 -1だったら完全一致または次に小さい項目(辞書順) 1だったら完全一致または次に大きい項目(辞書順) を検索します 0,-1,1以外が指定されたら"#VALUE!"という文字列を返却します - 上記3つの引数省略は不可とします(必ず3つ指定する) - 上記で検索して、値が見つかった場合、検索範囲を1オリジンとした場合のインデックスを返却します - 上記で検索して、値がみつからなかった場合、"#N/A"という文字列を返却します ※簡易版のため、以下仕様を省略しています。また一部Excelと異なる部分はエラー処理を拡張しています。 省略する仕様: - 検索値、検索範囲の型は文字列のみに限定(それ以外の型は省略) - ワイルドカードでの検索 - 検索報告の指定、バイナリ検索 エラー処理拡張: - 検索範囲の長さが0の場合やnull(空を明示的に表すもの)の場合、"#VALUE!"を返却 ※Excelでは空の範囲をそもそも指定できないので
動作イメージ
XMATCH("b", ["a", "b", "e", "f", "c"], 0) => 2 XMATCH("d", ["a", "b", "e", "f", "c"], 0) => "#N/A" XMATCH("d", ["a", "b", "e", "f", "c"], -1) => 5 # dを探すがdがないので、この中にある内でdの次に小さい項目(=c)のインデックスが返る XMATCH("d", ["a", "b", "g", "f", "c"], 1) => 4 # dを探すがdがないので、この中にある内でdの次に大きな項目(=f)のインデックスが返る