2017-05-03 9 views
1

So habe ich ein großes Excel-Blatt mit einer Reihe von leeren Zellen an verschiedenen Orten. Ich möchte eine einfach zu bedienende Liste, deren Zellen leer sind. Ich hatte gehofft, ein neues Arbeitsblatt zu erstellen, das mit den Orten der leeren Zellen bestückt war. Ich wollte das haben, um die Zellen, die ich will, einfach zu bevölkern. Ich habe den Header aus dem Arbeitsblatt behalten, das ich prüfen werde, und eine leere Zellenanzahl hinzugefügt. Daher möchte ich, dass die folgenden Zellen in der Spalte von der Liste der leeren Zellenpositionen ausgefüllt werden.Excel Liste der leeren Zellen

Jetzt weiß ich, ich kann =ISBLANK verwenden, um zu testen, ob eine Zelle leer ist oder nicht, aber ich interessiere mich nur für die Zellen, die TRUE zurückgeben. Also ich denke, ich brauche eine loop. Und ich möchte den Standort der Zelle, damit ich =CELL verwenden kann. Um dies am besten lesbar zu machen, möchte ich dies spaltenweise machen.

Aber ich möchte eine Tabelle mit diesen Informationen in einer ähnlichen Weise wie Funktionen funktionieren (ich möchte nur kopieren und in andere Zellen und Spalten einfügen). Aber es ist pretty clear that I am going to need VBA.

Meine Frage ist, wie kann ich ein Makro erstellen, um meine Tabelle mit einer Liste leerer Zellen zu füllen? Wie verwende ich es auf die Zellen?

+0

Können Sie klären? Sie möchten eine Arbeitsmappe mit einer Liste leerer Zellen füllen ...? Meinst du, du willst die Zelladresse dieser leeren Zellen zeigen? I.e. Wenn "A1" und "A4" und "A6" leer sind, möchten Sie eine neue Arbeitsmappe, die "A1", "A4" usw. anzeigt? – BruceWayne

+0

@BruceWayne Ja, tut mir leid. Ich werde den Beitrag bearbeiten, um das deutlicher zu machen. Super Griff übrigens. – CGTheLegend

Antwort

4

Ich nehme an, Sie haben Daten in Blatt1, habe ich Probe Bereich // Range ("A1: c15"), aber Sie können Bereich nach Bedarf definieren und leere Zellen Adresse wird im nächsten Blatt veröffentlicht werden.

Sub FindBlank() 
Dim rng As Range 
dim i as long 

For Each rng In Sheet1.Range("A1:c15").SpecialCells(xlCellTypeBlanks) 
i = i + 1 
Sheet2.Cells(i, 1) = rng.Address 

Next 

End Sub 
3

Wenn Sie eine Liste der Zellen wollen, die leer sind, können Sie Range().SpecialCells(xlCellTypeBlank) verwenden:

Sub getEmptyCellAddresses() 
Dim rng As Range 
Dim ws as Worksheet 
Set ws = Sheets("Sheet1") ' CHANGE AS NECESSARY 
Set rng = ws.Range("A1:A15").SpecialCells(xlCellTypeBlanks) ' Edit/change range as necessary 
ws.Cells(1, 2).Value = rng.Cells.Address ' Change `ws.cells(1, 2)` to whatever destination you like 
End Sub 

Edit: Ah, geschlagen von 16 Sekunden durch @RamAnuragi ... aber irgendwie, sie‘ ein bisschen andere Wege, um die Frage anzugehen, also werde ich es verlassen.

Edit: Für Freunde, hier ist eine andere Möglichkeit, sie alle in eine Spalte, eine Zeile pro Zelle ... und mehr, nach Ihren Kommentaren.

Sub listEmptyCells() 
Dim emptyAddresses() As String 
Dim i As Long 
Dim ws As Worksheet 
Dim rng As Range 

Set ws = Sheets("Sheet1") ' CHANGE AS NECESSARY 
Set rng = ws.Range("A1:A15") 

If WorksheetFunction.CountBlank(rng) = 0 Then 
    MsgBox ("No empty cells in the range") 
    Exit Sub 
End If 

emptyAddresses() = Split(rng.SpecialCells(xlCellTypeBlanks).Address, ",") 

For i = LBound(emptyAddresses) To UBound(emptyAddresses) 
    ws.Cells(i + 1, 2).Value = emptyAddresses(i) 
Next i 

End Sub 
+0

Wie bekomme ich die erste zur Arbeit? Wo führe ich es? – CGTheLegend

+0

@CGTheLegend - Sie würden es zu einem Arbeitsmappenmodul hinzufügen. Siehe dazu [diese Seite] (http://www.contextures.com/xlvba01.html). – BruceWayne

+0

Ja, ich weiß, wie das geht, nur wenn ich es laufe passiert nichts. Ich muss den falschen Bereich oder etwas verwenden. Wie lege ich fest, welches Blatt? Ich habe versucht, eine Methode zu verwenden, die ähnlich wie @RamAnuragi ist, aber es gibt mir Objektfehler. – CGTheLegend

Verwandte Themen