2016-07-12 7 views
1

Ich habe seit mehr als 3 Stunden für eine Formel oder VBA-Lösung gesucht und aus irgendeinem Grund kann nichts finden.Wählen Sie alle nicht leeren Zellen und die zugehörigen Zeilen

Ich brauche etwas, um eine Spalte zu betrachten, alle nicht leeren Zellen zu finden und sie woanders auszugeben. Hier ist eine kleine Beispiel-Tabelle der Daten:

Original data

Und hier ist das, was ich mag outputed haben:

Output table

ich viele Lösungen gefunden habe, von denen die meisten waren Kombinationen von = value und = match, aber ich bekomme entweder null Ergebnisse, oder die Ergebnisse haben Leerzeichen in der Spalte, die niemals Leerzeichen enthalten sollte.

+0

Filter Spalte A Rohlingen auszuschließen, wählen Sie, was dann sichtbar ist, zu kopieren, entfernen Sie den Filter und fügen Sie ihn in Spalte I. – pnuts

Antwort

2

dieses Makro Versuchen

Sub findBlankCells() 

Dim ws As Worksheet 
Dim lastrow As Long 
Dim i As Long 
Dim j As Long 
'change the sheet to whatever name sheet you have 
ws = ThisWorkbook.Sheets("Sheet1") 
'didn't chose A since it seems like you have more blank values there 
lastrow = ws.Cells(ws.Rows.Count, "B").End(xlUp).Row 
'j represents the row to copy to 
j = 1 
'loop through all the rows 
For i = 1 To lastrow 
'only copy to I and J column if both do not equal blank 
If ws.Cells(i, "A") <> "" And ws.Cells(i, "B") <> "" Then 
    ws.Cells(j, "I") = ws.Cells(i, "A") 
    ws.Cells(j, "J") = ws.Cells(i, "B") 
    'increase j if the statement is true to go on to the next row to copy to 
    j = j + 1 
End If 
Next i 
End Sub 
+1

Above Makro ist wirklich funktioniert. Ich danke dir sehr. Sie können einen Fehler in Zeile 6 finden. Ändern Sie es, um ws = ThisWorkbook.Sheets ("Sheet1") festzulegen. – aspan88

+0

Das funktioniert fantastisch, aber in einem größeren Szenario gibt es nicht alle passenden Kriterien aus. Hier ist ein Screenshot eines genaueren Beispiels (ich kann das reale Datenblatt nicht zeigen) von dem, was passiert. Endziel ist, dass, wenn Spalte C eine nicht leere Zelle enthält, diese Zeile ausgegeben wird. [link] (https://i.imgsafe.org/6393aab069.png) – bonzo

+0

Okay, ich habe herausgefunden, was ich falsch gemacht habe. In Zeile 16 "Wenn ws.Cells (i," A ") <>" "und ws.Cells (i," B ") <>" "Dann", hätte ich es geändert haben zu: 'Wenn ws. Zellen (i, "A") <> "" und ws.Cells (i, "A") <> "Then". Cross überprüfte es auf meinem Datenblatt und alles checkt aus. Danke nochmal für die Hilfe! – bonzo