TEXT & ARRAY
Однострочник? Неа!
Формула Excel
=TEXT(B2,"MM/DD/YYYY")&" - "&C2
работает просто отлично.
Я был удивлен, что начальная VBA формула
Range("O2:O" & LastRow) = Evaluate(Replace("B2:B#&"" - ""&C2:C#", "#", LastRow))
будет даже работать. Итак, следуя его логике, я пришел к выводу:
Range("O2:O" & LastRow) = Evaluate( _
Replace("TEXT(B2:B#,""MM/DD/YYYY"")&"" - ""&C2:C#", "#", LastRow))
Это не работает, похоже, что функция TEXT не любит массивы. Результатом всегда являются объединенные значения из строки second (первая строка данных).
Решение
Вы всегда можете просмотреть диапазон:
Sub ConcatJEcomment()
Dim LastRow As Long
Dim lngRow As Long ' Row Counter
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
For lngRow = 2 To LastRow
Range("O" & lngRow) = Range("B" & lngRow).Text _
& " - " & Range("C" & lngRow).Text
Next
End Sub
Еще одна проблема
Так как моя система использует '. ' вместо ' / ' в качестве разделителя даты, я хотел показать результат с косой чертой:
Range("O" & lngRow) = Format(Range("B" & lngRow), "MM/DD/YYYY") _
& " - " & Range("C" & lngRow).Text
Формула Excel сделала это без проблем, но здесь Не работает . Никаких косых черт !?
Обходной путь будет:
Range("O" & lngRow) = Replace(Format(Range("B" & lngRow), "MM/DD/YYYY"), _
".", "/") & " - " & Range("C" & lngRow).Text
Надеюсь, кто-нибудь найдет однострочник.