• ベストアンサー

空白セルに自動で値を入れたい

どなたかご教授賜りたく・・・。 エクセルの表(具体的にはピボットテーブルをコピーして値を貼り付けた)で、列ごとで値と空欄のセルが混在しています。 基本的に空白はその列の直近の上の値が入ります。 1行空欄ならそのすぐ上の値、2行空欄があってもやはり上の直近の値が入ります。 例)    A 1 ○○○   2 3 ○△○ 4  5     ↓    A 1 ○○○   2 ○○○ 3 ○△○ 4 ○△○ 5 ○△○ という風にしたいのです。 現在、オートフィルタで空白だけをソートして、Ctrl+Dをひたすら押し続けて上の値をコピーしていますが、数百行もあれば手の指が疲労して硬直してしまいます。 関数を使って自動で入れる方法はありませんでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

遅まきながら 関数を使ったではないのですが、 まずA列すべて選択→編集→セル選択→空白セル A2がアクティブ状態になっていると思いますが、この状態で数式バーに=A1と入力後shift+ctrl+Enterキーで確定 目的の結果が得られるかと。 はずしてましたらすいません。

job38
質問者

お礼

実はあれこれ試行錯誤している段階で、 オートフィルタで空白セルだけにして、 真上のセルと等しい(例えばA2ならば「=A1」)という式を 入れて、ババーッと下まで引っ張ってコピーしちゃえばいいと いうことを発見(?)しました。 ご教授いただいた方法は、多分それをもっとスマートに するやり方ですよね。。。ご指導、ありがとうございました。 ちなみに、その後、使用する部分は一度コピーペーストして 値に直しておかないといけませんねえ。 すでに他の方からご教授いただいていたのに、、、 数式のまま使ってしまって作表を進めてしまい 並べ替えた途端に・・・・ 泣きを見ました・・・。

その他の回答 (5)

  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.5

ヨコから失礼いたします。 >「 =IF(A2="",C1,A2) 」を言葉にすると >どういう風に読むのですか? このセル(この場合C2セル)には、もしA2が空欄だったらC1(C2の上)の値を入れ、空欄ではなかったら(そのまま)A2の値を入れる。 …という意味になります。 つまり空欄ではなかったらその値を、空欄だったら一つ上の値を、ということです。 上から順次下がってきますので、空欄が続いていても、順次埋まっていくようになります。

job38
質問者

お礼

なるほど・・・・ ご丁寧にありがとうございました。

  • mame9999
  • ベストアンサー率44% (90/203)
回答No.4

すみません。ずれました 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ですね

job38
質問者

お礼

わざわざありがとうございました。 大変参考になりました。 ところで、ご好意に甘えて、もう一点、質問させてください。 実は、その構文(?)の意味は良く分かっていません。 「 =IF(A2="",C1,A2) 」を言葉にすると どういう風に読むのですか? 「もしA2が・・・ならば、・・・」というふうに 翻訳していただけませんでしょうか? よろしくお願いいたします。

  • mame9999
  • ベストアンサー率44% (90/203)
回答No.3

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ですね

job38
質問者

お礼

なるほどですね。 ありがとうございました! 大変助かりました。 またよろしくお願いします。

  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.2

1番です。 失礼しました。 B1にA1と同じ値を入れ、B2に「=IF(A2="",B1,A2)」を入れて、必要なだけコピーしてください。

job38
質問者

お礼

ありがとうございました。大変助かりました!

  • hirorin00
  • ベストアンサー率50% (446/884)
回答No.1

はじめまして A列にデータ、B列は空欄とします。 B2に「=if(A2="",A1,A2)」と入れ、必要なだけ下へコピーします。 B2から始めるところがミソです。 数式ではなく数値として必要ならばB列を選択してコピー、A列もしくは新しい列に「形式を選択して貼り付け」で「値」を選択して貼り付ければOKです。

job38
質問者

補足

早速のご回答ありがとうございます。 やってみましたが、2行以上空白があるとB列に「0」が入ってしまうようですが、実際は空白が10行以上続く場合もあります。 よりよいお知恵を拝借できませんでしょうか。 よろしくお願いいたします。

関連するQ&A