• ベストアンサー

計算式の作り方について教えてください

計算式の作り方について、教えてください。 メッセージカードの作成時、 セルに、50文字を入力したら200円、 その後は、5文字入力されるごとに50円増加していくような計算式はどのように作ったらいいでしょうか? 文字数の上限はありません。 どうぞよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • maron--5
  • ベストアンサー率36% (321/877)
回答No.3

◆50文字までは200円、以下5文字まで毎50円増加とします =IF(LEN(A1),200,0)+IF(LEN(A1)>50,ROUNDUP((LEN(A1)-50)/5,0)*50,0)

その他の回答 (5)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.6

呈示頂いた内容の省略部分を補完すると 「50文字を入力したら200円、5文字入力されるごと…」 ということは 50文字までは200円 以降5文字入力されると初めて50円追加 (55文字からは250円) となると思います。 なぜ違和感があるかといいますと 上記を鵜呑みにすると 51~54文字も200円と取りかねないと思いますが、 1~50文字も51~54文字も同じ200円ならば あえて50文字という枠を設けて書かく必要がないですし、 そうしないのが通常です。 しかし呈示頂いた内容には50文字の枠を設けていられる訳です これでは矛盾が生じてしまいます 51~54文字までの扱いが明示されていないことになりますね 呈示頂いた内容の真の意図は こういったケースの一般的通例から察するに 「200円は基本料金で50字までセット内容の内 それ以降5文字単位で51文字目から50円の追加料金」 だと思われます。 詰まり  1~50文字まで200円 51~55文字まで250円 56~60文字まで300円 61~65文字まで350円 66~70文字まで400円       …       …       …       … ですよね? 50文字以下は200円 51文字から追加料金が発生する 追加料金は1~5文字まで毎に50円 という内容の内の第2項が盛り込まれていませんね できました A2に料金算定元の文字列が入っているものとします =ABS(250-INT((LEN(A2)+4)/5)*25)+INT((LEN(A2)+4)/5)*25-50 IF構文や論理演算を使うと CPUのパイプラインを放棄させる可能性がありますので 演算効率が落ちる可能性が出てきます 一方、この式は演算がリニアなので パイプラインはおそらく放棄されません その点でこれは優れていますね ただそれ以上に そもそも元々の演算量の多さが足を引っ張る可能性は否めませんが (~ ~;)ヾ

noname#22222
noname#22222
回答No.5

=(LEN(A1)>49)*200+INT((LEN(A1) >50)*(LEN(A1)-50) / 5)*50 *5ではなく*50

noname#22222
noname#22222
回答No.4

=(LEN(A1)>49)*200+INT((LEN(A1) >50)*(LEN(A1)-50) / 5)*5 (LEN(A1)>49)*200・・・・・・・・・・・・・50に達したら200 INT((LEN(A1) >50)*(LEN(A1)-50) / 5)・・・50を越えた数を5で叙した商 という計算でOKかと。

  • akio_myau
  • ベストアンサー率34% (515/1480)
回答No.2

少し条件があいまいなのでその条件によって式は変わってきますが、 50文字までの場合は200円それ以降 51-55文字までは250円と50円づつ増す場合 以下のような式でどうでしょうか。 =IF(LEN(A1)>50,200+ROUNDDOWN((LEN(A1)-46)/5,0)*50,IF(LEN(A1)=0,0,200))

  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.1

はじめまして 文字がA1にあり判定をB1に出すとして… A1はセルの表示形式を「文字列」にして、 B1に =IF(LEN(A1)<50,"",200+INT((LEN(A1)-50)/5)*50&"円") と入れてみてください。 「円」が必要なければ =IF(LEN(A1)<50,"",200+INT((LEN(A1)-50)/5)*50) です。 的外れでしたらごめんなさい。

関連するQ&A