Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(指定なし : 指定なし)
「空白セルに値を入力する処理について」のどすこいさんへ
投稿日時: 17/12/07 17:05:15
投稿者: もこな2

空白セルに値を入力する処理について
http://www.moug.net/faq/viewtopic.php?t=76533
 
については、一般機能でも出来ますよ。
 
1,日本語入力を切っておく(やらなくてもいいけど後が楽ちん)
2.空白セルを含むセル範囲をマウスで選択
3.Ctrt + G の同時押し
 
(ジャンプ)という画面が出てきたらここまでは成功
 
4。セル選択ってボタンを押す
5。選択オプション が開くので 空白セルを選択してOKボタン
6,空白セルが選択された状態になるので 「=」と入力
7,上矢印キー をおして Ctrt + ENTER の同時押し
 
1こ上のセルを参照する数式が一括で入ります。
 
ここまでできたら。範囲を選択し直して、コピー
形式を選択して貼り付け → 値 で おk

回答
投稿日時: 17/12/07 17:15:33
投稿者: bi

私もその方法を提示しようと考えましたが、毎回行が変動するらしいのでコードを書きました。その流れをマクロに置き換えただけのものですが。

投稿日時: 17/12/07 17:23:24
投稿者: もこな2

bi さんの引用:
私もその方法を提示しようと考えましたが、毎回行が変動するらしいのでコードを書きました。その流れをマクロに置き換えただけのものですが。
まぁどっちが楽かですよね。頻度が高いならコード書いてアドインにでもしておけばいいんでしょうけど・・・たまにしか使わないならコード書くまでもないという・・・
 
あとは、マクロ付きブック怖いマンへの対応とか・・・・・

投稿日時: 17/12/07 17:58:25
投稿者: もこな2

ちょっと時間があったので別解をかんがえてみました。
しばらく開けておくのでツッコミありましたらお願いします。
 

Sub 別解()
'1行目を含まないセル範囲を選択してから実行すること!
Dim MyRange As Range

For Each MyRange In Selection
    If MyRange.Value = "" Then _
        MyRange.Value = MyRange.Offset(-1, 0).Value
Next

Set MyRange = Nothing

End Sub

回答
投稿日時: 17/12/08 09:50:32
投稿者: mattuwan44

aaa


cc

vv
bb




終わり

 
頭の体操。。。
 
こういうのは、コピーしたいセルを選択して、
フィルハンドルをドラッグを繰り返せばいいんじゃないでしょうか。。。
 
その操作をマクロの記録して、空白エリアの分、繰り返せばよいと思います。
 
Sub Macro9()
'
' Macro9 Macro
'
 
'
 
    Range("A1:A14").Select
    Range("A14").Activate
    Selection.SpecialCells(xlCellTypeBlanks).Select
    Range("A1").Select
    Selection.AutoFill Destination:=Range("A1:A2"), Type:=xlFillDefault
    Range("A1:A2").Select
    Range("A3").Select
    Selection.AutoFill Destination:=Range("A3:A4"), Type:=xlFillDefault
    Range("A3:A4").Select
End Sub
 
Sub test()
    Dim Rng As Range
    Dim c As Range
     
    Set Rng = Range(Range("A1"), Cells(Rows.Count, "A"))
    Set Rng = Rng.SpecialCells(xlCellTypeBlanks)
     
    For Each c In Rng.Areas
        With c.Resize(1, 1).Offset(-1)
            .AutoFill Range(.Cells, c)
        End With
    Next
End Sub
 
まー、オートフィルを使わなくてもいけますね。
    For Each c In Rng.Areas
        c.Value = c.Cells(0, 1).Value
    Next
 
データの中の、空白を補完したい要求はちょいちょいあると思います。
大量にデータと空白があって作業列を使えるなら、数式で処理した方が速いかもですが、
とりあえず、ぱっと思いつけてすぐ結果が欲しい時は繰り返す力技かな?

投稿日時: 17/12/08 20:37:52
投稿者: もこな2

そんなにデータ件数なければオートフィルでもいいんでしょうけど、大項目-中項目-小項目って並んでて、さらに項目ごとにセル結合された表からビボットテーブル用のデータ作りなおしたいってシーンも結構あるんですよね。
 
最初にジャンプ機能使って一括計算式入力すればいいって知ったときはもう、 (;゚听)こんな顔してたと思います。
 
さて、皆さんお付き合いありがとうございました。
閉じておきますね。