Excel 如果SumA>;SumB或Sum C,然后;G";怎样?

Excel 如果SumA>;SumB或Sum C,然后;G";怎样?,excel,vba,Excel,Vba,我是excel vba的新手,这是我为满足以下条件而编写的 sumA大于sumB或sumC,然后为“G” sumB大于sumA或sumC,然后为“Y” sumC大于sumA或sumB,然后为“R” 在gr、yr、rr单元格的范围内,我将手动输入数字 Dim gr As Range Dim yr As Range Dim rr As Range Dim gr1 As Long Dim yr1 As Long Dim rr1 As Long Dim overallrisk As Range S

我是excel vba的新手,这是我为满足以下条件而编写的

  • sumA大于sumB或sumC,然后为“G”
  • sumB大于sumA或sumC,然后为“Y”
  • sumC大于sumA或sumB,然后为“R”
在gr、yr、rr单元格的范围内,我将手动输入数字

Dim gr As Range
Dim yr As Range
Dim rr As Range
Dim gr1 As Long
Dim yr1 As Long
Dim rr1 As Long
Dim overallrisk As Range

Set overallrisk = Sheets("Dashboard").Range("C24")
Set gr = Sheets("Dashboard").Range("C30:C32").Range("C33:C35").Range("D33:D35")
Set yr = Sheets("Dashboard").Range("C27:C29").Range("D30:D32").Range("E33:E35")
Set rr = Sheets("Dashboard").Range("D27:D29").Range("E27:E29").Range("E30:E32")

gr1 = Application.WorksheetFunction.Sum(gr)
yr1 = Application.WorksheetFunction.Sum(yr)
rr1 = Application.WorksheetFunction.Sum(rr)

If gr1 > yr1 Or rr1 Then
    overallrisk = "G"
ElseIf yr1 > gr1 Or rr1 Then
    overallrisk = "Y"
ElseIf rr1 > yr1 Or gr1 Then
    overallrisk = "R"
End If
我没有得到任何错误,所以我认为它会工作,但“总体风险”单元格仍然是空白的,即使我把数字放在单元格的范围内


谢谢大家!

我认为问题在于你最后的
If
声明。你有:

If gr1 > yr1 Or rr1 Then
我相信你的意思是:

If (gr1 > yr1) Or (gr1 > rr1) Then 
Excel正在查看
后面的条件语句,并将其作为单独的语句进行计算。你想要:

If gr1 > yr1 Or gr1 > rr1 Then
    overallrisk = "G" 
ElseIf yr1 > gr1 Or yr1 > rr1 Then     
    overallrisk = "Y" 
ElseIf rr1 > yr1 Or rr1 > gr1 Then     
    overallrisk = "R" 
End If 

这将清理您的代码,使其更具可读性,并应允许它正常工作

Dim gr As Range, yr As Range, rr As Range
Dim gr1 As Long, yr1 As Long, rr1 As Long
Dim overallrisk As Range
Dim wks As Worksheet

Set wks = Sheets("Dashboard")

With wks

    Set overallrisk = .Range("C24")
    Set gr = .Range("C30:C32,C33:C35,D33:D35")
    Set yr = .Range("C27:C29,D30:D32,E33:E35")
    Set rr = .Range("D27:D29,E27:E29,E30:E32")

    gr1 = Application.WorksheetFunction.Sum(gr)
    yr1 = Application.WorksheetFunction.Sum(yr)
    rr1 = Application.WorksheetFunction.Sum(rr)

    If gr1 > yr1 Or gr1 > rr1 Then
        overallrisk.Value = "G"
    ElseIf yr1 > gr1 Or yr1 > rr1 Then
        overallrisk.Value = "Y"
    ElseIf rr1 > yr1 Or rr1 > gr1 Then
        overallrisk.Value = "R"
    End If

End With

感谢您的快速回复!我已经尝试了你推荐的方法,但它仍然是空白的,我似乎不明白为什么…也许它没有增加数字…?一定要在
gr1=Application.WorksheetFunction.Sum(gr)
,逐步检查代码,看看是否设置了任何内容。抱歉,但我不确定是什么步骤或断点。。。!没问题;只需单击要开始调试的行,然后按F9或选择“调试>切换断点”(取决于您的Excel版本)。按F5键启动代码,然后使用F8键单步执行代码。这里还有更多帮助:@user1765813->除了您的
IF
语句不准确之外,您调用范围的方式似乎不正确。我从未见过像这样的非连续范围。我只是想指出不准确的地方,让你将来知道。