• ベストアンサー

同一セル内の数値を合計する方法

添付に示しますように、 同一セル内に複数の数値が 改行(Alt+Enter)しながら入力されています。 このセル内の合計値を求める方法を教えてください。 現在、セルの値をコピーして、 別のセルに張り付けることで 合計値を求めていいます。 しかし、対象となるセル数が多いため この方法では時間がかかりすぎて 困っています。 以上、よろしくお願いいたします

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

  • ベストアンサー
  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.3

Excel2010での解答です。 セルA1から下に入力があって、B列に結果を出します。 セルB1に ="=" & SUBSTITUTE(A1,CHAR(10),"+") と入力して下にコピーします。 コピー結果の表示された算式をコピーして、同じ箇所(またはC列)に、形式を選択して貼り付け>値 を実行します。式を値にするわけです。 貼り付けた結果、セルは選択されているはずなので、そのまま、データタブ>区切り位置を実行し、表示されたダイアログボックスでOKします。 改行がない普通の数値入力も機能します。

10samba
質問者

お礼

合算だけなく、計算の過程も表示されることによる確認もできることから、ベストアンサーとさせていただきました。 ありがとうございました

その他の回答 (2)

回答No.2

Excel VBAマクロを使う方法と使わない方法があります。 なお、改行で複数の値の入っているセルがA1から縦に並んでいると仮定し、合計値をその左のB列のセルに入れると仮定します。 1.マクロを使う方法 まず、Alt+F11キーを押してVBAの画面を出します。 画面左の「VBAProject」と書かれている所を右クリックし、「挿入」-「標準モジュール」メニューをクリックします。 「標準モジュール」の下に「Module1」と出るのでここをクリックします。 画面中央の空欄のところに、以下のコードをコピーして貼り付けてください。 Public Function eval(src As Variant) As Variant eval = Application.Evaluate("=" & Replace(src, vbLf, "+")) End Function ワークシートに戻って、B1に「=eval(A1)」という式を入れます。 B1セルの値をB2以下のセルにコピーします。 これで全部計算されます。 2.マクロを使わない方法 注意:この方法は文字列置換したときに元データがなくなるので、操作前に必ずシートまたはブックのコピー(バックアップ)を取ってください。 まず、ワークシートの画面で、CTRL+Hキーを押して文字列置換ダイアログ画面を出します。 「検索する文字列」の欄を一度クリックして(文字入力できる状態にして)から、CTRL+Jキーを押します。 画面には特に何も表示されませんが、そのまま「置換後の文字列」の欄を一度クリックして、ここに半角の「+」を入力します。 入力できたら「すべて置換」ボタンをクリックして下さい。改行されていたセルの数字が改行のない足し算の式に変わります。 続いて、B1セルにすべて半角で「="=" & A1」と入力します。B1セルの値をデータの数だけ下にコピーして下さい。これでB列のセルはA列に書かれた数字を足し算する数式になったと思います。 コピーできたら、B列をすべて選択して右クリックし、「コピー」メニューをクリックします。 続いて、コピーした時と同じセルで右クリックし、「形式を指定して貼り付け」-「値」メニューをクリックして下さい。 見かけ上のセルの内容は変わりませんが、このセルをクリック(選択)してF2キーを押し、そのままエンターキーを押すと数式が計算結果に変わります。 エンターを押したとき、カーソルが一つ下のセルに移動する設定になっていれば、B列でF2キーとエンターキーを交互に連打していくことでどんどん計算されていきます。(件数が多いとちょっと面倒ですのでマクロのほうが簡単です)

10samba
質問者

お礼

ご回答、ありがとうございます。 マクロ実行ボタンを押さなくても答えが出てしまう回答1に驚きました。 回答2は、こんな技があるなんて、知りませんでした。 本当に勉強になります。ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

手順: B1セルを選択する(必ず行う) 数式タブの名前の定義を開始  名前 SumLeft  参照範囲 =EVALUATE(0&SUBSTITUTE(!A1,CHAR(10),"+")) と登録する 合計のセルに =SumLeft と記入、以下コピーする。

10samba
質問者

お礼

こんな計算方法があるなんて知りませんでした。 EVALUATEという関数を使いこなせるように勉強したいと思います。 本当にありがとうございました