- ベストアンサー
エクセル値段に幅のある場合の計算
エクセル2010を使っています。 品物の値段が未確定の場合、○○○円~△△△円というように幅をもって計算したいことがあります。 仮に品物Aが100円、Bが200円~300円、Cが300円~400円の場合、合計した答えは600円~800円となります。 このような計算をさせる方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (2)
- tsubuyuki
- ベストアンサー率45% (699/1545)
ユーザー定義関数を使えば、一応できなくはありませんが、やってみますか? 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番さんがおっしゃるように、 「最低金額・最高金額」を別のセルに持って計算させる問題です。 擬似的に「○○~●●」と見せたいなら、その間に「~」でも一列足しておけばいいです。 その方が後の計算にそのまま使えて便利ですから。
お礼
詳しい説明ありがとうございました。 「コード」が組めるってすごいですね。私には「高度」過ぎて・・(笑) 1さんのやり方でやってみます。
- FEX2053
- ベストアンサー率37% (7991/21373)
別に「最高金額」「最低金額」欄を作って、金額が固定している 項目については「最低」=「最高」にすればいいだけなんじゃ? そうすれば「最低銀額合計」~「最高金額合計」として表示 できますから。
お礼
本当は2さんのようにすっきりとした見た目にしたかったのですが、このやり方は私でもできますね。 ありがとうございます。
お礼
これが一番やりやすいです。 ありがとうございます。