• ベストアンサー

エクセルで困ってます

現在家計簿的なものを作っています。 足し算のところで調べてもお手上げ状態です。 現在わからないところは下記になります。 1、セル5つ(横一列) (数値は一つのセルに1文字まで入力可能。 つまり1~5セルの数字を入力できます。) 2、セル5つ (ここにも上と同じように1~5桁の数字を入力します) 3、セル6つ (ここに1と2の合計を一セル一文字づつ表示させたいです。) つまり1+2=3にしたいです。 一セルなら普通にSUMとやってできるのですが、1~5のセルにそれぞれ 数字を入力していくのでどうやって計算したらいいかわからないです・・・。

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

  • ベストアンサー
  • h-mique
  • ベストアンサー率50% (16/32)
回答No.10

#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などの補助計算のセルが指定されてしまっていた。(´・ω・`) 今度こそ間違いはないです。申し訳ありませんでした(-ω-)

bita123
質問者

お礼

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

その他の回答 (13)

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

自分以外が使うBookで補助セルを使うと面倒になるケースが多いですね。行が増えると算式を追加する必要があるのが典型でしょうか。 質問のような要求は結構あって、何回か対処しました。 決まった書式(書類)があってその枠内に文字単位で書いて欲しいとか、子供に足し算や引算を教えるときに1文字ずつ変化させたいなど。 なかなか要求を否定できないですね。全加算機のような動きを表現することになります。 質問に対しては、  ・補助セルを使わない  ・任意の複数行に対応  ・SUMと同じように使う  ・何桁目かを意識しない算式にする  ・横方向に算式をコピーできるようにする  ・マイナス(記号-)も扱える  ・対象は整数とする。(小数点までは拡張しない) のようにしてみました。(この制約なら、VBAしかないでしょう) ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入し、そこに貼り付けます。 __A_BCDEFG 1 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

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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は桁ずれ防止のためわざと入れた。本当は不要) 0 0 1 2 3 123 0 0 3 5 6 356 0 1 3 5 7 1357 1836 1836 F7(どこでも良い) =SUM(B3:B5*10000+C3:C5*1000+D3:D5*100+E3:E5*10+F3:F5) と入れて、SHIFT+CTRL+ENTERを同時押しする。 (配列数式) 結果 1836 G列のΣと当然一致。 6-7桁になっても式が長くなるだけ。

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.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)) 正しく表示が行えることを確認したのちに式をまとめると良いでしょう。

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.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 にするような方法は、いかがでしょうか?

  • h-mique
  • ベストアンサー率50% (16/32)
回答No.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の位にまとめて・・でもできます。 間違いだらけですみませんでした(´・ω・`)

  • h-mique
  • ベストアンサー率50% (16/32)
回答No.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個しか数字をいれなくてもちゃんと計算します。

  • h-mique
  • ベストアンサー率50% (16/32)
回答No.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個以上)になるとまた修正する必要があります。

回答No.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関数ですることに支障があるのでしょうか? 詳しい情報がないと答えられません。

bita123
質問者

お礼

そうなんです・・・複雑すぎるんです。 友人が自分で家計簿のテンプレートを作ったけど 数式がわからないからやってと頼まれ・・・。 普通にSUMでサクッとできるかと思ったら テンプレートを見て愕然としてます・・・。

  • h-mique
  • ベストアンサー率50% (16/32)
回答No.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にコピーペーストです。

bita123
質問者

お礼

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

  • h-mique
  • ベストアンサー率50% (16/32)
回答No.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(繰り上げ)するをいれたものです。

関連するQ&A

  • 多分出来ないと思いますが、エクセルで教えて下さい

    一つのセルに4桁の数字が沢山入っています。 例えばセルに「1234」と入っていたとします。 これを一桁づつ足し算(1+2+3+4)すると合計10に成ります。 各数字を一つづつセルに入れれば足し算の合計は出来るのは知っていますが、一つのセルに4桁入っていたら一桁づつの合計は出来ませんよね。 又この4桁を一度に4個のセルに移し変える事も不可能ですよね。 何か方法は有るのでしょうか? 何分初心者ですので宜しくお願い致します。

  • エクセルで合計値が計算されない

    横一列のセルを選択してその右隣のセルに合計値を表示させたいのですが、普段は出来るのに突然計算されずに0を表示する事があります。 セルの中はきちんとSUM(C4:H4)となっていますが、どうして計算されないのでしょう?

  • エクセルのセル内に文字と計算結果の表示

    エクセルの1つのセル内に文字と計算結果の両方を表示させる方法を教えて下さい。 例えば、セルのA1に数値10を入れて、B1に数値5を入れてあったとします。 で、セルのC1にA1とB1の合計を「合計 15」みたいな形で、文字と計算結果の両方をC1のセル内に表示させたいのですが。 ただ合計の数字のみを表示させるなら、=SUM(A1+B1)で良いわけですが、この数値の前に”合計”という文字を入れたいのです。 宜しくお願いします。

  • エクセルで関数SUMなどで

    エクセルで関数SUMなどで 合計を求めた数値が、あるセルにあるとします。 その合計の数値を、そのまま数字として ・・・(関数(計算式)は無くして) 他のセルに貼り付けたいのですが そのような事は出来ますでしょうか・・・。 御教示の程、よろしくお願いいたします。 <m(__)m>

  • エクセルでの、たし算方法は?

    私は計算と言うと エクセル位しか知らないんですが 今迄、使った事が、ありません で、現在、平均点の計算を、してるんですが 今迄は、3ケタの数字をメモ帳に入力 それを数十個入れた後、全部を足して 平均点を出してました ちなみに入力方法は 「a652 597 b484 417 c589 688 d477…」 なんですが、数字の前に アルファベットを入力してのは 入力数を分かり易くする為で 例えば「j600」迄の入力で、平均点を出す場合 いちいち、全部の数字の数を数えなくても “j”はアルファベットの10個目ですから 10×2で、合計20個で割ってました しかし、足し算は計算機を使用してましたから 入力ミスを、する時や時間が掛かる為 これをエクセルで出来ないかと考えました ハッキリ言って、数字を入力する時に 一緒に計算機で、同時計算をすれば、一番早いんですが 入力するのに時間が短く 計算機で同時計算の余裕がありません ただ、自分でもエクセルの使用方法を検索等で調べたんですが 私が分かったのは 1セル(?)の中に全ての文字を “+”で入れて合計を出す方法と セルの中に、数字を入れて 後からセルと“+”で合計する方法です でも、全ての数字と“+”では 1セルの中が見え難くなりますし 入力後にセルと“+”では二度手間で しかも、クリックの押し間違いが出る時があります そこで聞きたいんですが セルの中に数字を入れながら、自動で計算出来る… 又は、平均点も簡単捜査で出来る方法を 御存じないでしょうか?

  • エクセルの関数 一列おき 文字列は無視

    どなたかお助けください。 一列おきに合計するとともに、文字列の入力された セルを無視する(エラーにならないように)ことはできますか? 連続したSUMなら文字を無視することは知ってるのですが。 よろしくお願いします。

  • エクセル「数字の出現個数の計算式について」

    お世話になります。 あるセル(A1)に(112345)という6桁の数値が入っています。この数値を構成する数字は5種類(1,2,3,4,5)になります。 この5と言う数字をB1セルに出す計算式は「=SUM((FIND({1,2,3,4,5,6,7,8,9,0},A1&1234567890)<=LEN(A1))*1)」だとあるサイトに出ていましたが、私にはこの計算式の意味がどうにも分かりませんでした。 どのようにしてこの計算式がなりたっているのかご教示いただければと思います。

  • エクセルで

    エクセルについてお伺いします。例えばセルA1に10%、A2に20%のパーセンテージで入力された値は合計は出せないのでしょうか。SUM関数で出すとエラーが出てしまいます。それと、数式を入力したセルの数値の値の合計も出ないのでしょうか。例えばあるセルに=A1+B1,もう一方のセルにA2+B2と入力されていてそれぞれ数値が5と4とします。合計9を出したいのですが、数式のためSUM関数では合計できません。何か方法はありますか。

  • エクセル2003 計算されないようにしたい

    例 A列     B列  1     =A1+A2  2     =A2+A3  3     =A3+A4 (A4は空白です) となっている場合に B1=3 B2=5 B3=3 になると思うんですが この時に空白のセルと計算結果を出すときは0もしくは 計算されないようにしたいです。 最終的にB列にSUM関数を使って合計を出したいのですが A列に求めたい数字が片方しか入ってない場合 (数字が入っているセル+空白セル)はSUM関数の合計に入れたくないです。 なので上記の例では B列にSUM関数をした場合11ではなく8にしたいです。 それには文字列を入力して#VALUE!にするしかないですか? でもその状態にしてSUM関数で合計を出したときも#VALUE!になってしまいます。 よろしくお願いします。

  • エクセルの合計値が一致しません

    A、B、C、D各シートの「J45」セル合計値を求めるべく、 合計 start A B C D end とシートを7つ並べて 合計のシートの「J45」セルに、 『=SUM(start:end!J45』と関数を入れています。 AのJ45セル値が14.53、Bは139.58、CとDはそれぞれ0なので合計が154.11となり、 合計シートのJ45セル値も145.11と表示されていますが、 ステータスバーには153.18と表示されているのです。 表示形式は「数値」の小数点以下2ケタを指定しています。 A~Dのシートには小数点2ケタの数字を直接数字を入力しており、 小数点以下3ケタより下が隠れている、なんてことはありません。 なぜセル内に表示されている数値と、ステータスバーに 表示されている数値にアンマッチが発生するのか、私には理解できません。 理由の分かる方、どなたか教えていただきますよう宜しくお願い致します。

専門家に質問してみよう