前提・実現したいこと
Googleスプレッドシート上で、次のことをしようと思ってます。
・1000~8000の数字が書かれた表Aと、それらに対応するアルファベットを振った3つの
表B~Dがある
・表B(1000,aと2000,bと3000,c)、表C(4000,dと6000,fと3000,p)、表D(7000,gと8000,h)
・表Aの数字を検索値に、それに対応するアルファベットをVLOOKUPで抽出する
・表B~Dのどこから検索するかは、表Aの数字の大きさによって変える
・該当値が無い場合は「該当なし」と表示させる
発生している問題・エラーメッセージ
「=IFERROR(VLOOKUP(表Aのセル,IF(表Aのセル<3000,表Bの範囲,IF(表Aのセル<5000,表Cの範囲,表Dの範囲)),2,FALSE),"該当なし")」
という関数を組みました。
これで、表Aの指定したセルの値が
・3000未満の場合は表Bを検索する
・3000以上5000未満の場合は表Cを検索する
・5000以上の場合は表Dを検索する
・該当の検索範囲(表)に該当しないときは「該当なし」の表示
とすることができます。
これを表A全てのセルで実行するために関数をコピーするところ、
「ARRAYFORMULA関数」を使用して動作を軽くしたいと思い、
「=ARRAYFORMULA(IFERROR(VLOOKUP(表Aの範囲,IF(表Aの範囲<3000,表Bの範囲,IF(表Aの範囲<5000,表Cの範囲,表Dの範囲)),2,FALSE),"該当なし"))」
という関数を表Aの一番上の値にあたるセルにいれたところ、なぜか通常にコピーしたときと結果が違います。
該当のソースコード
通常版:「=IFERROR(VLOOKUP(表Aのセル,IF(表Aのセル<3000,表Bの範囲,IF(表Aのセル<5000,表Cの範囲,表Dの範囲)),2,FALSE),"該当なし")」
ARRAYFOMULA版:「=ARRAYFORMULA(IFERROR(VLOOKUP(表Aの範囲,IF(表Aの範囲<3000,表Bの範囲,IF(表Aの範囲<5000,表Cの範囲,表Dの範囲)),2,FALSE),"該当なし"))」
試したこと
IF関数の検索範囲に「$」をつけ忘れたりしていないかなど確認したり、
ARRAYFORMULA()」を他のところにも追記したりと、ひとしきり試しましたが上手くいきません。
補足情報(FW/ツールのバージョンなど)
出来ればGASは使用せずに改善したいです。
GASでしか解決できないようであれば、その理由とGASでのやり方について助言いただけると助かります。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/06/29 03:12