Excel (一般機能)

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

 
(Windows 10 Pro : Excel 2016)
SUBSTITUTEで多数の文字を変換する方法
投稿日時: 21/09/28 14:07:14
投稿者: torao

お世話になっております。
 
現在、数値を変換する方法について検討しております。
 
元の値は数値のため TEXTで文字列に変換し下記のようにしております。
 
=SUBSTITUTE(SUBSTITUTE(TEXT(H4,"@"),"1.0","7.5"),"1.5","7.0")
 
セル値・・・1.0
答え ・・・7.5
 
これを、実用化のため10コほど設定したく条件4個目を追加すると「数式に問題があります」とでます。
 
SUBSTITUTE(SUBSTITUTE(TEXT(H4,"@"),"1.0","7.5"),"1.5","7.0"),"4","4.5")
 
 
皆様アドバイスのほどよろしくおねがいします。
 
ちなみに変換一覧
(1.0〜7.5の数値に対して変換・一部数値の飛びあり)
1.0→7.5
1.5→7.0
2.0→6.5
3.0→6.0
3.5→5.5
4.0→5.0
4.5→4.5
5.0→4.0
5.5→3.5
6.0→3.0
6.5→2.0
7.0→1.5
7.5→1.0

回答
投稿日時: 21/09/28 16:07:23
投稿者: んなっと

右のほうあいているところ(下の例ではK:L列)に対応表
 
●H4が本当に数値の場合
 
  H  I J  K  L
1        1 7.5
2       1.5  7
3        4 4.5
4 1 7.5       
 
I4
=VLOOKUP(H4,K:L,2,FALSE)
下方向・↓
 
●数値というのは間違いで、実はH4は文字列の場合
 
K:L列も文字列にする(I4の式は同じ)
 
   H  I J  K  L
1        1.0 7.5
2        1.5 7.0
3        4.0 4.5
4 1.0 7.5       
 

回答
投稿日時: 21/09/28 16:09:25
投稿者: Suzu

SUBSTITUTE(SUBSTITUTE(TEXT(H4,"@"),"1.0","7.5"),"1.5","7.0")
SUBSTITUTE(SUBSTITUTE(TEXT(H4,"@"),"1.0","7.5"),"1.5","7.0"),"4","4.5")
 
引数だけ増やして、SUBSTITUTE 関数 を増やしていませんよね?
 
 
ご質問とは関係ありませんが
1. TEXT(H4,"@") は、 H4が 「1」 であるなら、戻り値は、「"1"」ですよ。
  小数点を付けて判定を行いたいなら TEXT(H4,"0.0") とすべきです。
 
2. 変換値が決まっていて、表として持てるのであれば、
  VLOOKUP関数を使っても良いと思います。
 
3. 拝見する限りは、
  入力値が 3以上 6以下の場合は、9から入力値を引いた値が 出力値
  それ以外の時は、      8.5から入力値を引いた値が 出力値 
  と推測できます。
  そうであるなら、IF関数にて求める事が出来ますよね。
 
 ※ 2と3はあくまでも数値が返りますから、
   セルの書式設定を行うなり、TEXT関数を含むようにする必要があります。

投稿日時: 21/09/28 20:54:57
投稿者: torao

Suzu さま
んなっと さま
 
早速のアドバイス有難うございます。
 

引用:
引数だけ増やして

ご指摘どおり関数を調べると不足していました。
仮に追記していくとかなりのボリュームになりそうです。
 
引用:
変換値が決まっていて、表として持てるのであれば

 
お二人のご提案のとおり
 
・変換表を別シートに準備し名前定義化して
・VLOOKUP関数で
 
やる方法に変更しました。
 
あとから変換表を書き換えるなどメンテナンス的にも優れていますし
確か、バージョンアップでかなりスピードアップされているようですので
積極的に活用したいと思います。
 
実際に試したところ、すんなりと変換されました。
アドバイス有難うございます。
[/quote]