- ベストアンサー
ゼロでない値のうち最後のものを返す
上から順に数値を入力する1列30行の表があります。 数値はすぐ上の値を更新した値を入力していきます。 31行目には最終値として、最後に入力された値を出したいです。 例えば16行目までしか入力されなかった場合、17~30行目は空白のまま残しつつ、31行目には16行目の値を出したいです。 これらを自動で判別して値を返してくれるようにするには、どんな関数を使えばよいでしょうか?
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
幾つかのやり方があります。 その前に、現金残高の計算をするため、「(前期からの)繰越残高」の数字がどこかにあるはずです。 1行目の残高は、繰越残高+1行目の収入-1行目の支出のように計算されます。 2行目以降の残高は、一つ上の残高+収入-支出のように計算していますね。 (1行目を必ず前期繰越として収入として扱っているのなら、それはそれでも構いません) 方法1:推奨 >最後に入れたセルと、31行目の最終残高のセルの間は全てゼロ値となります。 まだ収入・支出の数字を入れていない(あるいは項目を記入していないなどの)行について、残高を計算してしまわないように細工をしてゼロを計算させていますね。 これを、ゼロじゃなく""を計算するように仕込んでおけば、先に回答したやり方で計算できます。 計算の例: =IF(COUNT(当該行の収入:支出セル範囲)=0,"",ひとつ前の残高+当該行の収入-支出) 方法2:お勧め そもそも「最後の数字を引いてくる」のをやめます 最終残高は「前期繰越+収入総計-支出総計」で計算できます。 =前期繰越+SUM(収入欄)-SUM(支出欄)
その他の回答 (2)
- bunjii
- ベストアンサー率43% (3589/8249)
対象をA列とすれば次の式で良いと思います。 A31=INDEX(A1:A30,SUMPRODUCT(MAX((A1:A30<>0)*ROW(A1:A30))),1)
お礼
ご回答ありがとうございます。しかし試してみましたが上手く行きませんでした。私の質問が悪かったかもしれません。申し訳ありません。
- keithin
- ベストアンサー率66% (5278/7941)
>数値はすぐ上の値を更新した値を入力していきます 上から隙間を空けず詰めて数字を記入しているという約束なら、簡単に =INDEX(A1:A30,COUNT(A1:A30)) などのようにして、記入済みの数字の個数を数えて拾ってくるので十分です。 実際には1行目にタイトル行を記入しているなど、あなたの具体的な表のレイアウトに応じて手直しをして計算してください。 #参考 >ゼロでない値のうち最後のものを返す そういうご相談になっているというのは、ゼロという数字を記入する予定があるのか無いのか、具体的にどういうところが気がかりなんでしょうか? また何か複雑な判断をしなきゃならない場合でも、ご利用のエクセルのバージョンに応じて少しでも簡単な計算で済ませられる場合もあるかもしれません。ご相談投稿では、普段ご利用のソフトのバージョンまでキチンと明記/補足してください。
補足
失礼しました。エクセル2013を使用しています。以下、さらに詳しく作りたい表を書きます。 ・30セル用意した「現金残高」という欄を上から順に記入していきます。収入・収支があるごとに一つ下に変化後の値を記入していきます。 例) 現金残高 3000 2000 2500 4000 … ・一定期間内に収入収支の回数が30回未満の場合、最後に入れたセルと、31行目の最終残高のセルの間は全てゼロ値となります。 毎度30セル全てに入力するのがわかっているのならば最後のセルを最終残高としたいのですが、残念ながら毎度違い回数となります。ゆえにゼロ値でない最後の値を31行目に返すようにしたいのです。
お礼
方法2を見て、そういえばそうだ、と我ながら恥ずかしながら気付き、上手くいきました。 また、後学のため方法1も試したところ、上手くいきました。 何度もご回答いただきありがとうございました!