- ベストアンサー
空白セルに自動で値を入れたい
どなたかご教授賜りたく・・・。 エクセルの表(具体的にはピボットテーブルをコピーして値を貼り付けた)で、列ごとで値と空欄のセルが混在しています。 基本的に空白はその列の直近の上の値が入ります。 1行空欄ならそのすぐ上の値、2行空欄があってもやはり上の直近の値が入ります。 例) A 1 ○○○ 2 3 ○△○ 4 5 ↓ A 1 ○○○ 2 ○○○ 3 ○△○ 4 ○△○ 5 ○△○ という風にしたいのです。 現在、オートフィルタで空白だけをソートして、Ctrl+Dをひたすら押し続けて上の値をコピーしていますが、数百行もあれば手の指が疲労して硬直してしまいます。 関数を使って自動で入れる方法はありませんでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
遅まきながら 関数を使ったではないのですが、 まずA列すべて選択→編集→セル選択→空白セル A2がアクティブ状態になっていると思いますが、この状態で数式バーに=A1と入力後shift+ctrl+Enterキーで確定 目的の結果が得られるかと。 はずしてましたらすいません。
その他の回答 (5)
- hirorin00
- ベストアンサー率50% (446/884)
ヨコから失礼いたします。 >「 =IF(A2="",C1,A2) 」を言葉にすると >どういう風に読むのですか? このセル(この場合C2セル)には、もしA2が空欄だったらC1(C2の上)の値を入れ、空欄ではなかったら(そのまま)A2の値を入れる。 …という意味になります。 つまり空欄ではなかったらその値を、空欄だったら一つ上の値を、ということです。 上から順次下がってきますので、空欄が続いていても、順次埋まっていくようになります。
お礼
なるほど・・・・ ご丁寧にありがとうございました。
- mame9999
- ベストアンサー率44% (90/203)
すみません。ずれました 1 2 =A1 =B1 =IF(A2="",C1,A2) =IF(B2="",D1,B2) =IF(A3="",C2,A3) =IF(B3="",D2,B3) 4 5 =IF(A4="",C3,A4) =IF(B4="",D3,B4) =IF(A5="",C4,A5) =IF(B5="",D4,B5) =IF(A6="",C5,A6) =IF(B6="",D5,B6) =IF(A7="",C6,A7) =IF(B7="",D6,B7) 7 6 =IF(A8="",C7,A8) =IF(B8="",D7,B8) =IF(A9="",C8,A9) =IF(B9="",D8,B9) 10 11 =IF(A10="",C9,A10) =IF(B10="",D9,B10) =IF(A11="",C10,A11) =IF(B11="",D10,B11) =IF(A12="",C11,A12) =IF(B12="",D11,B12) こんな感じでどうでしょうか 具体的には、まず列の要素分列を挿入します (ピボットで2列要素があれば2列追加します) 1行目は同じ値を表示するようにします 2行目に=IF(A2="",C1,A2) =IF(B2="",D1,B2) な条件式を書いて フィルドラッグすれば下にコピーされます 1 2 1 2 1 2 1 2 4 5 4 5 4 5 4 5 4 5 7 6 7 6 7 6 10 11 10 11 10 11 10 11 こんな結果になりますので コピー→値の貼り付けをして 1,2行目を消してしまえばOKですね
お礼
わざわざありがとうございました。 大変参考になりました。 ところで、ご好意に甘えて、もう一点、質問させてください。 実は、その構文(?)の意味は良く分かっていません。 「 =IF(A2="",C1,A2) 」を言葉にすると どういう風に読むのですか? 「もしA2が・・・ならば、・・・」というふうに 翻訳していただけませんでしょうか? よろしくお願いいたします。
- mame9999
- ベストアンサー率44% (90/203)
1 2 =A1 =B1 =IF(A2="",C1,A2) =IF(B2="",D1,B2) =IF(A3="",C2,A3) =IF(B3="",D2,B3) 4 5 =IF(A4="",C3,A4) =IF(B4="",D3,B4) =IF(A5="",C4,A5) =IF(B5="",D4,B5) =IF(A6="",C5,A6) =IF(B6="",D5,B6) =IF(A7="",C6,A7) =IF(B7="",D6,B7) 7 6 =IF(A8="",C7,A8) =IF(B8="",D7,B8) =IF(A9="",C8,A9) =IF(B9="",D8,B9) 10 11 =IF(A10="",C9,A10) =IF(B10="",D9,B10) =IF(A11="",C10,A11)=IF(B11="",D10,B11) =IF(A12="",C11,A12)=IF(B12="",D11,B12) こんな感じでどうでしょうか 具体的には、まず列の要素分列を挿入します (ピボットで2列要素があれば2列追加します) 1行目は同じ値を表示するようにします 2行目に=IF(A2="",C1,A2) =IF(B2="",D1,B2) な条件式を書いて フィルドラッグすれば下にコピーされます 1 2 1 2 1 2 1 2 4 5 4 5 4 5 4 5 4 5 7 6 7 6 7 6 10 11 10 11 10 11 10 11 こんな結果になりますので コピー→値の貼り付けをして 1,2行目を消してしまえばOKですね
お礼
なるほどですね。 ありがとうございました! 大変助かりました。 またよろしくお願いします。
- hirorin00
- ベストアンサー率50% (446/884)
1番です。 失礼しました。 B1にA1と同じ値を入れ、B2に「=IF(A2="",B1,A2)」を入れて、必要なだけコピーしてください。
お礼
ありがとうございました。大変助かりました!
- hirorin00
- ベストアンサー率50% (446/884)
はじめまして A列にデータ、B列は空欄とします。 B2に「=if(A2="",A1,A2)」と入れ、必要なだけ下へコピーします。 B2から始めるところがミソです。 数式ではなく数値として必要ならばB列を選択してコピー、A列もしくは新しい列に「形式を選択して貼り付け」で「値」を選択して貼り付ければOKです。
補足
早速のご回答ありがとうございます。 やってみましたが、2行以上空白があるとB列に「0」が入ってしまうようですが、実際は空白が10行以上続く場合もあります。 よりよいお知恵を拝借できませんでしょうか。 よろしくお願いいたします。
お礼
実はあれこれ試行錯誤している段階で、 オートフィルタで空白セルだけにして、 真上のセルと等しい(例えばA2ならば「=A1」)という式を 入れて、ババーッと下まで引っ張ってコピーしちゃえばいいと いうことを発見(?)しました。 ご教授いただいた方法は、多分それをもっとスマートに するやり方ですよね。。。ご指導、ありがとうございました。 ちなみに、その後、使用する部分は一度コピーペーストして 値に直しておかないといけませんねえ。 すでに他の方からご教授いただいていたのに、、、 数式のまま使ってしまって作表を進めてしまい 並べ替えた途端に・・・・ 泣きを見ました・・・。