2016-04-07 38 views
0

我有這樣的數據:(ID,卷,median.percantile)Visual Basic中 - 我的字符串比較功能不能正常工作

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

我需要做的是有一個計數器,它增加1時它不是正常的。所以我期待

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

提供它我寫了下面的函數。但是,當我發送(正常,正常,高)時,它正在計算它2而不是1.因此它不正常工作。我的錯誤在哪裏?

我的代碼如下:

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 

回答

0

你在做什麼與你想要的相反。

您希望非正常計數,而您計數並返回總數爲正常。

簡單修復將是return (3 - total)

順便說一下,這是VBA還是VB.Net?兩者都基於VB,但不同。 如果是Excel的VBA,可以使用簡單的計數公式(3 - 正常計數)來實現此目的。

1

在第一個記錄,無論volumemedian"Normal"。所以這些條件都爲真:

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

因此,total被遞增兩次。如果你希望它是一次增加(而且基本上忽略剩餘的比較),然後使用ElseIf停止比較一旦條件成立的情況:

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

或者只是把它們放進一個條件:

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

請注意,這種行爲也正是你描述的相反:

在不正常時增加1

可能是一個錯字?

0

更改"="年代到"<>"

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

你的答案也是正確的,但是這將有助於提供一些背景的問題,而不只是正確的代碼。閱讀[我如何寫出一個好的答案?](http://stackoverflow.com/help/how-to-answer) – Spidey

+0

感謝您的鏈接! –