Excel VBA,查找范围的行数并将其应用于另一个范围的末尾

时间:2013-10-07 20:45:06

标签: excel vba excel-vba row range

我正在使用Excel中的VBA项目(2010但是在xml中运行,而不是xmls)并且我遇到了一些麻烦。简而言之,我正在运行一个= IF((OR(不是)(ISERR(在一个单元格中搜索等等到表格的最右边。然后,我需要xlfilldown,但我需要范围是IF语句正在搜索的行因标签而异,并且下面有数据(用1-2个空白行分隔!),它们可能包含我正在搜索的相同字符串,但会提供错误的数据。

那么,是否可以跟踪数据为IF的列的端点的行号((OR(NOT)(ISERR(搜索然后将该列号应用为另一个范围的端点,以便xlfilldown)只能走到桌子旁边?如果是这样,怎么办呢?

谢谢大家!!

范围( “IF2”),选择     ActiveCell.Formula = _         “= IF((OR(NOT(ISERR(SEARCH(” “ PERF ””,A24))),NOT(ISERR(SEARCH( “” PROFI “”, A24))),NOT(ISERR(SEARCH( “”交通技术 “”,A24))),NOT(ISERR(SEARCH( “”装备 “”,A24) )),NOT(ISERR(SEARCH( “”且发生 “”,A24))),NOT(ISERR(SEARCH( “” emplo “”,A24))) ,NOT(ISERR(SEARCH( “”液体肥皂剂量 “”,A24))),NOT(ISERR(SEARCH( “”预提 “”,A24))),NOT (ISERR(SEARCH( “”因斯 “”,A24))),NOT(ISERR(SEARCH( “”信任 “”,A24))),NOT(ISERR (搜索(“ mana ”,“A24”)),NOT(ISERR(搜索(“ mgmt ”“,A24))),NOT(ISERR(搜索) (“”激励“”,A24)))))= TRUE,C24,0)“

我需要这个填写,直到最后一个单元格包含A中的任何内容,任何想法?

1 个答案:

答案 0 :(得分:1)

您的公式可以简化为

=IF(SUM(IFERROR(SEARCH(words,A24),0))>0,C24, 0)

作为数组公式输入(Ctrl + Shift + Enter),其中words是带有要搜索的单词的命名范围。您可能会发现更容易维护。

Dim f As Range
With ActiveSheet
    Set f = .Cells(Rows.Count, 1).End(xlUp)
    If f.Row >= 24 Then 
        .Range("B24").FormulaArray = _
                "=IF(SUM(IFERROR(SEARCH(words,A24),0))>0,C24, 0)"
        .Range("B24:B" & f.Row).FillDown
    End If
End With