使用列中的值 designate/activate 特定行

Using values in a column to designate/activate a specific row

我目前有一个代码可以找到特定列中的第一个空单元格,并将 "SumIfs" 计算的结果保存到该单元格中。它 运行s 用于多个条件的多个列。下面的示例是我搜索条件 "R" 和 "ECHO" 的一个实例,对第 16 列的相应值求和,并将结果放在另一个工作表的第 "C" 列中:

Sub SumIfs()

Dim ws2 As Worksheet: Set ws2 = ThisWorkbook.Sheets("previous_day_split")
Worksheets("daily_balance").Activate

Range("C" & Rows.Count).End(xlUp).Offset(1, 0).Value = _
Application.SumIfs(ws2.Columns(16), ws2.Columns(15), "R", ws2.Columns(20), "ECHO")

End Sub

效果很好,但现在我不只是将结果放在 "C" 列的第一个空单元格中,而是想找到一种方法来指定一行(不一定是第一个空单元格) ) 基于 "daily_balance" 第一列中的特定日期。

简而言之,例如,我希望代码在工作表 "daily_balance" 的第一列中搜索一个日期(例如 11/2/2015),将该行指定为要转储的行运行 "ws2" 中的 SumIfs 函数,并将结果放在包含 11/2/2015 的行的 "C" 列中。

关于根据条件指定行的最佳方式有什么建议或想法吗?

您可以使用 Do While 循环轻松地在列中查找特定值:

i = 0
Do While Cells(i, "A") <> {lookup_value} And Cells(i, "A") <> ""
    i = i + 1
loop

'Check that {i} holds row number for our lookup value and not for an empty one
if Cells(i, "A") = {lookup_value} then
    'Do your calculations here
    'And then use {i} as row number to save your result.
end if

所以 {lookup_value} 是一个常量或变量,用于保存您要查找的日期。如果您的日期格式不正确,您可能需要使用 CDate() 将您的 lookup_value 和单元格值设置为相同的格式,这意味着代替:

Do While Cells(i, "A") <> {lookup_value} And Cells(i, "A") <> ""

你应该使用:

Do While CDate(Cells(i, "A")) <> CDate({lookup_value}) And Cells(i, "A") <> ""

祝你好运,欢迎随时询问更多详情。