- ベストアンサー
エクセル もし、セルが空欄なら、その上のセルの値を入力する
エクセル2002を使用しています。 例えば、A列に順に数値が入っているのですが、ところどころ空欄です。 <こんな感じです。> 12 15 22 33 34 55 <ここまで> 数値は、連番ではありません。不規則です。約300行あります。 本当は、空欄の場所は一つ上のセル数値が入るのです。(連続して空欄になっているところも、一つ上の数値と同じ値が入るのです。) <上の例を当てはめると> 12 15 22 22 ← 33 34 34 ← 34 ← 55 <ここまで> こんな感じにしたいのです。 関数などで一つのセルに入力して、あとはフィルドラッグでコピーするなんていう便利な方法はありませんか? すでに入力している数値が消えないようにしたいのです。 よろしくお願いいたします。
- saitama090
- お礼率90% (140/154)
- オフィス系ソフト
- 回答数13
- ありがとう数19
- みんなの回答 (13)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず数値の範囲を選択 F5キーを押してセル選択で定数を選択(文字を除くなら数値のみチェック) これで空白のセルが除外されます。 ここでコピーして張り付ければいいかと...
その他の回答 (12)
- imogasi
- ベストアンサー率27% (4737/17068)
まとめ (1)質問者の言うように、A列!で式を入れて自動複写のようなことは、絶対できません。 一回限りなら下記でできます(B)。 (2)例えばB列を一旦使い、 B1に =IF(A1<>"",A1,MAX($A$1:A1<>"",$A$1:A1,0)) と入れてSHIFT+CTRL+ENTERを押す。 そしてA列に値だけ複写する。それならできますが、A列を変えると 連動性はありません。 (3)VBAなら数行でできる。ロジックも簡単で、上行から順に考えて空白なら、上の行の値をとる。 連動性はない。その都度再実行が必要。 (2)のデータ例 1 1 2 2 3 3 3 3 3 6 6 6 8 8 8 2 2 (1)で書いた方法。自動ではないが F1:F131 - 2 - - 5 - 6 - - - 2 - ーは空白セル F2に=F1 このセルをCTRL+Cでコピー 空白セルの最初F4をクリック CTRLを押しながら、空白セルの F5,7,9,10、11,13セルをクリック 貼り付け 結果 1 1 2 2 2 5 5 6 6 6 6 2 2 となります。
お礼
仮にB列を使うということが便利だとわかりました。 ありがとうございました。
- ham_kamo
- ベストアンサー率55% (659/1197)
No.8です。 F列を処理したいのであれば、 For Each R In Range("A1", Range("A65536").End(xlUp)) の行を、 For Each R In Range("F1", Range("F65536").End(xlUp)) と2箇所修正してください。
お礼
すみません。 大変助かりました。 今、マクロの初心者向け参考書を読み始めたところです。 勉強になりました。 ありがとうございました.
- Ce_faci
- ベストアンサー率36% (46/127)
NO1です ごめんなさい A1のところをB1に変えてください
お礼
うまくできました。 ご親切にありがとうございました。
- gyazae
- ベストアンサー率40% (8/20)
ANo.7の者です。 私の環境(Excel2003)ではうまくいったのですが・・・ うまく再計算されていないのでしょうか。 B 列の途中に空欄があると、そのような状況になってしまうでしょうが。 ANo.6の方法が一番手っ取り早いかもしれませんね。 1.A4 に =A3 と入力 2.A4 をコピー 3.A 列を選択して、F5 -> セル選択 -> 空白セル -> OK 4.貼り付け
お礼
大変すみませんでした。 私の入力ミスです。 教えていただいたB1の箇所を誤ってA1にしてしまっていました。 教えていただいた式は問題なく作動しました。 大変失礼しました。 また、F5キーのやり方についても、 4.貼り付け と書いていただいたので、恐る恐る貼り付けアイコンをポチッと押したら、すべてうまくいきました。すごい機能ですね。 ありがとうございました。
- MIKAN01234
- ベストアンサー率57% (4/7)
すいません。( > < ) ANo.5です。 間違ったまま投稿してしまいました。 =IF(A1="",#REF!,A1)ではありません。 1行目は =A1 で、2行目に =IF(A2="",A1,A2) を入れてあとは、これをコピペです・・・ これを1行目にコピーすると上の=IF(A1="",#REF!,A1)となってしまうので、それに気が付かずそのまま投稿してしまいました。 すいません。 #REF!はエラーですので・・・本当にすいませんでした。 ようするにANo.3さんと同じです。 でも、これだと2行入力しないのが続くと・・・という問題があるので =IF(A2="",B1,A2) そ、参照するのを同じ列の上の行の数字にしました。 これで、いくら入力しない行があっても大丈夫です。 m(_ _)m
お礼
できました。 なるほどーと思いました。 ありがとうございました。 また、別の回答者の皆様にこの欄を借りてお詫びいたします。 後から、補足欄で2行入力しないのが続くとできませんと訴えましたが、B列の一つ上を参照している式に対し、私が入力ミスでA列の一つ上を参照するようにしてしまいました。 すみませんでした。
- ham_kamo
- ベストアンサー率55% (659/1197)
マクロを作ってみました。 シートタブを右クリックして「コードの表示」を選択するとVBAの画面が出るので、右の画面に以下のマクロをコピーして貼り付け、F5キーを押して実行してください。 Sub FillBlank() Dim R As Range For Each R In Range("A1", Range("A65536").End(xlUp)) If R.Value = "" Then R.Value = R.Offset(-1, 0).Value Next End Sub
お礼
恐れ入ります。マクロまで作っていただいて。 ありがとうございます。 大変参考になりました。 勉強させていただきました。
補足
貼り付けましたら出来ます。さすがマクロですね。 説明を省いた私のミスなのてすが、実際に作業する列は、F3からF322までです。 いただいたコードの For Each R In Range("A1", Range("A65536").End(xlUp)) のA1を勝手にF3にして貼り付けました。(勝手ですみません) すると、A列からF列まですべて同じように空欄がある場合は上の行をコピーするようになってしまいました。 AからE列まではコピーしないようにするには、どのようにするものでしょうか。 すみませんが、教えていただけるでしょうか。 よろしくお願いいたします。
- gyazae
- ベストアンサー率40% (8/20)
既に入力している数値が消えないようにする、というのは難しいですね。 上の例で考えると、 1. A4 に =A3 と入力 2. A4 を全ての空欄(A7, A8等)に対してコピペ という手順になるでしょうか。 ただ、これだと面倒なので、もし私がやるのであれば次の通りにします。 3. B1 に =A1 と入力 4. B2 に =IF(ISBLANK(A2), B1, A2) と入力 5. B2 を列の最後までコピペ(フィルドラッグ) 6. A 列を必要に応じて非表示化 以上、参考になれば。
お礼
いろいろな関数があるのですね。 ISBLANKは種類としては見たことがありましたが、使ったことはありませんでした。 勉強になりました。
補足
すばらしい方法だと思うのですが、A列に空欄が2行以上続くと、2行目以降が0になってしまいます。 どうしたらよいものなのでしょうか。 ありがとうございます。
- MIKAN01234
- ベストアンサー率57% (4/7)
もっとうまいやり方があるかもしれませんが、一例として・・・ 関数の入った表示される列と、空欄のある入力の列とに分ける。 これは、「すでに入力している数値が消えないようにしたい」という事の為の措置です。 ~例~ A列には空欄のある 12 15 22 33 34 55 を入力する B列には その結果 12 15 22 22 ← 33 34 34 ← 34 ← 55 と表示される為の関数を入力する。 その関数は =IF(A1="",#REF!,A1) こんな感じ これは、B列1行目に入力する関数 あとは、B列にこれを全てコピペすれば希望通りに表示されます。 印刷などする場合は、A列を非表示(折りたたんで)にして印刷すればOKです。 こんなしょぼいやり方じゃなくやれる方法があるかもしれませんが・・・書いておきます。
お礼
これは全く初めて見るコード?です。 #REF!ですか。興味がわきました。 ありがとうございました。
補足
B列に入力し、フィルドラッグでコピーしましたが、隣が空欄のセルですと、 #REF! と表示されてしまいます。 どうしたらよいのでしょうか?
- zap35
- ベストアンサー率44% (1383/3079)
#02です =IF(A2="",OFFSET(A2,-1,0),A2) の誤りでした。 なおOFFSET関数を使用したのは行削除を行ったときに、その行を参照している式が#REF!エラーとならないようにするためです。
お礼
ありがとうございます。 行削除までは私も気がつかなかったのですが、確かにその可能性はあります。 お心遣い感謝いたします。
- merlionXX
- ベストアンサー率48% (1930/4007)
A列にはA1から下にデータがあるものとします。 B1に =A1 B2に =IF(A2="",B1,A2) といれて、B2を下までフィルドラッグでコピーします。 これで、B列に隙間無く数字が入ったと思います。 次ぎに、B列をコピーし、A列に、メニューの編集で「形式を選択して貼り付け」で「値」を貼り付けます。 B列の式をけします。 これでいかがでしょう?
お礼
出来ました。 なるほど、「一つ上」というコードがあるのではなく、一つ上のセルを指定して、ドラッグすれば適宜ずれていくのですね。 エクセルは初心者なもので、考え方まで教えていただき、ありがとうございました。 また、貼り付け方法も解説いただき、感謝いたします。
補足
すばらしい方法だと思うのですが、A列に空欄が2行以上続くと、2行目以降が0になってしまいます。 どうしたらよいものなのでしょうか。 ありがとうございます。
- 1
- 2
関連するQ&A
- Excel セルが空欄なら、その上のセルの値を入力
Excelを使用しています。 A列に作業開始時間、B列に作業時間と入力した場合、 A列にB列の作業時間を足した時間を数式で簡単に表示したいですが 途中で空欄がある場合はその上のセルの時間に隣のB列の作業時間を合計した値を表示したいです。 <イメージ> ===================== A列 B列 12:00 00:05 12:05 00:05 12:10 00:10 12:20 00:15 12:35 00:05 12:40 00:15 ===================== 作業時間と空欄の行数は不規則です。 関数などで一つのセルに入力して、あとはフィルドドラッグでコピーする便利な方法はありませんか? よろしくお願いいたします。
- ベストアンサー
- Excel(エクセル)
- エクセルで空欄を探して入力する関数は?
エクセルでシート2のどのセルに入力してもその入力した値がシート1上でA1からA2・・・と順にもし、A1が空欄でなければ空欄の次のセルに入力する、という風な関数、方法を教えてください。
- 締切済み
- オフィス系ソフト
- 結合されたセルに連番を振るには?
Microsoft Excelでの質問です。 表を作成しました。 結合セルが複数ある1列に(セル数はまちまち・複数の列には非結合)、 昇順で連番を入力しようと、 いつものようにオートフィルでズリズリっとドラッグしようとしたところ、 「この操作には、同じサイズの結合セルが必要です」 と出てしまいました。 オートフィルを使用せず、このようなセルに連番を入力するにはどうしたらよいでしょうか? 色々と調べてみましたが自力では解決できませんでした。適当な関数があるような気もするのですが…。 ぜひご教示ください。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセル97です。表中の空白セルに0を入力する関数を教えてください。
数値が入った表があります。 ところどころに数値の入っていない空白セルがあります。 そのセルに0を入力する関数を教えてください。 入力後、その表からグラフを作成したいので、文字列ではなく数値でないとダメですよねぇ?
- ベストアンサー
- オフィス系ソフト
- セルの値により入力を制限したい
EXCEL2013を利用しています。 セル入力の制限方法について助言賜りたく投稿させていただきました。 行いたいこととしまして、 ・セルA1には数値を入力します。 ・セルA1に2ケタ以上の数値が入力された場合はメッセージを表示させます。 ただし入力はできます。 ・セルA2に"済"と入力された場合は、セルA1は入力できません。 ・シート全体としては、奇数行は数値入力、偶数行は”空欄”か”済”とします。 ”済”の参照は、A1はA2を参照、A3はA4を参照、B1はB2を参照、C3はC4を参照、・・・といった具合に、範囲はA1~NG200、同様のシートが30枚、に対し上記条件を適用させたいです。 といったことを行いたいのですが、可能でしょうか? 自分では、 A1の入力規則へ、A2=" " と設定する。(A1~NG200のすべてに適用させる) A1~NG200の範囲に対し、>10 の場合はメッセージを出す としたいのですが、手段を思いつけせんでした。。。
- ベストアンサー
- Excel(エクセル)
- エクセル関数と連番入力について
エクセル関数と連番入力について 下記画像のような表をエクセルで作成しています。 商品の売却と一部売却、返品について管理しています。 今、A列のナンバーを手打ち入力(オートフィル)している のですが、返品が多くなり、ナンバリングを誤入力 する可能性が出ています。 そこで、誤入力を防止するためにセルに関数を入れて ナンバリングする方法はありますか。 返品の行がいくら多く挿入されても、ナンバーリングに 影響しないようにしたいです。 ナンバーの種別は 1 売却 2 一部売却 3 返品 の3つがあり、1と2は共通した連番になっていて、返品は 別番号になります(空欄でも構いません) よろしくお願いします。
- ベストアンサー
- オフィス系ソフト
- Excelのセルの値が正しく表示されません
Excelで関数式を入ました SUMで 69 68 76 85 0 55 82 24 15 22 87 ↑をたすのですが、 合計が583になるところ、ドラッグして表示を見ると583になっているのですが 623と表示されます。 セルの書式設定は『数値』となっており、隣のセルは正しい数値が返されます。 どうすればいいでしょうか? WindowsXP Excel2007です 宜しくお願いします。
- 締切済み
- その他MS Office製品
- EXCEL2000で文字が入力されているセルの値を取り出したい
同じ列に数値や文字が混在して入力されています。 これらの中から文字が入力されているセルの値を別のセルに取り出したいのですが、何か便利な関数はありますでしょうか? ちなみに、編集-ジャンプ-セル選択で文字を指定して文字列が入力されているセルのみを選択することは出来ても、それらのデータがばらけているとコピーが出来ません。 アドバイスをお願いいたします。
- ベストアンサー
- オフィス系ソフト
- エクセルで空欄と0について
たとえばIF関数を使って、セルA3に IF(A1=1,A2,"") と入力、A1が1でA2が空欄(データがない状態)の場合、A3には空欄ではなく0が表示されるんですがなぜでしょう。また、0ではなく空欄を表示してほしいのですが、どうすればいいのでしょう?
- ベストアンサー
- Excel(エクセル)
- エクセル2000です。
エクセル2000です。 関数のオートフィル(連続データの作成)について 例えば =SUMPRODUCT(($A$1:$A$100=1)*($B$1:$B$100=2)) という関数がはいったセルを セルの右下でポインタが+になった状態で 下方向にドラッグした場合 セルのコピーではなく =1のところや、=2のところだけを 1.2.3.4.5・・・と増やしていくことは 不可能でしょうか? 不可能であれば何か別に便利な方法は ないでしょうか? ご教授お願いします。
- ベストアンサー
- オフィス系ソフト
補足
関数を使わない方法をご提示していただきありがとうございました。 しかし、順に作業したのですが、 >これで空白のセルが除外されます。 ここまでは、できました。 >ここでコピーして張り付ければいいかと... この部分がわかりません。 空欄になっているセルは不規則ですので、手作業で作業することになるのでしょうか? それとも、簡単にコピーできるのでしょうか? F5キーの使い方は知らなかったので、今後活用したいと思います。 ありがとうございました。 できましたら、再度解説をいただけると嬉しいです。よろしくお願いいたします。