2016-09-15 6 views
0

私はA300までのデータを持つ列Aを持っています。Excel vbaオートフィルのみ空のセル

この範囲では、これらのセルのいくつかは空であり、一部には値が含まれています。

ws.Range("A1").Select 
Selection.AutoFill Destination:=ws.Range(ws.Cells(1, 1), ws.Cells(300, 1)) 

私の問題は、件のデータがオンに含まれていることである:VBAで

、私は私はこのような(A300まで)私のコラムの上にそれをすべて設定するオートフィル機能を使用して、セルA1の数式を設定しますいくつかの細胞も消去されます!私はそれのようにオートフィルしようとしているが、空のセルだけを通っている。

私はこのような私のワークシートにフィルタを追加しようとしました:

ws.Range("$A$1:$A$300").AutoFilter Field:=1, Criteria1:="=" 

それから私はオートフィル機能を再利用し、フィルタリング細胞thourght埋めるようだ...

にすることはできません我々オートフィル機能に「空セルのみ」のようなパラメータを追加しますか?このようなもの:

Selection.AutoFill Destination:=ws.Range(ws.Cells(1, 1), ws.Cells(300, 1)), Criteria1:="=" 

返信いただきありがとうございます。

+1

あなたはそれらを入力しようとしていますか?静的または漸進的な値? ** RangeCellTypeBlanks **で[Range.SpecialCellsメソッド](https://msdn.microsoft.com/en-us/library/office/ff196157.aspx)を参照してください。 – Jeeped

+0

私は "SpecialCells(xlCellTypeBlanks)"に他の問題があります。その結果、コピーして空のセルを貼り付けると、これらのセルは空白セルとみなされなくなり、このコードでは選択されません(ただし、このセルはまだ空です)。これは、既にSpecialCells(xlCellTypeBlanks)の既知の問題です。だから空白のセルがあっても "No cell match"というエラーが出ることがあります。あなたはこの問題の解決策を知っていますか? –

答えて

1

謝罪を、私は欠場-理解ご質問 - A1の値を持つすべての空白のセルを埋めるためにしたいですか? - ここに行く:

Sub Replace() 

If Trim(Range("A1").Value) = "" Then 
    MsgBox "There's no value in A1 to copy so there's nothing to copy to all blank cells", vbInformation, "Nothing in A1" 
    Exit Sub 
    Else 
     Range("A1:A300").SpecialCells(xlCellTypeBlanks).Select 
     Selection.Value = Range("A1").Value 
End If 

End Sub 
+0

ありがとうございました! –

+0

私は "SpecialCells(xlCellTypeBlanks)"に他の問題があります。その結果、コピーして空のセルを貼り付けると、これらのセルは空白セルとみなされなくなり、このコードでは選択されません(ただし、このセルはまだ空です)。これは、既にSpecialCells(xlCellTypeBlanks)の既知の問題です。だから空白のセルがあっても "No cell match"というエラーが出ることがあります。あなたはこの問題の解決策を知っていますか? –

+0

ここで何が問題なのか完全にはっきりしていません。最初の行は空のセルをすべて見つけて選択し、2番目のセルはA1の値を選択したセルに入力します。空白とはみなされない( "") - 何が起こっているのでしょうか? – Jeremy

2

静的な値が必要な場合は、ループを使用します。私は単一のコピーではなく、塗りつぶしダウンを行うだろう

enter image description here

::のようなデータを持つ

Sub AllFillerNoKiller() 
Dim ws As Worksheet 
Set ws = Worksheets("Sheet1") 

For Each c In ws.Range("A1:A300") 
    If c.Value = "" Then c.Value = "poop" 
Next 
End Sub 
+0

ありがとうございます、あなたのコードは、A1:A300の範囲で動作しますが、私は例として、私の実際のブックは10キロ以上の行を持っていたと私はループを回避するだろう。しかし、助けてくれてありがとう! –

3

:以下の1はうんちで、すべての空のセルを記入します

Sub luxation() 
    Range("A1").Formula = "=ROW()" 
    Dim rDest As Range 
    Set rDest = Intersect(ActiveSheet.UsedRange, Range("A1:A300").Cells.SpecialCells(xlCellTypeBlanks)) 

    Range("A1").Copy rDest 
End Sub 

この結果は

enter image description here

注:

式がコピーされた後に調整します。

EDIT#1:

このコードは動作しませんその下、いくつかの事情があることに注意してください。 UsedRange私はセルにまで伸びていない可能性がありますA300。例えば

、ワークシートがA1での式とA3でいくつかの値を除いて、完全に空の場合。この場合、Rdestには、単一セルA2のみが含まれます。コードはA4からA300のままです。あなたはまた、コードの下に使用することができます

+0

この回答をありがとう、それは私が必要なものです。 "usedRange"については、すでに問題があります。データやその他のデータを削除すると再計算されないようですが、未使用領域を使用しないとこれを行うことができます。再度、感謝します ! –

+0

私は "SpecialCells(xlCellTypeBlanks)"に他の問題があります。その結果、コピーして空のセルを貼り付けると、これらのセルは空白セルとみなされなくなり、このコードでは選択されません(ただし、このセルはまだ空です)。これは、既にSpecialCells(xlCellTypeBlanks)の既知の問題です。だから空白のセルがあっても "No cell match"というエラーが出ることがあります。あなたはこの問題の解決策を知っていますか? –

1

stAddress = Sheet1.Range("A1").CurrentRegion.SpecialCells(xlCellTypeBlanks).Address 
Sheet1.Range(st).Value = "Empty" 
+0

Jeremyの答えよりも複雑な場合でも、このコードはありがたいです。ありがとうbtw! –

+0

私は "SpecialCells(xlCellTypeBlanks)"に他の問題があります。その結果、コピーして空のセルを貼り付けると、これらのセルは空白セルとみなされなくなり、このコードでは選択されません(ただし、このセルはまだ空です)。これは、既にSpecialCells(xlCellTypeBlanks)の既知の問題です。だから空白のセルがあっても "No cell match"というエラーが出ることがあります。あなたはこの問題の解決策を知っていますか? –

関連する問題