使用列中的值来指定/激活特定行

时间:2015-11-02 18:22:58

标签: excel vba excel-vba sumifs

我目前有一个代码,用于查找特定列中的第一个空单元格,并将“SumIfs”计算的结果保存到该单元格中。它针对多个条件运行多个列。下面的示例是我搜索条件“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”列中。

有关根据条件指定行的最佳方法的任何建议或想法吗?

1 个答案:

答案 0 :(得分:1)

您可以使用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和cell值设置为相同的格式,这意味着代替:

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

你应该使用:

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

祝你好运,并随时提出更多细节。