Цитата |
---|
oleg9911 написал: нашел и записал новую цифру 0, поверх 1-цы или любой другой цифры, дальше идет и так далее |
Код |
---|
=ЕСЛИ(ЕНД(ВПР(J2;$F$2:$F$4;1;0));1;0) |
Или вместо 1 могут быть другие значения и надо менять только там, где есть совпадение? Тогда можно так:
Код |
---|
Sub NullIfFind() Const lFst_ROW& = 2, lValues_COL& = 6, lLookup_COL& = 10, lResult_COL& = 7 Dim avals, alookup, aresult, x Dim lr&, llastr& 'значения для поиска llastr = Cells(Rows.Count, lValues_COL).End(xlUp).Row If llastr < lFst_ROW Then Exit Sub End If avals = Range(Cells(lFst_ROW, lValues_COL), Cells(llastr, lValues_COL)).Value 'значения для просмотра искомых llastr = Cells(Rows.Count, lLookup_COL).End(xlUp).Row If llastr < lFst_ROW Then Exit Sub End If alookup = Range(Cells(lFst_ROW, lLookup_COL), Cells(llastr, lLookup_COL)).Value 'перезаписываемый результат (2 столбца) aresult = Range(Cells(lFst_ROW, lResult_COL), Cells(llastr, lResult_COL + 1)).Value 'ищем For lr = 1 To UBound(avals, 1) x = Application.Match(avals(lr, 1), alookup, 0) If Not IsError(x) Then aresult(x, 1) = 0 aresult(x, 2) = 0 End If Next 'перезаписываем результат Cells(lFst_ROW, lResult_COL).Resize(UBound(aresult, 1), UBound(aresult, 2)).Value = aresult End Sub |
можно и проще, но будет медленнее на больших массивах.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...