OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 暇なときにでも
  • 質問No.244350
  • 閲覧数715
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

WinXP+エクセル2002です。

A1のセルに『100,200,30,50』と入っているとして
B1で=sum(A1)
とやっても380にはなってくれませんがなぜですか?
380にさせる方法はあるでしょうか?

※『100,200,300』だと100200300になりますがそれも困ります。
カンマ区切りでサマリーしたいです。

以前も良く似た質問をしましたが
なにかご存知の方よろしくお願いします。
通報する
  • 回答数2
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

ヘルプに『関数とは、引数という特定の値を使用し、構造と呼ばれる特定の順序で計算を行う数式で、
前もって定義されています。たとえば、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さんに教えていただいたマクロです。

実装しましたがかなりいい感じです。

何度もありがとうございました。
また何かありましたらまたよろしくお願いいたします。
投稿日時 - 2002-04-14 01:03:15
-PR-
-PR-

その他の回答 (全1件)

  • 回答No.1
レベル14

ベストアンサー率 28% (4323/15250)

ご存知でしょうが挿入-関数クリックで関数一覧が出ます。 その中に、ストレートに質問の解答になる関数はないと思います。(ひょっとして、誰か知っている人がいて解答が出るかも知れませんが。) それなら、エクセル内で自分自身が作る私家製の関数を作れるようです。実を言うと私も初めてなんです。また私の経験では市販の本にも私家製の関数の使い方の解説にほとんどお目にかかりません。(VBAが出きるという前提でないからで ...続きを読む
ご存知でしょうが挿入-関数クリックで関数一覧が出ます。
その中に、ストレートに質問の解答になる関数はないと思います。(ひょっとして、誰か知っている人がいて解答が出るかも知れませんが。)
それなら、エクセル内で自分自身が作る私家製の関数を作れるようです。実を言うと私も初めてなんです。また私の経験では市販の本にも私家製の関数の使い方の解説にほとんどお目にかかりません。(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さんに教えていただいたマクロを使うことにしました。

ご協力ありがとうございました。
投稿日時 - 2002-04-14 01:08:26

このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ