вы также можете использовать оценку:
Dim rng As Range
Set rng = Sheets("Template_Test").Range("E2", Sheets("Template_Test").Cells(Rows.Count, 5).End(xlUp))
rng.Value = ActiveSheet.Evaluate("IF(" & rng.Address(1, 1) & "=""To"",""From"",""To"")")
Или вы можете использовать цикл и массив:
Dim rng
rng = ActiveSheet.Range("E2", ActiveSheet.Cells(Rows.Count, 5).End(xlUp)).Value
Dim i As Long
For i = 1 To UBound(rng, 1)
If rng(i, 1) = "To" Then
rng(i, 1) = "From"
Else
rng(i, 1) = "To"
End If
Next i
ActiveSheet.Range("E2", ActiveSheet.Cells(Rows.Count, 5).End(xlUp)).Value = rng
Что касается времени для запуска кодов. Оба эти усредняли 0.016 seconds
для 10 000 строк
@udearboy, извините за то, что у вас на 10 000 строк заняло 0.211
секунды. Не достаточно, чтобы волноваться, но просто пришлось втирать его.:)
Из javadoc Transformer.transform (ключ K, значение V) :
Если более одной выходной записи должно быть перенаправлено вниз по потоку,
ProcessorContext.forward(Object, Object)
и [111 ] можно использовать.Обратите внимание, что возвращение нового KeyValue просто для удобства. То же самое может быть достигнуто с помощью
BLOCKQUOTE>ProcessorContext.forward(Object, Object)
и возврата нуля.