Excel (VBA)

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

 
(指定なし : 指定なし)
空白セルに値を入力する処理について
投稿日時: 17/12/07 16:26:34
投稿者: どすこい

皆様
 
下記のようにエクセルのシートのA列に空白含む文字列が入っています。
必ずA列に文字列が入りますが、文字列や空白セルが入っているセル(行)は毎回変動します。
例えば、A2セルが空白の時もあれば、A10が空白の場合もあり、その時々で空白セルが変動します。
この前提で、A列で空白のセルがあった場合、その空白セルより上の行のセルを見て、
直近で値が入っている文字列をその空白セルに代入したいです。
 
もし、処理の仕方をご存知の方がいたら教えてください。
ヒントだけでも大変助かります。
 
 
◆現在  
     A列
1行目  あああ
2行目
3行目
4行目  いいい
5行目
 ・   ううう
 ・   ええ
 ・
 ・
 ・
 最終行 終了
 
 
◆理想  
     A列
1行目  あああ
2行目  あああ
3行目  あああ
4行目  いいい
5行目  いいい
 ・   ううう
 ・   ええ
 ・   ええ
 ・   ええ
 ・   ええ
 最終行 終了
 

投稿日時: 17/12/07 16:27:46
投稿者: どすこい

ちなみに最終行にはかならず、A列に「終了」と書いてあるので、そこがループ(?)の最終地点です。

回答
投稿日時: 17/12/07 16:32:25
投稿者: WinArrow
投稿者のウェブサイトに移動

どうしてもVBAで対応したいのですか?
 
右隣(B列)のセルに
数式を入れて、その値をA列に「値複写」する方法では駄目なんでしょうか?
 

投稿日時: 17/12/07 16:36:57
投稿者: どすこい

WinArrow 様
 
VBAでなくても数式で実現できるのであればそれで構わないのですが、
どのような関数を入れたら実現できるのか、わからないでおります。
もしご存知でしたら教えていただけると助かります。
 
いつも貴重なコメントをありがとうございます。
 

回答
投稿日時: 17/12/07 16:39:21
投稿者: bi

必ずA1セルに文字が入っているのが前提ですが
 

Sub test()
    
    Dim LastRow As Long
    
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    
    Range("A1:A" & LastRow).SpecialCells(xlCellTypeBlanks).Formula = "=A1"
    Range("A1:A" & LastRow).Value = Range("A1:A" & LastRow).Value

End Sub

回答
投稿日時: 17/12/07 16:48:48
投稿者: WinArrow
投稿者のウェブサイトに移動

ループしなくてもできるので
参考コードを掲示します。
B列を作業列として使っています。最後に作業列を削除しています。
 
Sub SAMPLE()
Dim EndRow As Long
 
    With ActiveSheet
        EndRow = .Cells(.Rows.Count, "A").End(xlUp).Row
        .Cells(1, "B").Value = .Cells(1, "A").Value
        .Cells(2, "B").Resize(EndRow - 2).Formula = "=IF(A2="""",B1,A2)"
        .Cells(1, "A").Resize(EndRow - 1).Value = .Cells(1, "B").Resize(EndRow - 1).Value
        .Columns("B").Delete
    End With
 
End Sub

投稿日時: 17/12/07 16:55:05
投稿者: どすこい

 bi 様、WinArrow 様
 
すごいです><頂いたコードで、完璧にできました。
後程細かく研究します。
 
本当にたすかりました。