- 締切済み
エクセルで空白セルがある場合
A列に数字があり、B列に =a1-a2のように 簡単な計算式があり この計算をした方向へしていきたいのですが、 A列に空白セルがあった場合下方向への計算が出来ません A列が空白の時はB列に直上のA列の値を入れるとかして 空白の次のセルも続けて計算できるようには出来ないでしょうか? 例えばメーターの記録見ないなものと思ってください。下方向へ数字は増えていきます。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
- ASIMOV
- ベストアンサー率41% (982/2351)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! 大きく外しているかもしれませんが・・・ ↓の画像のような感じで良いのでしょうかね? もしそうであれば目を通してみてください。 尚、B3セルに入れる数式は配列数式になってしまいますので、 この画面から単純にコピー&ペーストしただけではエラーになると思います。 B3セルに =IF(A3="","",INDEX($A$2:A3,LARGE(IF($A$2:A3<>"",ROW($A$1:A2)),2))-INDEX($A$2:A3,LARGE(IF($A$2:A3<>"",ROW($A$1:A2)),1))) B3セルに数式を貼り付けた後に F2キーを押すか、数式バー内で一度クリックします。 編集可能になりますので Shift+Ctrl+Enterキーで確定してみてください。 数式の前後に{ }マークが入り配列数式になります。 それをオートフィルで下へコピーすると 画像のような感じになります。 以上、参考になれば幸いですが、 的外れであったり、他に良い方法があれば 読み流してくださいね。m(__)m
- imogasi
- ベストアンサー率27% (4737/17069)
質問内容をはっきり表現すること。 A列に空白行があれば、上からもてそれまでに一番近い行のデータを 持ってきて=A1-A2を計算したい。空白は2行以上続く事がある。 関数ではやりにくい課題だ。 VBAでやれば、上から処理して、今の行が空白なら直前行をセットする 、でよかろう。 Sub test01() d = Range("A65536").End(xlUp).Row MsgBox d For i = 1 To d If Cells(i, "A") = "" Then Cells(i, "A") = Cells(i - 1, "A") End If Next i End Sub 例データ A,B列 右列が処理結果左列のように出来る。 12 12 23 23 23 23 12 12 15 15 15 23 23 23 23 23 56 56 ーーーーーーーーーー 関数では 12 12 23 23 23 23 12 12 15 15 15 23 23 23 23 23 56 56 関数ではA列では出来ないので別列で B1にはA1の12を入れて =IF(A2="",B1,A2) と入れる。 B列をコピーし、形式を選択して貼り付けー値、でA列に貼り付けし、B列を削除。
- Cupper
- ベストアンサー率32% (2123/6444)
できないこともありませんが、面倒ですよ? セルの内容を確認する関数を使って空白ならさらに上のセルを参照するように作るんです 空白セルがひとつだけなら簡単に作れますからチャレンジしてみてください =IF(A2="",A1-A3,A2-A3) など
お礼
ありがとうございました。 もう少し詳しくいうと…… ある間隔でカウンターを書き留めるのですが ついつい忘れてしまうことがあるんです エクセルに数字を入れると前回と今回の差を求めたいのですが 空白セルがあるとうまくできないので悩んでいるんですが…… 空白がないこともあるし 空白の間隔は全く予想が付かないので 何とか便利な方法がないでしょうか 宜しくご教示のほどお願い致します
お礼
ありがとう御座いました! これですっきり解決しました! maxを導き出してくるんですね。考えも及びませんでした。 下に行くに従って増えてくる表って結構あるかと思いますが、 例えば運行管理者が頭を悩ませている燃料統計などにも利用できますね。 本当にありがとう御座いました
補足
更に教えて戴きたいのですが…… grumpy_the_dwarfさんのご教示通りですっきり解決はしましたが B1に A2-A1を求めるときは どうしたらいいのでしょうか よろしくお願いします