• ベストアンサー

エクセル計算式

すみません。 計算式で手こずっております。 詳細を下記に明記しますので お手数ですが、助言願います。 概要:金額計算式  例 A1:50万(自由に金額を入力出来る)       *50万単位でないとエラーになるようにしたいです。         50万以下及び50万以下単位でのUPは一律エラー表示を希望 A1=50万の時は50万と表示 50万以下=エラー 70万=50万と表示 100万=100万 150万=150万 190万=150万と表示 といった形です。 どのように計算式を入れたら宜しいでしょうか。 何卒、宜しくお願い致します。

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

  • ベストアンサー
回答No.4

簡単に整理しましょう。 まず、500000未満をエラー表示にしたいのですよね。 ですので、まずIF関数を使います。 =IF(A1<=500000,"B","エラー") これで、500000未満をエラー表示にできます。 次に、500000以上の数字で500000周期で繰り上げ表示したいのですよね。 この場合、CEILING関数があります。 =CEILING(A1,500000) これで、例えば1250000の場合は1500000と表示されます。 あとは、二つの関数を合わせた、2重関数にするだけです。 =IF(A1>=500000,CEILING(A1,500000),"エラー") これで、500000未満をエラー表示に、500000以上の数字で500000周期で繰り上げ表示ができます。

その他の回答 (6)

  • eden3616
  • ベストアンサー率65% (267/405)
回答No.7

VBAで実装するなら・・・ (1)シートを右クリック→「コードの表示」を選択して「Microsft Visual Basic」を開く (2)以下のコードを「Microsft Visual Basic」の右上に貼付 (3)「Microsft Visual Basic」のウィンドウを×で終了 ■コード Private Sub Worksheet_Change(ByVal Target As Range) If Replace(Target.Address, "$", "") = "A1" Then With Target Application.EnableEvents = False If Not (IsNumeric(.Value)) Or .Value < 50 Then .Value = "エラー" Else .Value = WorksheetFunction.MRound(.Value, 50) & "万" End If Application.EnableEvents = True End With End If End Sub ■使用方法 A1に数字を入力すると入力された値をチェックしてmroundで50の倍数値に丸められます 50未満の数値または文字列を入力すると「エラー」と表示します ■変更箇所 ◇対象のセルがA1以外の場合  If Replace(Target.Address, "$", "") = "A1" Then  の「A1」を該当セルに変更してください ◇セルの値は数字のみで、「万」や「エラー」を書式設定で表示する場合  (1)  .Value = "エラー"  を  .Value = 0  としてください  (2)  .Value = WorksheetFunction.MRound(.Value, 50) & "万"  を  .Value = WorksheetFunction.MRound(.Value, 50)  としてください  (3)  A1のセルの書式設定で表示形式を「ユーザー定義」にし  種類を「0万;;エラー」としてください

  • minosennin
  • ベストアンサー率71% (1366/1910)
回答No.6

データの入力規則の設定により、「50」刻みの数字以外を受け付けない設定にすることができます。 前準備として、#3さんご回答のとおりセルの書式設定を「ユーザー定義」にし、「G/標準"万"」と入力しておきます。 データ→データの入力規則→設定タブ→入力値の種類(A:) 「ユーザー設定」→数式(F:) に次の式 =a1=rounddown(a1/50,0)*50 この方法では190そのものが受け付けられないので、190を150に変換することはできませんが、当初から50の倍数以外の入力を受け付けなくすることができます。 190をその入力したセル内で150に変換するのは、おそらく関数式では無理で、VBAによるより外ないでしょう。

回答No.5

NO.04のものです。 とんだ勘違いしていました。 繰り上げ(切り上げ)ではなく、 繰り下げ(切り捨て)ですよね。 ですと、CEILING関数ではなく、FLOOR関数となります。 よって、 =IF(A1>=500000,FLOOR(A1,500000),"エラー") となります。

回答No.3

セルの書式設定を「ユーザー定義」にし、 「G/標準"万"」と入力します。 =IF(A1<50,"エラー",QUOTIENT(A1,50)*50) 50万以下だとエラーと表示し、 あとは50万の倍数で表示するようになっています。 こういうことでしょうかね?

noname#203218
noname#203218
回答No.2

=IF(A1<500000,"エラー",FLOOR(A1,500000)) 50以下はエラー表示、50万以上は50万単位で切り捨てします。

回答No.1

IF(A1=”70万”,"50万",IF(A1="190万","150万",IF(A1<="50万",”エラー”,A1)))) こんな感じでしょうか? そもそも、A1の表記がこれで正しいかわかりませんが… 70万=700000 なら、上記部分を A1=700000 としてください。 たぶん、これであっている…のかと? (上記例のみ対応できます)

関連するQ&A