2016-05-22 8 views
0

Ich verbrachte Stunden damit, meinen Code ohne Erfolg zu arbeiten.Vlookup, For Next, mit Baumvariablen

Ich versuche, die vlookup Ergebnisse in Abhängigkeit von zwei Bedingungen zu summieren.

Wenn der Eingabewert vom Benutzer in einer Ebene mehr als 0 ist und sich von "vlookup" am Eingabewert unterscheidet, der der Pipe-Nummer und der Summe aller vlookup-Werte entspricht.

Grundsätzlich besteht das Ziel der Übung darin, die Rohrleitungsnummer einzugeben, die davor steht, und den zugehörigen Druck in der Spalte EY zu summieren. Daher würde ich in der Lage sein zu wissen, was die am meisten defavorized Rohr in meinem Netzwerk ist, um meine Pumpe zu entwerfen.

Ich denke, das ist nicht sehr klar, aber bitte finden Sie unten den Link meiner Datei, die Ihnen helfen könnte, zu verstehen.

Zögern Sie nicht, nach einer Klarstellung zu fragen.

Vielen Dank für jede Hilfe, die Sie mir zur Verfügung stellen könnten.

Haben Sie einen schönen Tag

Hier ist ein Link, um die Datei herunterzuladen:

https://www.dropbox.com/s/zcfw9ybeds082qa/Help.xlsx?dl=0

Sub test() 
Dim y As Integer, total As Integer 
total = 0 
For y = 3 To 152 
If Not Cells(8, y).Value = 0 And Cells(8, y).Value = "" Then 
total = total + cells(8,"EY").value + Application.WorksheetFunction.VLookup(Cells(8, y).Value, Sheets("Pump Design").Range("Pump_design"), 154, False) 
y = y + 1 
End If 
Next y 

Cells(8, "EZ").Value = total 

End Sub 
+0

Bitte kopieren und fügen Sie die Formel Sie verwenden. Auf diese Weise können wir es kopieren, um es zu testen, und die Leute können es leicht sehen, ohne eine Datei herunterzuladen, der sie nicht vertrauen können. Auch stellt es eine bessere Frage, wenn Sie es auf ein spezifisches Problem eingrenzen, wie "mein SVERWEIS gibt #VALUE" zurück oder "Wie wähle ich die Zelle vor und nach einer Zelle aus und summiere sie?" – Noumenon

+0

@Noumenon done siehe Code in meiner Frage –

+0

Welche Spalte soll den "zugehörigen Druck" halten? Keine Spalte ist mit "Druck" gekennzeichnet. – Noumenon

Antwort

0

Ich bin nicht ganz sicher, warum, aber Ihre bedingt ist nie wahr. Wenn Sie

ersetzen
If Not Cells(8, y).Value = 0 And Cells(8, y).Value = "" Then 

mit

If Not (Cells(8, y).Value = 0 Or Cells(8, y).Value = "") Then 

oder

If Not IsEmpty(Cells(8, y)) Then 

dann sollte es funktionieren.

+0

Ok danke dafür, aber meine vlookup Funktion funktioniert auch nicht. Wenn ich ersetze: 'total = total + Application.WorksheetFunction.VLookup (Zellen (8, y) .Wert, Sheets (" Pump Design "). Bereich (" Pump_design "), 154, False)' mit 'total = total + Application.WorksheetFunction.VLookup (Cells (8, 4) .Wert, Sheets ("Pump Design"). Bereich ("Pump_design"), 154, False) 'es funktioniert .... warum ??? –

+0

@MAxSegura Auf welche Zellen bezieht sich 'Range (" Pump_design ")? Ich sehe es nicht im Menü "Benannte Bereiche". – Noumenon

+1

Ich habe das Problem behoben, im Dateibereich ("Pump_design") steht der Name der gesamten Tabelle. Das Hauptproblem war, dass x und y nicht als doppelt deklariert und auch für y = 3 bis 153 durch y = 4 bis 153 ersetzt wurden. –

0

Hier ist die Antwort

Sub test() 
Dim total As Integer, x, y As Double 
For y = 4 To 153 
x = Cells(8, y).Value 
If Not IsEmpty(x) Then 
total = total + Application.WorksheetFunction.VLookup(x, Sheets("Pump Design").Range("Pump_design"), 154, False) 
End If 
Next y 

Cells(8, "EZ") = total 
End Sub 

aber ich muss noch einige Änderungen vornehmen, um das Ergebnis zu erhalten, die ich will