2017-01-06 3 views
0

Ich habe eine Spalte in Excel, die ich alle in dem Bereich auswählen muss, um eine Änderung vorzunehmen. Das Problem besteht darin, dass die Spalte normalerweise Leerzeichen in den Zeilen enthält. Die Spalte daneben wird jedoch niemals Leerzeichen anzeigen, wir nennen diese Spalte "No Blanks".Wählen Sie einen gesamten Bereich, der leer ist, basierend auf der Spalte daneben

Der Auswahlcode, den ich derzeit verwende, ist unten, zuerst I Einen Fehler herausfiltern, dann gehe ich zu der spezifischen benötigten Spalte und gehe zur letzten Reihe und wähle bis zur 2. bis zur ersten Reihe in der Spalte. Das Problem ist, dass diese Zeile immer leer ist, sodass sie nur in die erste Zeile der Spalte springt und keine Änderungen vornimmt.

Gibt es eine Möglichkeit, die Auswahl für "Blanks Column" zu treffen, basierend auf den Daten in der Spalte "No Blanks", die immer Daten enthält und daher immer am Ende des Blattes ausgewählt werden kann, wo Daten sind?

Sub FindErrorAndCorrect() 

Dim FieldName As Range 
Dim rng As Range, res As Variant, lrow As Long 
Set rng = ActiveSheet.AutoFilter.Range.Rows(1) 
res = Application.Match("Errors", rng, 0) 
Dim rLastCell As Range 

'Finds the Specific Error' 
    rng.AutoFilter Field:=res, Criteria1:="*-Error 1*" 
'Only Shows rows that have something that matches the filter criteria 
    lrow = ActiveSheet.Cells(Rows.Count, res).End(xlUp).Row + 1 
    If ActiveSheet.Range(Cells(1, res), Cells(lrow,res)).SpecialCells(xlCellTypeVisible).Cells.Count > 1 Then 
     Set FieldName = Range("A1:BZ1").Find("Blanks Column") 
'If field isnt present shows message 
    If FieldName Is Nothing Then 
     MsgBox "Field Name was not found." 
Else 
Set rLastCell = LastCell(ActiveSheet, FieldName.Column) 
'Changes the Selection 
Range(Cells(2, FieldName.Column), Cells(rLastCell.Row, FieldName.Column)).SpecialCells(xlCellTypeVisible).Select 
Selection.FormulaR1C1 = "35" '<------Make Change Here 
'Changes the Color of the fields changed to Yellow 
With Selection.Interior 
    .Pattern = xlSolid 
    .PatternColorIndex = xlAutomatic 
    .Color = 65535 
End With 
End If 
End If 

End Sub 

Antwort

0

Ich bin mir nicht sicher, ob dies hilft. Sagen wir:

enter image description here

und wir wollen High-Licht nur jene Zellen in der Spalte A, die:

  • leer
  • einen nicht leeren Nachbar haben



Dieses Makro:

Sub markEmpty() 
    Dim r As Range, N As Long 

    N = Cells(Rows.Count, "B").End(xlUp).Row 
    Set r = Range("B1:B" & N) 
    r.Offset(0, -1).Cells.SpecialCells(xlCellTypeBlanks).Interior.Color = RGB(0, 200, 100) 
End Sub 

produzieren:

enter image description here

+0

Hallo, ich möchte nur jene Zellen in colum A wählen, und haben dann den Rest des Codes spielen, das ist eine Änderung vornehmen und dann Highlight . Dies basiert auch auf dem Spaltennamen und der Bereich kann immer unterschiedlich sein. – MrLockett

Verwandte Themen