- ベストアンサー
エクセルで、セル内の数字を各々足すには
Excel 2002を使っています。 セル内の数字を各々足し、その結果を別のセルに出力する方法はあるのでしょうか。 例えば、 A B C --------------------------------------------- 1| 12345678 | | | となっている時に、 1+2+3+4+5+6+7+8を計算してB1に出力させるといった具合にです。 よろしくお願いします。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
B1 = IF(COUNT(A1),SUMPRODUCT(MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1)*1),"") とします。B2から下や任意のセルにコピーできます。 ほとんど同じ意味ですが。配列数式を使って、 B1 = IF(COUNT(A1),SUM(MID(A1,ROW(INDIRECT("A1:A"&LEN(A1))),1)*1),"") 配列数式を登録するには、入力時に Ctrl+Shift+Enter とします。
その他の回答 (6)
- imogasi
- ベストアンサー率27% (4737/17070)
多分ご意向に合わないでしょうが、数字を各列にばらして 足し合わせる方法をやって見ました。 A列に数字を入れる。 B1に=MOD(INT($A1/10^(COLUMN()-2)),10)をいれ I1まで複写する。 B1をB2に複写し、B2をI2まで複写する。 同じように3,4行目も行う J列に=SUM(B1:I1)といれて下に複写する。 (テスト実例結果)A1:j4 123 3 2 1 0 0 0 0 0 6 24345678 8 7 6 5 4 3 4 2 39 3456 6 5 4 3 0 0 0 0 18 13455 5 5 4 3 1 0 0 0 18
お礼
お礼が遅くなってしまい、申し訳ありません。 うまくいきました! 技あり!という感じですね。 ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17070)
ツール-マクロ-VBEでVBE画面になる。 挿入-標準モジュールで白紙画面が出ます。そこに Function ketat(a) t = 0 For i = 1 To Len(a) t = t + Mid(a, i, 1) Next i ketat = t End Function をコピーして貼りつけます。 3行めの意味は「桁数だけ」 4行目の意味はそれまでの桁の中間合計にその桁数字を加えています。 シートでA列に数字があるとして B列B1に=ketat(A1)といれ、B2以下にB1式を複写します。 (テスト実例) 123 6 24345678 39 3456 18
お礼
お礼が遅くなってしまい、申し訳ありません。 VBE画面で貼り付けた後はAlt+Qでエクセルに戻っても良いのでしょうか? B1に=ketat(A1)を入力したのですが、「名前が適切ではありません:ketat」と出てきてしまいます。
- dejiji-
- ベストアンサー率38% (327/858)
一つのセルに入っているのですよね。数値はどのように分類するのでしょうか? 12345とあった場合は、1+2+3+4+5?12+34+5?色々なパターンが発生しますよね。例えば、数字の区切りに(1,2,3,4,5とか12,34,5のように)何か工夫があるのでしょうか。
お礼
お礼が遅くなってしまい、申し訳ありません。 1+2+3+4+5のように出力させたいと思っています。 区切りなどはつけていません。
- maruru01
- ベストアンサー率51% (1179/2272)
こんにちは。maruru01です。 B1に、 =SUMPRODUCT(--MID(A1,ROW(A1:INDEX(A:A,LEN(A1))),1)) と入力します。 なお、A1に数値でない文字が含まれているとエラーになります。
お礼
お礼が遅くなってしまい、申し訳ありません。 うまくいきました。 しかし、今回はA1、A2、A3、…とA列に8桁の数字が沢山ありそれぞれの結果をB列に表示させたいと思っており、B1に =SUMPRODUCT(--MID(A1,ROW(A1:INDEX(A:A,LEN(A1))),1)) と入力し、以下オートフィルでコピーしたのですがB1以外はうまくいきません。 言葉が足りずすみませんでした。
半角で数式バーに =1+2+3+4+5+6+7+8+9 ですね。 各数字がそれぞれセルにある場合、 =A1+B1+C1・・・・ とされるとよいでしょう。 セルの数字を変更すると、合計も自動で変更してくれます。
お礼
すみません、今回は一つのセルに8桁の数字があるという前提ですので… ありがとうございました。
- dandy_club
- ベストアンサー率69% (86/123)
A1が12345678の時は、ご面倒でしょうがB1のセルで =1+2+3+4+5+6+7+8と入力してEnterで合計36になります。 そう意味のご質問解釈でよかったのかなぁ? 違っていれば補足をお願いしますね。
お礼
お礼が遅くなってしまい、申し訳ありません。 今回、実はA列に8桁の数字が沢山あるという設定でして、B列には関数を使って結果が出せると望ましいと思っていました。言葉が足りずすみませんでした。
お礼
お礼が遅くなってしまい、申し訳ありません。 うまくいきました! 今回、「エクセルではできないかも。」と半分あきらめていたので感激です。 ありがとうございました。