Public Sub FillEmpty()
Dim finded As Range
Dim Sheet As Worksheet
Set Sheet = ActiveSheet 'or any other sheet -> .Sheets("")
With Sheet
lastrow = .Cells(1, 1).End(xlDown).Row
For i = 1 To lastrow
If StrComp(.Cells(i, 2).Value, "") = 0 Then
Set finded = .Columns(2).Find("*", after:=.Cells(i, 2), LookIn:=xlValues)
ID = .Cells(finded.Row, 1).Value
Filler = .Cells(finded.Row, 2).Text
Else
ID = .Cells(i, 1).Value
Filler = .Cells(i, 2).Text
End If
Index = i
While ID = .Cells(Index, 1).Value
.Cells(Index, 2).Value = Filler
Index = Index + 1
Wend
Next i
End With
End Sub
最も最適なソリューションそうではない、それは実際に素早くメイド。私はあなたの例でそれをテストし、それは動作します。より多くの行ではわかりません。それをチェックし、それがあなたのために働く場合私に知らせてください。
最後の行を見つけるためにこれを見てください。 'xlDown'は最良の選択肢ではありません! ;)http://stackoverflow.com/a/11169920/4628637およびhttp://stackoverflow.com/documentation/excel-vba/918/methods-for-finding-the-last-used-row-or-column- in-a-worksheet#t = 201702151106496482673 – R3uK
うわー、私はxlDownメソッドを使って仕事中いつもそれをやっていました。 – AngelMdez
@AngelMdez私はこのコードを試してみましたが、それは私に "次のものがない"というエラーを出します。たぶんどこにEnd Ifを追加するべきなのでしょうか? –