• ベストアンサー

エクセル値段に幅のある場合の計算

エクセル2010を使っています。 品物の値段が未確定の場合、○○○円~△△△円というように幅をもって計算したいことがあります。 仮に品物Aが100円、Bが200円~300円、Cが300円~400円の場合、合計した答えは600円~800円となります。 このような計算をさせる方法を教えてください。

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

  • ベストアンサー
  • mt2008
  • ベストアンサー率52% (885/1701)
回答No.3

#1さんの回答に一票。 具体的な演算式は、画像を参照してください。

lock_on
質問者

お礼

これが一番やりやすいです。 ありがとうございます。

その他の回答 (2)

  • tsubuyuki
  • ベストアンサー率45% (699/1545)
回答No.2

ユーザー定義関数を使えば、一応できなくはありませんが、やってみますか? Function HabaSum(myRange As Range) As String Dim c As Range Dim cOrder As Integer, cLen As Integer Dim KeiMin As Double, KeiMax As Double   For Each c In myRange     cOrder = InStr(c.Value, "~")     cLen = Len(c)          If cOrder > 1 Then       KeiMin = KeiMin + StrConv(Mid(c, 1, cOrder - 1), vbNarrow)       KeiMax = KeiMax + StrConv(Mid(c, cOrder + 1, cLen), vbNarrow)     Else       KeiMin = KeiMin + StrConv(c, vbNarrow)       KeiMax = KeiMax + StrConv(c, vbNarrow)     End If   Next   HabaSum = KeiMin & "~" & KeiMax End Function 急ごしらえのコードでかなり適当ですが、 これを標準モジュールに貼り付けると、普通の(?)関数と同じように使えます。 応用すれば、個数との掛け算なども出来ると思います。作ってませんが。 ちなみに返り値は文字列ですので、以降の計算にはこのままでは使えません。 「標準モジュールとは?」と言う再質問には回答しかねますので、 ご自身で調べる“癖”をつけてくださいませ。 まぁ、一般的には1番さんがおっしゃるように、 「最低金額・最高金額」を別のセルに持って計算させる問題です。 擬似的に「○○~●●」と見せたいなら、その間に「~」でも一列足しておけばいいです。 その方が後の計算にそのまま使えて便利ですから。

lock_on
質問者

お礼

詳しい説明ありがとうございました。 「コード」が組めるってすごいですね。私には「高度」過ぎて・・(笑) 1さんのやり方でやってみます。

  • FEX2053
  • ベストアンサー率37% (7991/21373)
回答No.1

別に「最高金額」「最低金額」欄を作って、金額が固定している 項目については「最低」=「最高」にすればいいだけなんじゃ? そうすれば「最低銀額合計」~「最高金額合計」として表示 できますから。

lock_on
質問者

お礼

本当は2さんのようにすっきりとした見た目にしたかったのですが、このやり方は私でもできますね。 ありがとうございます。

関連するQ&A

専門家に質問してみよう