2016-04-01 6 views
0

Hallo, ich habe folgendes Problem:VBA Dynamic Range mit Werten Berechnung

Wie Sie in der Spalte A sehen wir haben Termine, in Spalte B gibt es immer eine „1“, wenn ein Jahr wechselt von einem zum nächsten Ich habe es gelb markiert. In Spalte H sind verschiedene Werte und in Spalte I möchte ich nur den FIRST-Wert haben, der innerhalb eines Jahres größer ist (in diesem Fall) als 10% (also im Zeitraum von eins bis eins in Spalte B). Danach möchte ich den nächsten ersten Wert haben, der im nächsten Jahr> 10% ist, also nächste Periode von 1 bis 1 in Spalte B und so weiter.

Kann mir jemand helfen?

Bisher habe ich dies programmiert, aber es zeigt mir alle Werte> 10% aber nicht die ersten aus jedem Bereich für jeden Bereich.

Sub ABC() 
With ThisWorkbook.Worksheets("Test") 
rowCount = 2 
    Do While .Cells(rowCount + 1, 8).Value <> "" 

    If .Cells(rowCount, 2).Value = 0 And .Cells(rowCount, 8).Value >= 0.1 Then 

     .Cells(rowCount, 9).Value = .Cells(rowCount, 7).Value * 0.1/1.1 
    Else 
     .Cells(rowCount, 9).Value = "" 
    End If 
    rowCount = rowCount + 1 

Loop 

End With 
End Sub 

image

+0

Ich habe Schwierigkeiten zu verstehen, was Sie mit „dem Wert bedeuten daneben in den Spalten H> 5 in der Bereich von 1 bis 1 ". Wenn es größer als 5 ist, wie kann es im Bereich von 1 bis 1 liegen? Außerdem - warum in der Welt benutzen Sie sogar den Ausdruck "Bereich von 1 bis 1"? 1 ist die einzige Zahl in diesem Bereich. * Vielleicht * würde so etwas wie einen Bereich aufeinanderfolgender Zeilen bedeuten, bei denen der Wert in Spalte B 0 ist, aber wenn ja, sollten Sie das deutlicher ausdrücken. Ein relevanter Satz von Beispieldaten, der Werte in Spalte H und beabsichtigte Werte in Spalte I enthält, würde helfen. –

+0

Ich habe meine Frage aktualisiert, hoffentlich ist es jetzt einfacher zu verstehen: – ChristianW

Antwort

0

den Code scheint ist Fehler auf der Zell Adresse

Sub ABC() 
With ThisWorkbook.Worksheets("Test") 
rowCount = 2 
    Do While .Cells(rowCount + 1, 8).Value <> "" 

    If .Cells(rowCount, 2).Value = 0 And .Cells(rowCount, 8).Value >= 0.1 Then 

     .Cells(rowCount, 9).Value = .Cells(rowCount, 8).Value * 0.1/1.1 
    Else 
     .Cells(rowCount, 9).Value = "" 
    End If 
    rowCount = rowCount + 1 

Loop 

End With 
End Sub 
+0

Das hilft mir nicht ... – ChristianW

Verwandte Themen