Excel VBA问题。。。列A范围中的值决定下一个操作-比较其他两个列值
我被难住了。我一直在做这件事。需要一个例程来计算一个值。在可乐系列中,有一个“v”或一个“h”。。。只是想先让“v”逻辑起作用 很简单。这个函数一点也不能工作。如有任何建议,我将不胜感激。谢谢 这是我的密码:Excel VBA问题。。。列A范围中的值决定下一个操作-比较其他两个列值,excel,vba,Excel,Vba,我被难住了。我一直在做这件事。需要一个例程来计算一个值。在可乐系列中,有一个“v”或一个“h”。。。只是想先让“v”逻辑起作用 很简单。这个函数一点也不能工作。如有任何建议,我将不胜感激。谢谢 这是我的密码: Function CountFunction() As Integer Dim ColA As Range, ColB As Range, ColJ As Range Dim vResult As Integer Dim Visitor As String Set ColA = Ra
Function CountFunction() As Integer
Dim ColA As Range, ColB As Range, ColJ As Range
Dim vResult As Integer
Dim Visitor As String
Set ColA = Range("A5:A20")
Set ColB = Range("B5:B20")
Set ColJ = Range("J5:J20")
Visitor = "v"
vResult = 0
For Each ColA In ColA.Range("A5:A20")
For Each ColB In ColB.Range("B5:B20")
For Each ColJ In ColJ.Range("J5:J20")
If ColA.Cells.Value = Visitor Then
If ColB.Cells.Value = ColJ.Cells.Value Then
vResult = vResult + 1
Else
vResult = vResult + 0
End If
Else
If ColB.Cells.Value = ColJ.Cells.Value Then
vResult = vResult + 0
Else
vResult = vResult + 1
End If
End If
Next
Next
Next
CountFunction = vResult
End Function
“非常简单。”
不,不是:]
你可以替换
Set ColA = Range("A5:A20")
Set ColB = Range("B5:B20")
Set ColJ = Range("J5:J20")
与
或者,最好是更换
For Each ColA In ColA.Range("A5:A20")
For Each ColB In ColB.Range("B5:B20")
For Each ColJ In ColJ.Range("J5:J20")
与
“非常简单。”
不,不是:]
你可以替换
Set ColA = Range("A5:A20")
Set ColB = Range("B5:B20")
Set ColJ = Range("J5:J20")
与
或者,最好是更换
For Each ColA In ColA.Range("A5:A20")
For Each ColB In ColB.Range("B5:B20")
For Each ColJ In ColJ.Range("J5:J20")
与
有可能(但我真的在猜测)您试图实现的目标是:
Function CountFunction() As Integer
Dim ColA As Range
Dim vResult As Integer
Dim Visitor As String
Visitor = "v"
vResult = 0
For Each ColA In Range("A5:A20")
If ColA.Value = Visitor Then
If ColA.Offset(0, 1).Value = ColA.Offset(0, 9).Value Then
vResult = vResult + 1
End If
Else
If ColA.Offset(0, 1).Value <> ColA.Offset(0, 9).Value Then
vResult = vResult + 1
End If
End If
Next
CountFunction = vResult
End Function
并称之为
=CountFunction($A5:$A20,$B5:$B20,J5:J20,"v")
(显然,我希望可以调整范围以适应任何合适的范围。)
该函数执行非常有限的错误检查-它只检查三个范围中的每一个是否具有相同的行数。但它不会检查列数或值的有效性等。有可能(但我真的猜测)您试图实现的是:
Function CountFunction() As Integer
Dim ColA As Range
Dim vResult As Integer
Dim Visitor As String
Visitor = "v"
vResult = 0
For Each ColA In Range("A5:A20")
If ColA.Value = Visitor Then
If ColA.Offset(0, 1).Value = ColA.Offset(0, 9).Value Then
vResult = vResult + 1
End If
Else
If ColA.Offset(0, 1).Value <> ColA.Offset(0, 9).Value Then
vResult = vResult + 1
End If
End If
Next
CountFunction = vResult
End Function
并称之为
=CountFunction($A5:$A20,$B5:$B20,J5:J20,"v")
(显然,我希望可以调整范围以适应任何合适的范围。)
该函数执行非常有限的错误检查-它只检查三个范围中的每一个是否具有相同的行数。但它不会检查列数或值的有效性等。您想要实现什么?它不应该做的是什么?(看起来您正在对a列中的“v”进行计数,并将其乘以B列中与J列中某个位置匹配的值的数量。这是您想要的,还是您想要其他东西?)您想要实现什么?它不应该做的是什么?(看起来您正在对a列中的“v”进行计数,并将其乘以B列中与J列中某个位置匹配的值的数量。这是您想要的,还是您想要其他东西?)YowE3K,谢谢!这很有效。我非常感激!现在还有一个问题。如果我想让第二个偏移量(0,9)成为我输入函数的变量,我如何重述(0,9),将列位置传递给函数并使其工作?我需要将此函数复制/粘贴到电子表格中的其他列。再次感谢。你的帮助非常好。Tom@TominFlorida-我已经更新了答案,以显示如何通过三个范围,以及
Visitor
的值作为参数。完美。你是个救生员。谢谢你花时间帮忙。这对我所需要的东西来说太完美了。谢谢TomYowE3K,谢谢!这很有效。我非常感激!现在还有一个问题。如果我想让第二个偏移量(0,9)成为我输入函数的变量,我如何重述(0,9),将列位置传递给函数并使其工作?我需要将此函数复制/粘贴到电子表格中的其他列。再次感谢。你的帮助非常好。Tom@TominFlorida-我已经更新了答案,以显示如何通过三个范围,以及Visitor
的值作为参数。完美。你是个救生员。谢谢你花时间帮忙。这对我所需要的东西来说太完美了。谢谢汤姆