2016-04-07 2 views
0

arbeitet Ich habe Daten wie: (id, Volumen, median.percantile)Visual Basic - meine String-Vergleichsfunktion nicht richtig

1 Normal Normal Low 
2 Low Normal High 
3 High High Normal 

Was ich tun müssen, um einen Zähler haben, dass es um 1 erhöht, wenn Es ist nicht normal. So erwarte ich

1 Normal Normal Low Counter:1 
2 Low Normal High Counter:2 
3 High High Low Counter:3 

Um es zur Verfügung zu stellen, schrieb ich die Funktion unten. Wenn ich jedoch dorthin (Normal, Normal, Hoch) sende, berechnet es 2 statt 1. Es funktioniert also nicht richtig. Wo ist mein Fehler?

Mein Code ist unten:

Public Function getPoint(ByVal volume As String, ByVal median As String, ByVal percantile As String) As Integer 

    Dim Total As Integer = 0 
    If volume = “Normal” then 
    total = total + 1 
    end if 
    If median = “Normal” then 
    total = total + 1 
    end if 
    If percantile = “Normal” then 
    total = total + 1 
    end if 

    return total 

End Function 

Antwort

0

Was Sie tun, ist das Gegenteil von dem, was Sie wollen.

Sie möchten die Zählung von nicht-normal, während das, was Sie zählen und die Summe zurückgibt, ist Normal.

Einfache Lösung wäre return (3 - total).

BTW, ist das VBA oder VB.Net? Beide basieren auf VB, sind aber unterschiedlich. Wenn es VBA für Excel ist, können Sie dies mit einer einfachen Zählformel (3 - Anzahl von Normal) erreichen.

1

Im ersten Datensatz sowohl volumeundmedian"Normal" sind. So beide dieser Bedingungen erfüllt sind:

If volume = "Normal" Then 
    total = total + 1 
End If 
If median = "Normal" Then 
    total = total + 1 
End If 

So total zweimal erhöht wird. Wenn Sie es wollen, nur einmal erhöht werden (und im Wesentlichen ignorieren die restlichen Vergleiche) dann ElseIf verwenden, um die Vergleiche zu stoppen, wenn eine Bedingung erfüllt ist:

If volume = "Normal" Then 
    total = total + 1 
ElseIf median = "Normal" Then 
    total = total + 1 
End If 

Oder sie nur in eine einzige Bedingung gestellt:

If volume = "Normal" Or median = "Normal" Then 
    total = total + 1 
End If 

Beachten Sie, dass dieses Verhalten ist genau das Gegenteil von dem, was Sie beschreiben:

erhöht sich um 1 wenn es nicht normal ist

Ein Tippfehler vielleicht?

0

Ihre "=" ‚s ändern zu "<>"
heißt

If volume <> "Normal" then 
    total = total + 1 
End if 
+0

Ihre Antwort ist auch richtig, aber es wäre hilfreich, einige Kontext für das Problem der nur den richtigen Code stattdessen zu liefern. Lesen Sie [Wie schreibe ich eine gute Antwort?] (Http://stackoverflow.com/help/how-to-answer) – Spidey

+0

danke für den Link! –