こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルで困ってます

現在家計簿的なものを作っています。
足し算のところで調べてもお手上げ状態です。
現在わからないところは下記になります。


1、セル5つ(横一列)
(数値は一つのセルに1文字まで入力可能。
つまり1~5セルの数字を入力できます。)

2、セル5つ
(ここにも上と同じように1~5桁の数字を入力します)

3、セル6つ
(ここに1と2の合計を一セル一文字づつ表示させたいです。)

つまり1+2=3にしたいです。
一セルなら普通にSUMとやってできるのですが、1~5のセルにそれぞれ
数字を入力していくのでどうやって計算したらいいかわからないです・・・。

投稿日時 - 2007-02-11 01:30:46

QNo.2742230

すぐに回答ほしいです

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

#2、#7です。
最後の訂正・・

A1~G1:数値1
A2~G2:数値2
   ・
   ・
   ・
A9~G9:数値9
10行目:合計

A10に
=RIGHT(SUM(A$1:A9)+ROUNDDOWN(SUM(B$1:B9)/10,0)+ROUNDDOWN((RIGHT(SUM(B$1:B9),1)+ROUNDDOWN(SUM(C$1:C9)/10,0))/10,0),1)
これをG10までコピーペースト。

さっきの投稿では#8のを1つにまとめたにもかかわらず、B11などの補助計算のセルが指定されてしまっていた。(´・ω・`)
今度こそ間違いはないです。申し訳ありませんでした(-ω-)

投稿日時 - 2007-02-11 04:35:45

お礼

たびたび有難う御座いました。
参考にさせていただき頑張ります。

投稿日時 - 2007-02-11 04:50:23

ANo.10

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(14)

ANo.14

自分以外が使うBookで補助セルを使うと面倒になるケースが多いですね。行が増えると算式を追加する必要があるのが典型でしょうか。

質問のような要求は結構あって、何回か対処しました。
決まった書式(書類)があってその枠内に文字単位で書いて欲しいとか、子供に足し算や引算を教えるときに1文字ずつ変化させたいなど。
なかなか要求を否定できないですね。全加算機のような動きを表現することになります。


質問に対しては、
 ・補助セルを使わない
 ・任意の複数行に対応
 ・SUMと同じように使う
 ・何桁目かを意識しない算式にする
 ・横方向に算式をコピーできるようにする
 ・マイナス(記号-)も扱える
 ・対象は整数とする。(小数点までは拡張しない)
のようにしてみました。(この制約なら、VBAしかないでしょう)

ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そこに貼り付けます。

__A_BCDEFG

2___001200
3___000031
4___050009
5___051240 のようになっている場合、(『_』は位置の調整用)

B5セルの算式は、= ssum(B2:B4)
C5~G5はB5をコピーできます。
sum関数と同じように書きますが、引数は1列の連続した範囲です。B2:B4がその例です。
有効数値の前の『0』は入力不要で、下のモジュールは『0』を表示しません。マイナス数値は『-』を1文字として扱います。『-』と1桁数値以外は入力しないことにします。

下のモジュールを貼り付けたら、
  TopColumn = "B" はB列から数値が入っているので、このようにセットします
  MaxKeta = 6   6桁を扱っているので、このようにセットします
のセットを行なってください。


↓次の行からコピーして貼り付けます
Const TopColumn = "B"          '// 一番左の列
Const MaxKeta = 6            '// 数値の最大桁

Function sSum(rg As Range)
  Application.Volatile        '// 自動再計算関数にする

  Dim NumColumn As Integer      '// 一番左の列(数値化)
  Dim rw As Long, col As Integer   '// 行、列カウンタ
  Dim strSum As String        '// 行レベルの数値
  Dim TTL As Long, strTTL As String  '// 合計、文字列にした合計

  '// 対象とする行の合計を求める
  NumColumn = Range(TopColumn & "1").Column
  For rw = rg.Cells(1).Row To rg.Cells(1).Row + rg.Rows.Count - 1
    strSum = ""
    For col = NumColumn To NumColumn + MaxKeta - 1
      strSum = strSum & Cells(rw, col)
    Next
    TTL = TTL + Val(strSum)
  Next
  strTTL = Right(String(MaxKeta, " ") & TTL, MaxKeta)

  '// 対応する桁を取り出す
  sSum = Mid(strTTL, rg.Cells(1).Column - NumColumn + 1, 1)
End Function

投稿日時 - 2007-02-12 12:43:55

ANo.13

まず、家計簿にこんな仕様をなぜ持ち込まないといけないのか、異議をもうします。初心者らしいが、考え方からして他の方法はないのか反省が必要では。
1セルに1桁数字をばらばらに入れるなら、例えば1セルを作業セルとして
=B3*10000+C3*1000+D3*100+E3*10+F3
で10進数に直せるのでは。
作業セルを使わないとかの制約を課しているのかな。
それも配列数式を使えばできます。
例データB3:F5
一番右端G列は=B3*10000+C3*1000+D3*100+E3*10+F3で出したもの
B列  C列  D列  E列   F列   G列
(先頭0は桁ずれ防止のためわざと入れた。本当は不要)
00123123
00356356
013571357

18361836
F7(どこでも良い)
=SUM(B3:B5*10000+C3:C5*1000+D3:D5*100+E3:E5*10+F3:F5)
と入れて、SHIFT+CTRL+ENTERを同時押しする。
(配列数式)
結果 1836
G列のΣと当然一致。
6-7桁になっても式が長くなるだけ。

投稿日時 - 2007-02-11 11:38:17

ANo.12

#1 Cupperです。

解決に至る回答は出ているようですが、こんな方法もあります。

 1 2 3 4 5
A 0 0 0 9 0
B 0 0 2 5 0
C 0 0 3 4 0

と、5桁として回答します。

まずはA~B行の数字を文字列として繋ぎ、数字に直す
 F1=VALUE(CONCATENATE(A1,B1,C1,D1,E1))
 F2=VALUE(CONCATENATE(A2,B2,C2,D2,E2))

続いて合計を出してそれを文字列に戻す
 F3=RIGHT("00000"&SUM(F1:F2),5)
このとき、入力した数値の桁数になるようにRIGHT関数を使います。

各桁をMID関数で抜き出す(結果は文字列になります)
 A3=MID(F3,1,1)
 B3=MID(F3,2,1)
  :
 E3=MID(F3,5,1)
最後に文字ではなく数値にしたい場合は
VALUE関数を使うか
 A3=VALUE(MID(F3,1,1))
元の値が変わらない四則演算をさせます
 A3=MID(F3,1,1)+0
 A3=MID(F3,1,1)-0
 A3=MID(F3,1,1)/1
 A3=MID(F3,1,1)*1
家計簿程度であれば、どちらを使っても問題ありません

F列を使わなくてもできますが、
その場合、関数式が非常に見づらくなります。
 A3=VALUE(MID(RIGHT("00000"&SUM(VALUE(CONCATENATE(A1,B1,C1,D1,E1)),VALUE(CONCATENATE(A2,B2,C2,D2,E2))),5),1,1))
正しく表示が行えることを確認したのちに式をまとめると良いでしょう。

投稿日時 - 2007-02-11 08:09:18

ANo.11

◆こんな方法もありますよ
   A  B  C  D  E  F
1  0  4  5  6  7  8
2  0  5  6  7  8  9
3  0  2  3  0  4  5
4
5  1  2  5  5  1  2

A5=--LEFT(RIGHT(0&SUMPRODUCT(($A$1:$F$4*10^(6-COLUMN($A:$F)))),6-COLUMN(A1)+1))
★右にコピー

◆出来ないわけではありませんが、できれば一つのセルにそのままの桁数の数字を入力した方が、簡単だと思います
◆もしも、桁数を分かりやすくするためだったら、表示形式をユーザー定義で、 # # # # # 0 にするような方法は、いかがでしょうか?

投稿日時 - 2007-02-11 07:06:30

ANo.9

#2、#7です。たびたびすいません(-ω-)
投稿してから、「計算補助を使うことで簡単にできたなら、それを1つの式の当てはめればいいんだ」と気づきました・・・(滝汗)

そういうわけで、
A10にそれぞれを代入・・・&少し改良
=RIGHT(SUM(A$1:A9)+ROUNDDOWN(B11/10,0)+IF(COUNT(C11)=0,0,ROUNDDOWN((RIGHT(B11,1)+ROUNDDOWN(C11/10,0))/10,0)),1)
これを必要な桁まで(それ以上でもOK)コピーペースト

改良したのは数値入力で1桁ごと入れる必要がなくなったときに、1の位に2桁以上の数字をいれても合計は桁ごとにわけるようになってます。
ある数字は桁ごとに、ある数字は1の位にまとめて・・でもできます。

間違いだらけですみませんでした(´・ω・`)

投稿日時 - 2007-02-11 04:20:48

ANo.8

#2、#7です。
計算補助をさせる行を作ることで10個でも100個でも簡単にできました。

※5桁でなくてもOKです。(必ず1の位はそろえてください)
1行目:数値その1
2行目:数値その2
   ・
   ・
   ・
9行目:数値その9
10行目に合計
11行目、12行目に計算補助(邪魔なら文字色を白に^^;)

A10に
=RIGHT(A11+ROUNDDOWN(B11/10,0)+B12,1)

A11に
=SUM(A$1:A9)

A12に
=IF(COUNT(B11)=0,0,ROUNDDOWN((RIGHT(A11,1)+LEFT(B11,1))/10,0))

桁は何万でも何億でもいけます。
数字が更に増える場合は合計と計算補助を下にずらしていけばOKです。
9個数字を入れるようにしてあって、2個しか数字をいれなくてもちゃんと計算します。

投稿日時 - 2007-02-11 03:55:16

ANo.7

#2です、更に修正ごめんなさい(ノ_・。)
=IF(OR(B1+B2>9,AND(B1+B2=9,B3=0)),MOD(A1+A2+1,10),MOD(A1+A2,10))
です・・・

>もし、B3ーF3という5桁の数字が更に増えた場合はどうなるのでしょうか??
3つ以上の数字の場合は繰り上がりが1とは限らなくなるので私のやり方ではできません(´・ω・`)

もし3つ以上なら
例えば
B1~F1:5桁の数字その1
B2~F2:5桁の数字その2
B3~F3:5桁の数字その3
A4~F4:合計
A4に
=IF(AND(MOD(SUM(B1:B3),10)>10-COUNT(B1:B3),MOD(SUM(B1:B3),10)>B4,COUNT(C4)=1),MOD(SUM(A1:A3)+ROUNDDOWN(SUM(B1:B3)/10,0),10)+1,MOD(SUM(A1:A3)+ROUNDDOWN(SUM(B1:B3)/10,0),10))
これをF4までコピーペースト
これでいけると思います(かなりややこしいですが^^;)
数字が4つになったら関数内の3の部分を全て4にして、A5のところに入れれば機能する(はず)です。(同様に5個でも6個でも)
ただし繰り上がりが10以上(数字が11個以上)になるとまた修正する必要があります。

投稿日時 - 2007-02-11 03:09:33

ANo.6

言っていることがよくわかりませんが…
具体的にどのセルにいくつ(A1に20、B1に30…)入っていて、どのセルにいくつ(A2に25、B2に35…)入っていて、どのように計算してその結果をどこのセルに表示させたいのかがわかりません。
>一セル一文字づつ表示させたいです
もしこんなことすると、ちょっと考えただけで数式でifのネストが3つくらい?になる複雑な式になりますよ。

これは下一桁同士を計算させた結果ですが(G12,G13にそれぞれ1桁のデータが入っているとしての結果)
=IF(SUM(G12:G13)>=10,SUM(G12:G13)-10,SUM(G12:G13))
桁があがると下の桁の繰り上がり判定、その結果のその桁の繰り上がり判定…いやめんどくさすぎます。
普通のSUM関数ですることに支障があるのでしょうか?
詳しい情報がないと答えられません。

投稿日時 - 2007-02-11 02:26:18

お礼

そうなんです・・・複雑すぎるんです。
友人が自分で家計簿のテンプレートを作ったけど
数式がわからないからやってと頼まれ・・・。

普通にSUMでサクッとできるかと思ったら
テンプレートを見て愕然としてます・・・。

投稿日時 - 2007-02-11 02:36:56

ANo.5

#2です、さらにミスごめんなさい(´;ω;`)
横に書くのだから
A2~A6ではなく、B1~F1ですね・・・

B1~F1に5桁の数字
B2~F2に5桁の数字
A3~F3に合計
A3に
=IF(OR(A1+A2>9,AND(B1+B2=9,B3=0)),MOD(A1+A2+1,10),MOD(A1+A2,10))
これをB3からF3にコピーペーストです。

投稿日時 - 2007-02-11 02:25:27

お礼

ご解答有難う御座います。
もし、B3ーF3という5桁の数字が更に増えた場合
はどうなるのでしょうか??

自分には難しく少し混乱しています汗

投稿日時 - 2007-02-11 02:34:51

ANo.4

#2です。
ひとつ忘れてました(-ω-)

#2のやり方だと、繰り上がりにより10になった場合が計算されません。
なのでC1に
=IF(OR(A2+B2>9,AND(A2+B2=9,C2=0)),MOD(A1+B1+1,10),MOD(A1+B1,10))
これでC6までコピーペーストです。

#2と違うのは、下の位が0であり、下の位の足し算の合計が9であった場合も+1(繰り上げ)するをいれたものです。

投稿日時 - 2007-02-11 02:20:34

ANo.3

質問者様の内容を整理すると、
1.1セルに1桁の数字を入力する。
2.5セル使うことによって5桁の数字を表示する。
3.合計値の行は桁上がりを考えて6桁とする。

自分の提案を書かせていただきます。(間違えてたらすんません)
1番目の数字 B1~F1
2番目の数字 B2~F2
合計値    A3~F3
1桁目の計算が優先ですのでそっちから書きます。
F3(1桁目)数式 = MID(SUM(F1:F2),LEN(SUM(F1:F2)),1)
E3(2桁目)数式 = MID(SUM(E1:E2)+MID(SUM(F1:F2),1,1),LEN(SUM(E1:E2)),1)
D3(3桁目)数式 = MID(SUM(D1:D2)+MID(SUM(E1:E2),1,1),LEN(SUM(D1:D2)),1)
C3(4桁目)数式 = MID(SUM(C1:C2)+MID(SUM(D1:D2),1,1),LEN(SUM(C1:C2)),1)
B3(5桁目)数式 = MID(SUM(B1:B2)+MID(SUM(C1:C2),1,1),LEN(SUM(B1:B2)),1)
A3(6桁目)数式 = MID(SUM(B1:B2),1,1)

これでご希望の計算はできるはずです。細かい解説は省かせていただきます。必要あればお礼メールからご連絡ください。

投稿日時 - 2007-02-11 02:14:24

お礼

有難う御座います!
参考にさせて頂きます!

投稿日時 - 2007-02-11 02:32:23

ANo.2

>数値は一つのセルに1文字まで入力可能。
>上と同じように1~5桁の数字を入力
>1と2の合計を一セル一文字づつ表示させたい
5桁の数字を1つのセルに1つずつ入れて計算したいってことでしょうか?

その場合なら
A2~A6、B2~B6に1桁ずつ5桁の数字を入れる。
(合計が10万以上になることを考え、A1,B1はあけておく)
それをC1~C6に1桁ずつ合計を出すとします。
(C1は十万の位用)
C1に、
=IF(A2+B2>9,MOD(A1+B1+1,10),MOD(A1+B1,10))
といれてこれをC6までコピーペーストすればできると思います。

簡単に説明しますと
一つ下の位が9より大きい(10以上)なら+1をする。(繰り上がり)
MOD(数値,桁)は、桁で指定した桁数を省略するもので、ここでは10をいれて一の位のみ表示させます。

質問の解釈を間違えていたらごめんなさい(´・ω・`)

投稿日時 - 2007-02-11 02:05:03

ANo.1

足し算であれば
 =A1+A2+A3
など、セルを指定して数式を書けばOK

SUM関数の場合は
 =SUM(A1:A5,A7,B1)
などと 範囲 やセルを指定することで可能になります。


いろいろ試して自分に合った方法を探してください。

投稿日時 - 2007-02-11 01:53:59

お礼

有難う御座います。ちょっと質問の仕方が悪かったかもしれません・・・。

 1
A 90
B 250
C 340 (A1,B2の合計値です。)

このようではなく。
次のようにしたいのです・・・。

 1 2 3 4 5
A 0 0 0 9 0  ←数値1
B 0 0 2 5 0  ←数値2
C 0 0 3 4 0  ←数値1+2をそれぞれのセルへ一ずつ表示

このように数字が一つのセルに一つずつしか入っていない状態で
しかも合計も数値を一つずつセルに入れて生きたいです。
この場合はどうしたらいいでしょうか?

投稿日時 - 2007-02-11 02:03:41

あなたにオススメの質問