Страницы: 1
RSS
найти разрыв строки с фамилией и заменить на дефис с фамилией
 
Здравствуйте!

Есть столбец с фио полностью, оттуда берется фамилия через Split(Cells(1, 2))
Есть другой столбец с библиографической ссылкой, где перед фамилиями есть разрыв строки chr(10)

Пытаюсь заменить разрыв строки chr(10) с фамилией Split(Cells(1, 2)) на дефис с той же фамилией через Replace
Код
Cells(1, 3) = Replace((Cells(1, 2)), Chr(10) & Split(Cells(1, 1)), "-" & Split(Cells(1, 2)))
Дает ошибку Type mismatch.
Если переставляю кавычки вот так
Код
Cells(1, 3) = Replace((Cells(1, 2)), "Chr(10) & Split(Cells(1, 1))", "- & Split(Cells(1, 2))")
возвращает исходную ячейку без изменений.
Просто заменить разрыв строки на дефис (без фамилии) нельзя, т.к. в ячейках есть другие разрывы строк, которые надо сохранить.

Подскажите, пожалуйста, как можно решить задачу!
Спасибо!
 
Split(Cells(1, 1)) - разделение значения ячейки. Получаете массив, но не указываете, какой элемент массива нужен.
Split(Cells(1, 1).Value," ") (0)

Зачем дополнительне преобразования?
Код
Cells(1, 3) = "-" & Mid$(Cells(1, 2).Value, 2)
 
Спасибо!
Исправил !
 
Ага, менять нужно  не только в начале. но для всех Ивановых...
Код
Sub ttt()
    Dim sName As String
    
    sName = Split(Cells(1, 1).Value, " ")(0)
    Cells(1, 3).Value = Mid$(Replace(Cells(1, 2).Value, sName, "-" & sName), 2)
End Sub
 
Что-то мне сдается, что ТС хотел получить другой результат
Иванов. Собрание сочинений-М., 2000
Иванов. Избранное-Д., 1990
Иванов. Стихотворения-Мн., 1980"
 
Цитата
domybest написал: заменить...  на дефис с той же фамилией
 
Как правильно отметил vikttur, моя ошибка была в том, что не указал нужный элемент массива, когда исправил ошибку и получилось
Код
Cells(1, 3) = Replace((Cells(1, 2)), Chr(10) & Split(Cells(1, 1))(0), "-" & Split(Cells(1, 1))(0))
результат стал соответствовать моим ожиданиям!

Спасибо всем, кто откликнулся и следил на темой!
Страницы: 1
Читают тему
Наверх