- ベストアンサー
エクセル計算式
すみません。 計算式で手こずっております。 詳細を下記に明記しますので お手数ですが、助言願います。 概要:金額計算式 例 A1:50万(自由に金額を入力出来る) *50万単位でないとエラーになるようにしたいです。 50万以下及び50万以下単位でのUPは一律エラー表示を希望 A1=50万の時は50万と表示 50万以下=エラー 70万=50万と表示 100万=100万 150万=150万 190万=150万と表示 といった形です。 どのように計算式を入れたら宜しいでしょうか。 何卒、宜しくお願い致します。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
簡単に整理しましょう。 まず、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)
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)
データの入力規則の設定により、「50」刻みの数字以外を受け付けない設定にすることができます。 前準備として、#3さんご回答のとおりセルの書式設定を「ユーザー定義」にし、「G/標準"万"」と入力しておきます。 データ→データの入力規則→設定タブ→入力値の種類(A:) 「ユーザー設定」→数式(F:) に次の式 =a1=rounddown(a1/50,0)*50 この方法では190そのものが受け付けられないので、190を150に変換することはできませんが、当初から50の倍数以外の入力を受け付けなくすることができます。 190をその入力したセル内で150に変換するのは、おそらく関数式では無理で、VBAによるより外ないでしょう。
- yuukimainami
- ベストアンサー率39% (91/228)
NO.04のものです。 とんだ勘違いしていました。 繰り上げ(切り上げ)ではなく、 繰り下げ(切り捨て)ですよね。 ですと、CEILING関数ではなく、FLOOR関数となります。 よって、 =IF(A1>=500000,FLOOR(A1,500000),"エラー") となります。
- Sayakonomimoto
- ベストアンサー率19% (23/119)
セルの書式設定を「ユーザー定義」にし、 「G/標準"万"」と入力します。 =IF(A1<50,"エラー",QUOTIENT(A1,50)*50) 50万以下だとエラーと表示し、 あとは50万の倍数で表示するようになっています。 こういうことでしょうかね?
=IF(A1<500000,"エラー",FLOOR(A1,500000)) 50以下はエラー表示、50万以上は50万単位で切り捨てします。
- Sayakonomimoto
- ベストアンサー率19% (23/119)
IF(A1=”70万”,"50万",IF(A1="190万","150万",IF(A1<="50万",”エラー”,A1)))) こんな感じでしょうか? そもそも、A1の表記がこれで正しいかわかりませんが… 70万=700000 なら、上記部分を A1=700000 としてください。 たぶん、これであっている…のかと? (上記例のみ対応できます)