- 締切済み
エクセルで・・・
こんばんは。 質問をうまく伝えられないので,例で書かせてください。すみません。 例えば毎月1日~31日まで毎日1個ずつ何らかの数字を入力し(A1~A31) B1とA2の合計(=前日までの合計と今日の数値)を(B1~B31)に表示し,最後のB31の数値をB32に表示します。 この場合,B32に「=B31」にすれば表示されますよね。 では,このシートを毎月使用するとしますと, 30日や28日で終わる月が出てきます。 そうするとこの月はB31が空欄になるのでB32には何も表示されません。 B32に,常に最後の数値 (30日の月はB30,28日の場合はB28)が表示されるような関数などがありませんでしょうか。 if関数を使うと,この例の場合ならできますが 仮に入力項目が5件の月もあれば25件の月もある・・・のような場合 地道にif関数を使って作るのは面倒です。 何か良い方法がありませんでしょうか。 どうぞよろしくお願いいたします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- oioioioioio
- ベストアンサー率38% (24/63)
質問例に入れる式として以下があります。 =IF(AND(NOT(A1=""),A2=""),B1,IF(AND(A1="",A2=""),"",B1+A2)) この式をB2に入力します。(B1は「=A1」と入力) あとは任意のセルまでオートフィルでコピーします。(B30でもB100でも) コピーしたB列のどの行で終わっても最後の数値が出てきます。 ちょっと複雑ですが簡単な関数で作ってみました。 ifを使ってますが式を入力してコピーするだけなので良いかと思われます。 応用次第で結構役に立ちます。(特に計算書)
> 仮にBの数値を出すまでに多数の計算が必要な場合・・・ > 例えばBではなく,最終値を表示するのがXで, > A~Wまでの数値を使用して複雑な計算をした結果がXである場合など > そういうときはXの数値を使えると便利ですよね。 > このような場合に何か方法があれば,応用として(?)教えてくださると嬉しいです。 ???単にX列のセルを参照すればいいだけでは?「=X30*2」とか... Xの内容が複雑な計算結果であろうがなかろうがXの値は単純にXを参照すればいいと思うのですが、 私が、質問の意味を取り違えているかなぁ。
- mu2011
- ベストアンサー率38% (1910/4994)
以下の方法で如何でしょうか。 過去例であった、行の最終数値を取り出す方法です。 B32次の関数を設定して下さい。 =INDEX(A:A,MATCH(MAX(A:A)+1,A:A,1))
- zenjee
- ベストアンサー率47% (50/106)
No.4です。回答に誤りがありましたから訂正します。 後段の式の入力セルを「X31」していましたが、「X32」の間違いでした。すみません。 もちろんこれはデータ入力セル以外であればどこでも(例えば「Z1」でも)結構です。 前段の式も同様にデータ入力セル以外であればどこに設定しても構いません。
- zenjee
- ベストアンサー率47% (50/106)
X列の最終行が28行のときもあれば31行のときもあるので、どの場合でもX列最終行のセルの数値を単純にX32に出したいということでしょうか。 もしそうであれば次でいかがでしょうか。 このX列中の数値が仮に1000000を超えるものがないと仮定すると最も簡単な式は =LOOKUP(1000000,X1:X31) でOKです。この式の意味は1000000という検索値がX1からX31までに存在するかどうかを検査して、もしなければX32に最も直近上の行の数値を返す、という意味です。 数値の最高がもっと多ければ1000000の代わりに「100^10」(100の10乗)でも構いません。 次の方法はX31に =INDIRECT(ADDRESS(COUNTA(X1:X31),24)) の計算式を入力しても可能です。 この式の意味はX1からX31までに入っているデータの個数をCOUNTA関数で計算し、(それが行数になりますから)ADDRESS関数でその行数と列番号(Xは24列目ですから)で最終行のセル参照(例えば30日が最終行ならセル参照は「X30」となりますね。)を返し、INDIRECT関数でそのセルの数値を返す、という意味です。 どちらかで試してみてください。
お礼
こんばんは,ご回答ありがとうございます。 私の知らない関数が(知っているほうが少ないので当然ですが)たくさん出てきて エクセルってすごいんだなーと思っているところです。 勉強させていただきありがとうございます。 LOOKUPを使う方法で試したところ,しっかり思い通りになりました。 エクセルのヘルプを参照して どういうときにLOOKUP関数を使用するのか見ましたがはっきりとは理解できませんでした。 なんとなくは分かったのですが・・・。 こちらについて詳しくはまた項目を改めて質問させていただきたいと思います。 そのほうがいいですよね。 また,残念なことですがINDIRECT関数の方はできませんでした。 と言うよりも,私のやり方が間違っているのだと思います。 何しろ知らない関数が3つも組み合わさっているのですから・・・ もう少し時間がかかりそうですが,がんばってやってみます。 もし質問を見かけられた際には是非またお願いいたします。 ありがとうございました。
- oyaoya65
- ベストアンサー率48% (846/1728)
B32を =SUM(A1:A32) としてはいかがですか? また、B1は =A1 とし B2は =IF(A2="","",B1+A2) B3からB31までは セルB2を 黒の「+」マークを表示させた状態で 一気にドラッグしてコピーしたらいかがでしょうか? 目的のようなシートができると思います。
補足
こんばんは,ご回答ありがとうございます。 #2さんと同じくSUMを使ったご回答ありがとうございます。 私は計算してBに表示した数値を使うことしか考えていませんでした。 おはずかしい。。。 ところで 仮にBの数値を出すまでに多数の計算が必要な場合・・・ 例えばBではなく,最終値を表示するのがXで, A~Wまでの数値を使用して複雑な計算をした結果がXである場合など そういうときはXの数値を使えると便利ですよね。 このような場合に何か方法があれば,応用として(?)教えてくださると嬉しいです。 ありがとうございました。
- kaisendon
- ベストアンサー率44% (114/257)
こんばんは No.1さんの方法でもいいでしょうし 単純に =SUM(A1:A31) としてもいいと思います。
補足
こんばんは,ご回答ありがとうございます。 あ,そうか,そうですよね・・・単純にsumでAの方の数値を使えば プラス増でもマイナス増でも大丈夫ですね。 なんだかBの数値を使うことにとらわれていました。 仮にBの数値を出すまでに多数の計算が必要な場合・・・ 例えばBではなく,最終値を表示するのがXで, A~Wまでの数値を使用して複雑な計算をした結果がXである場合など そういうときはXの数値を使えると便利ですよね。 このような場合に何か方法があれば,応用として(?)教えてくださると嬉しいです。 ありがとうございました。
- yyffttyy
- ベストアンサー率10% (6/56)
max関数を使って、max(B1:B31)としたら、どうでしょうか。 間違っていたら、ごめんなさい。
補足
こんばんは,ご回答ありがとうございます。 私の書き方が不適切でした。すみません。 毎日の合計と申しましても,プラス増,マイナス増がありまして 単純に月末が最大になるわけではないのです。 教えてくださった方法ですと,範囲の中にある最大値があらわされるんですよね。 お手数をおかけし大変申し訳ありませんが 月末が最大になるわけではないということを考慮して,さらに何か方法がございましたら ぜひご教示くださいませ。 どうぞよろしくお願いいたします。
お礼
補足してくださりありがとうございました(*^^*)