- ベストアンサー
合算前に円未満を切り捨てたい
いくつかの数字を+(プラス)で繋いだセルがあります。 ex)=100+200+300 ”表示は計算結果の600となります。 このセルに表示された数字600の構成要素である100、200、300に それぞれ1.05パーセントを掛け(要するに、消費税を加算する)、その後 合算した結果を右のセルに表示させたいです。 ただし、ポイントは、合算前の円未満は切り捨てるところなのですが、可能 でしょうか? 膨大なデータですので、数字を個別のセルに入れることはできません。 ご教授よろしくお願いいたします。 エクセル2000です。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
>膨大なデータですので、数字を個別のセルに入れることはできません。 膨大なデータを扱うからには、今後の事を考え数字を個別のセルに入れたほうがよいかと思います。 すでに入力されているというのであれば 1)編集→置換で検索する文字列に「=」を、置換後の文字列に「 」(何も入力しない)とし その数式の入力されているセルを対象に置換。 2)その数式の入力されているセル全体を選択した状態で、データ→区切り位置 カンマやタブの区切り…を選択し「次へ」 区切り文字の「その他」にチェックを入れ右の入力ボックスに「+」とし「完了」 3)あとは前回答者様が書かれています数式で計算。
その他の回答 (5)
Excel は一度も操作したことがない門外漢ですので的外れかも・・・。 A1=600・・・・=100+200+300 B1=630・・・・=SumSogaku(A1) VBA で関数を作成しないと無理なような気がします。 例えば、=110+210+300 の答えは \650 ですよね。 <標準モジュール> Option Explicit ' ' Rounds関数用 ' Public Const 四捨五入 = 0 Public Const 切り捨て = 1 Public Const 切り上げ = 2 Public Function SumSogaku(ByVal R As Range) As Currency Dim StopNow As Boolean Dim strFormula As String Dim N As Integer Dim T As String Dim S As Currency strFormula = CutStr(R.Formula, "=", 2) Do N = N + 1 T = CutStr(strFormula, "+", N) StopNow = CBool(T = "") If Not StopNow Then S = S + Rounds(CCur(T) * CCur(1.05), 切り捨て) End If Loop Until StopNow SumSogaku = S End Function Public Function Rounds(ByVal M As Currency, _ ByVal A As Integer, _ Optional D As Integer = 0) As Variant Rounds = Sgn(M) * Fix(Abs(M) * 10 ^ D + Abs((A = 0) * 0.5@ + (A = 2) * (Int(M * 10 ^ D) <> (M * 10 ^ D)))) / 10 ^ D End Function Public Function CutStr(ByVal Text As String, _ ByVal Separator As String, _ ByVal N As Integer) As String Dim strDatas() As String strDatas = Split("" & Separator & Text, Separator, , 0) CutStr = strDatas(N * Abs((N <= UBound(strDatas)))) End Function
- imogasi
- ベストアンサー率27% (4737/17069)
例データ A列 B列 C列 121 127.05 127 130 136.5 136 210 220.5 220 484.05 483 B列の式 =A2*1.05 C列の式 =ROUNDDOWN(B2,0) 1発ではSUMPRODUCTのほかに =SUM(ROUNDDOWN((A2:A5*1.05),0)) と入れて SHIFT,CTRL,ENTERキーを同時押しする。配列数式。 結果 483 横方向にデータがあれば =SUM(ROUNDDOWN((A1:C1*1.05),0)) SHIFT,CTRL,ENTERキーを同時押しする。
補足
セルA1=+100+200+300 とあった場合、 +100に対して、×1.05し、小数点以下切り捨て、 +200に対して、×1.05し、小数点以下切り捨て、 +300に対して、×1.05し、小数点以下切り捨て、 その結果を合算し、B2に表したいのです。 また、セルA1の、+○○ という数字は不特定な数が 存在し、多い場合、5つくらいあります。 いかがでしょうか?説明べたで、大変申し訳なく思います。
- char16
- ベストアンサー率32% (73/222)
NO1です。 NO2の方の =SUMPRODUCT(INT((範囲)*1.05)) の方がスマートですね。 カッコが不足していたので書き込みました。
- mu2011
- ベストアンサー率38% (1910/4994)
次の数式は如何でしょうか。 =SUMPRODUCT(INT(範囲)*1.05)
- char16
- ベストアンサー率32% (73/222)
=(ROUNDDOWN((100*1.05),0)+(ROUNDDOWN((200*1.05),0)+(ROUNDDOWN((300*1.05),0) ※100、200、300はセルの位置です。 こういうことで良いのでしょうか。
補足
セルの中にある100、200、300等の数字に対して1.05を掛けるので、セルの位置を言えば、全て同じセル内にあるのです。
お礼
例を、セルA1=100+200+300としておりましたが、 セルによっては、+が4コ、5コあるのでどのように扱ってよいか 迷っておりましたが、最大数を考慮して列を作成し、個別のセルに 入れたほうがよいということですね! セル内の+○○となった何個目かの数字を引っ張り出すことのできる 関数があれば解決できるなと思ったのですが、そのような関数は ないということですね。 ご回答、ありがとうございました。