セルの範囲内から部分一致する文字を表示する関数
最初に、「検索するセルの範囲内から文字を表示する方法」の質問で回答をいただいた方々には大変ご迷惑をおかけしまして申し訳ありませんでした。
それでは本題ですが、A行とD行には次のような文字が入力されています。
A15:USDJPY
A16:EURUSD
A17:GBPUSD
A18:AUDUSD
A19:USDCHF
A20:USDCAD
A21:NZDUSD
D5:USDJPY
D6:EURUSD
D7:GBPUSD
D8:AUDUSD
D9:USDCHF
D10:USDCAD
D11:NZDUSD
D12:EURJPY
D13:GBPJPY
D14:AUDJPY
D15:CHFJPY
D16:CADJPY
D17:NZDJPY
D18:EURGBP
D19:EURAUD
D20:EURCHF
D21:EURCAD
D22:EURNZD
D23:GBPAUD
D24:GBPCHF
D25:GBPCAD
D26:GBPNZD
D27:AUDCHF
D28:AUDCAD
D29:AUDNZD
D30:CADCHF
D31:NZDCHF
D32:NZDCAD
次に、関数式の条件は以下の通りです。
1. D行で「JPY」の文字が含まれている場合は、全て「USDJPY」と表示します。
2. D行で「USD」の文字が4文字目以降の場合は、全て「不要」と表示します。
3. D行で「USD」の文字が1文字目からの場合は、D行を表示します。ただし、「USDJPY」の場合は除きます。
4. D行で「JPY」も「USD」も含まれない場合は、D行の右側の3文字に当てはまる文字列をA15からA21の範囲から検索し、部分一致する文字を表示します。
「4」の意味は、
例えば、D18の「EURGBP」であれば、右側の3文字が「GBP」なのでA15からA21の範囲で「GBP」が含まれるA17の「GBPUSD」を表示します。
また、D21の「EURCAD」であれば、右側の3文字が「CAD」なのでA15からA21の範囲で「CAD」が含まれるA20の「USDCAD」を表示します。
関数はI5からI行に表示するようにしており、I5の式は次の通りです。
=IF(OR(NOT(ISNUMBER($B$7)),NOT(ISNUMBER($J5))),"",IF(NOT(ISERROR(SEARCH("JPY",$D5,1))),"USDJPY",IF(SEARCH("USD",$D5,1)=4,"不要",IF(SEARCH("USD",$D5,1)=1,$D5,VLOOKUP("*" & RIGHT($D5,3) & "*",A$15:A$21,1,FALSE)))))
しかし「4」のD行で「JPY」も「USD」も含まれない場合、「#VALUE!」のエラーが表示されてしまいます。
それを「4」のように表示したいのですが、どのような関数式にすればよいのでしょうか?
Excel2016です。
回答よろしくお願いします。
お礼
ありがとうございます! これでOKです!