アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセルについて詳しい方、教えて下さい。
エクセルのセルに空白がある場合、左セルの文字をコピーしたいと思います。
たとえばA1に「りんご」と入っておりA2~5が空白の場合、A2~5にも「りんご」と入力したいです。
続くA6に「メロン」と入っておりA7~10が空白の場合は、A7~10は「メロン」と入力したいです。

対象のセルをすべて選択し、[Ctrl]+[G]のジャンプ機能で[セル選択]から"空白セル"を指定して[OK]
↑こちらの機能を使ってみたのですが、なぜか空白セルが導き出されませんでした。

エクセルは2007です。よろしくお願いいたします。

A 回答 (2件)

ご質問者さんの例示によれば


>A1に「りんご」と入っておりA2~5が空白の場合、A2~5にも「りんご」と入力したいです。
>続くA6に「メロン」と入っておりA7~10が空白の場合は、A7~10は「メロン」と入力したいです。
とありますので、表題にある「左セルの文字をコピーしたい」ではなく、
「すぐ上のセルの文字をコピーしたい」という意味だと解釈してマクロを作ってみました。
実務の中で、ピボットテーブルを作成したときなどに、このようなニーズは発生するものだからです。

このマクロは以下の前提で作成しました。
1.シートにはデータが入力されており、作業対象列はA列とする。
2.A1には必ずデータが入っているものとしてスタートはその下のセルからとする
3.A列の空白を埋める作業はシートのデータが入力されている最終行までとする。

上記の条件で作成されていますので、作業列を変更する場合はマクロの
Rang("a" ○○○)などとなっている"a"の部分を該当の列名に変更してください。
また、開始行を変更する場合は start_row= 2 の部分を該当の行番号に
変更してください。(但し、start_rowは2以上とします。
またデータの最終行は32,767を超えないものとします。)

Sub Fill_Blank()

Dim i As Integer
Dim cnt As Integer
Dim start_row As Integer
start_row = 2

cnt = ActiveCell.CurrentRegion.Rows.Count
For i = start_row To start_row + cnt - 1
If (Range("A" & i - 1).Value <> "") And (Range("A" & i).Value = "") Then
Range("a" & i).Value = Range("A" & i - 1).Value
End If
Next


End Sub
    • good
    • 1

>なぜか空白セルが導き出されませんでした



式で""が返るようにしてあるとかそのままそれをコピーして値にしてしまったとかならそこには文字長0の文字列が入っているということになりますから空白セルとは認識されません。
A列を選択してデータタブ→区切り位置→完了(いきなり完了でいいです)
としてから再度ジャンプを試してみてください。

もしくはスペースが入っているとか、空白に見えて実はすでに上セルと同じ文字が入っているけど条件付き書式で文字色を白にしているとか表示形式で見えなくしているなどの可能性もあります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!