我需要在Excel VBA中处理来自不同工作表的单元格范围。 这是我的代码:
Function LastDayForClient(client As String, mnth As Integer, dates As range) As String
Dim dtRow As Date
Dim dt As range
dtRow = 0
For Each dt In dates
' If not that month that we are looking for - go next
If month(dt.Value) = mnth Then
' If not that client - go next
If Cells(dt.Row, dt.Column + 1).Value = client Then
If dtRow = 0 Then
dtRow = dt.Value
ElseIf dtRow < dt.Value Then
dtRow = dt.Value
End If
End If
End If
Next dt
LastDayForClient = Format(dtRow, "dd.mm.yyyy")
End Function
这就是我想要使用公式的方法:
=LastDayForClient("Client_name";5;Diff_sheet!G6:G297)
我猜我正在以错误的方式使用传递Range
参数,因为当在不同工作表上使用公式时,我得到了错误的值。当范围在同一张纸上时,一切都很好。
答案 0 :(得分:0)
问题在于
行If Cells(dt.Row, dt.Column + 1).Value = client Then
Cells指的是ActiveSheet,因此您需要告诉Cells参考正确的工作表。
Dim wks as worksheet
set wks = dates.parent
然后
If wks.Cells(dt.Row, dt.Column + 1).Value = client Then