• ベストアンサー

エクセルSUM関数で文字列を計算させる方法

WinXP+エクセル2002です。 A1のセルに『100,200,30,50』と入っているとして B1で=sum(A1) とやっても380にはなってくれませんがなぜですか? 380にさせる方法はあるでしょうか? ※『100,200,300』だと100200300になりますがそれも困ります。 カンマ区切りでサマリーしたいです。 以前も良く似た質問をしましたが なにかご存知の方よろしくお願いします。

noname#24238
noname#24238

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

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

ヘルプに『関数とは、引数という特定の値を使用し、構造と呼ばれる特定の順序で計算を行う数式で、 前もって定義されています。たとえば、SUM 関数は値またはセル範囲を加算します。』 と書いてあります。 Sum関数について考えると、引数になりえるのは値またはセル範囲ですから、  =SUM(A1:A10,B1) はセルA1:A10,B1の数値の加算  =SUM(10,20,30)  は数値10,20,30の加算の意味になります。 A1に文字列『100,200,30,50』を入力して、B1に =SUM(A1) とすると  A1が数値であれば加算しますが、あいにく文字列『100,200,30,50』なので答えは『0』になってしまいます。 次に考えられるのが、文字列『100,200,30,50』を数値の集合と考えることができないかということになると思います。 配列数式、行列、INDIRECT などを使ってみましたが、難しいですね。 『,』の個数が3個とかに限定されていれば長い算式でできるかもしれませんが、ユーザー定義関数を書けば数行で終わるのでこちらを使うでしょうね。 (前回書いていますので省略します。『;』→『,』の変更だけですね) 前回の回答とは違う方法を考えてみましたので書いてみます。 少しは質問の主旨にあっている?(2列使用しています) A1のセルに『100,200,30,50』と入っているとして (1)B1のセルに ="=SUM(" &A1&")" と入力します。『=SUM(100,200,30,50)』が表示されます。 (2)このB1セルをコピーして、C1に形式を選択して貼り付けの『値』を行います。 (3)C1にも『=SUM(100,200,30,50)』と表示されます。このまま、C1を選択した状態で、メニューから    データ→区切り位置で元のデータの形式が『カンマやタブなどの区切り・・・』の    オプションボタンが選択されている状態で完了ボタンを押します。 『380』が表示されるはずです。A列の複数行の操作も同じようにできます。 B列は削除してかまいません。 また、『100;200;30;50』の形式ならば、B1に="=SUM(" &SUBSTITUTE(A1,";",",")&")" とすれば同じように処理できます。 ご参考に。

noname#24238
質問者

補足

nishi6さん、何度もご回答していただきありがとうございます。 今回のやり方も試してみました。 答えが出た瞬間は思わず声が出てしまいました。 どうしてそうなるかわからなかったからですが。。。 んが、もうあきらめて?マクロにしました。 前回のnishi6さんに教えていただいたマクロです。 実装しましたがかなりいい感じです。 何度もありがとうございました。 また何かありましたらまたよろしくお願いいたします。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

ご存知でしょうが挿入-関数クリックで関数一覧が出ます。 その中に、ストレートに質問の解答になる関数はないと思います。(ひょっとして、誰か知っている人がいて解答が出るかも知れませんが。) それなら、エクセル内で自分自身が作る私家製の関数を作れるようです。実を言うと私も初めてなんです。また私の経験では市販の本にも私家製の関数の使い方の解説にほとんどお目にかかりません。(VBAが出きるという前提でないからでしょう。) エクセルのワークシート上のセルで=○○○とストレートに記入できるとは。しかしVBAが組めれば出来るのです。 ツール-マクロ-VisualBasicEditorをクリックして、その後挿入-標準モジュールをクリックし、左のエクスプローラー部にModule1があらわれるからそれをダブルクリックして右側白紙画面に下記を入力する。 「psub」は私が付けた、私家製の関数名です。なんでも良い(命名則は守ること)。 Function psub(a) ' a = "10,20,40" s = 1 ll = Len(a) ' MsgBox ll wa = 0 '----- For i = 1 To 10 p = InStr(s, a, ",") If p = 0 Then GoTo p01 st = Mid(a, s, p - s) suu = Val(st) wa = wa + suu MsgBox st & "=" & s s = p + 1 If s > ll Then GoTo p02 Next i '---- p01: st = Mid(a, s, ll - s + 1) suu = Val(st) ' MsgBox st & "=" & s & "=" & ll - s + 1 wa = wa + suu p02: ' MsgBox wa psub = wa End Function MsgBoxはテストの為に入れたもので外しても結構です。 私が迷ったのは関数の値を返すやり方「psub=wa」の部分でした。(関数名は値を表すものなので、値を代入出きるのももっともなんですね。) これでA1セルに10,20,50と入力し、B1に「=psub(a1)」 と入力すると、値の80が入りました。

noname#24238
質問者

補足

ご回答ありがとうございます。 試させていただきました。 答えはOKでしたがロジックがどうもなじめず? 上のnishi6さんに教えていただいたマクロを使うことにしました。 ご協力ありがとうございました。

関連するQ&A

  • EXCELのSUM関数について

    EXCELのSUM関数についての質問です。 セルにSUM($A$1:$A$10)という式があった時、A1のセルをA3に移動させると SUMの式がSUM($A$2:$A$10)にかわってしまいます。 A1を固定するにはどのようにすれば良いのでしょうか? どなたかよろしくお願いします。 ([リスト形式および数式を拡張する] というオプションではダメでした)

  • エクセルSUM関数について

    ここに始めて質問する初心者です。 エクセルでのSUM関数入力にこの方法はないんでしょうか? A列に XXXX.com の文字 B列に タイトル の文字 この文字を <a href="XXXX.com(A列)" target="_blank">(B列)</a>としてみたいんですが・・・ そのSUM関数はないんでしょうか? 教えてくれる方がいましたら教えてください。 よろしくお願いいたします。

  • SUM関数を教えてください

    エクセル画面です      A     B     C 1 2    H氏   10 3    A氏   20 4    S氏   30 5    H氏   40 6    Z氏   50 7     S氏を基準としてS氏が(A4)の位置にある場合の合計を出すときの計算式は   =SUM(B2:B3)  となります S氏が(A5)の位置に来た場合   =SUM(B2:B4)  となります S氏のセルの位置が上下に移動するので SUM関数の範囲を自働的に変動させて計算させる方法を 教えてください よろしくお願いいたします。

  • エクセルで数字の文字列を計算させたくないのですが、うまく出来ません。良い方法はないでしょうか?

    エクセル2003で、下記のようにセルに入力したとします。    A   B   C 1  10   20 2  11  ’21 3  13   14 4 ※B2は「’」をつけて数字の文字列として認識させています。 B4のセルに、=SUM(B1:B3)とすると、うまく34となってくれますが、 C2のセルに、=A1+B2とすると、32となってしまいます。 当方としては、B2を文字と認識してほしいので、求めている答えは11です。 数字の文字列を文字列のまま処理して、計算させない方法はあるでしょうか? 皆様、ご教授願います。

  • エクセルのSUM関数の計算結果

    例えば セルA1、B1 セルC1、D1 セルE1、F1 セルG1、H1 が結合されている表があって =SUM(A1:H1) の計算結果と =SUM(A1,C1,E1,G1) の計算結果が 異なることはあるのでしょうか? 実際は各セルにもそれぞれ乗算・除算等の数式が入っているものですが、結果が100違いました。 正しいのは、電卓をたたいた結果 =SUM(A1,C1,E1,G1) の方でした。 原因がどうしてもわかりませんので、どなたか、一般的な話でいいので、教えてください。

  • SUM関数を教えてください

    エクセル画面です      A     B     C 1    氏名  点数 2    H氏   10 3    A氏   20 4    S氏   30 5    T氏   40 6    Z氏   50 7    D氏   60 8    合計      S氏を基準としてS氏が(A4)の位置にある場合の合計を出すときの計算式は   B8=SUM(B4:B7)  となります S氏が(A5)の位置に来た場合   B8=SUM(B5:B7)  となります S氏のセルの位置が上下に移動するので SUM関数で範囲を自働的に変動させて計算させる方法を 教えてください よろしくお願いいたします。

  • EXCEL カンマ区切りされたデータをVlookup関数で処理

    EXCELに関して、教えていただきたいことがあり、 投稿させていただきます。 一つのセル内に・・・ A1,B1,C2 とカンマ区切りされたデータがあり、 それをVlookup関数を利用して、 佐藤さん,田中さん,鈴木さん とカンマ区切りのままで、 データ呼び出し処理をしたいと考えています。 A1,B1,C2の段階でセル分割を行い、一つずつのセルで Vlookup関数を使えば、呼び出すことはできましたが、 扱う件数が多いため、一発処理ができればと考えております。 ご存知の方、教えていただけますでしょうか。 よろしくお願いします。

  • エクセルの計算式の答えを文字列にできますか?

    エクセルに詳しい方に質問です。 エクセルの計算式(LOOKUP)の答えとして、"A"と表示されているセルがあるとします。 当然参照するデータを"A"から"B"変更すると 計算式の入っているセルも"B"と変わるのですが、、、 これが変わらない様にする、つまり"A"というのを計算式の答えではなく文字にすることはできるのでしょうか? 手打ちで変更するには量が多いもので。。。 よい方法をご存知の方、アドバイスお願い致します。

  • EXCEL SUM関数で合計が違う

    以前次のような質問がありました。 QNo.2266177 EXCEL SUM関数で合計値が違う場合 質問者:purepop 教えてください。 EXCELのSUM関数で合計値が違う場合があるのですが、 何が原因で起こるのでしょうか? また、どうすれば直るのでしょうか? ------------------------------------- 私も同じような現象が起こり,困ってしまい,教えてを調べましたが,上の質問には,解決に直接繋がる回答がありませんでした。 ただ,文字列セルは無視されるということです。 ところが,整数だけ入力されてセルが,どうも文字列と認識されているようなのです(セルの表示形式を小数第1位表示の数値にしても,コンマ以下が示されることなく,整数値のままでした)。 それらのセルの値は,他人からカット&ペーストでもらったものです。 数値は,上の入力エリアには,文字列「'3」ではなく,数値「3」と表示されています。 しかたなく,他のセルで当該セル*1をして,値のみ当該セルにコピーすると,小数第1次が0となる,「3.0」と表示でき,合計もただしくなりました。 質問は,このように,「'」がつかない文字列がはいてしまうのはどのようなときでしょうか。  これがわからないと,あぶなくてこまってしまいます。

  • エクセル、SUM関数を利用すると黄色いマークが出る。

    エクセルの簡単な足し算について、教えて下さい。 今、セルに以下のデータが入っていると仮定します、    A    B 1  10   15 2  11   16 3  12   17 4  13   18 5  14   19 さて、セルC3に『=(A1+A2+A3)/(B1+B2+B3)』と入力し、これを、セルC4・C5とコピー すると何も起こらないのに、 セルC3に『=SUM(A1:A3)/SUM(B1:B3)』と入力すると、 黄色いマークが出ます。 黄色いマークをクリックして『エラーを無視』するをクリックして処置しても、 セルC4・C5とコピーするとまた登場します。その度に、『エラーを無視する』を クリックして処置しておりますが、これって何とかならならいのでしょうか? なんか、”ひみちゅ”の対処方法があるのでしょうか? 宜しくご指導下さい。

専門家に質問してみよう