Дублирование 7 символов после ключевого слова

Есть столбец с 1000 строк в xlsx Ячейки содержат в себе описание товара с html разметкой. Необходимо найти текст src=[рандомные 7 цифр] - и дублировать эти самые 7 цифр рядом.

На выходе должен быть еще точно такой же столбец только ссылки там будут уже не как в исходном

src=[1234567]

а так:

src=[1234567_1234567]

Ссылок там в ячейке html описания несколько сотен. а ячеек в столбец - почти тысяча

Пример: было >>>

описание ...<img alt="Перейти в" src="[image_id:1621172952]"

стало >>>

описание ...<img alt="Перейти в" src="[image_id:1621172952_1621172952]"

Огромное человеческое Спасибо за внимание!


Ответы (1 шт):

Автор решения: vikttur

Загружаем данные в массив aData. В цикле (For i) проходим по текстам. Текст разбиваем на фразы по фрагменту-разделителю (sSeparator), записав фразы в массив aSpl. Последовательно (во внутреннем цикле For j) соединяем фразы, добавляя перед каждой (кроме первой) фрагмент из начала фразы (длина фрагмента задается константой lLenID). Выгружаем отредактированные данные на место исходных.

Sub RepeatID()
    Dim aData(), aSpl
    Dim sTemp As String
    Dim i As Long, j As Long
    Const sSeparator As String = "image_id:" ' текст перед ID '
    Const lLenID As Long = 10 ' количество символов ID '
    
    With ActiveSheet ' Worksheets("sheet1") '
        i = .UsedRange.Rows.Count + .UsedRange.Row - 1
        aData = .Range("A1:A" & i).Value
      
        For i = 1 To UBound(aData)
            If aData(i, 1) <> Empty Then
                aSpl = Split(aData(i, 1), sSeparator)
                sTemp = aSpl(0) & sSeparator
            
                For j = 1 To UBound(aSpl)
                    sTemp = sTemp & Left$(aSpl(j), lLenID) & "_" & aSpl(j) & sSeparator
                Next j
            
                aData(i, 1) = sTemp
            End If
        Next i
        
        .Range("A1").Resize(UBound(aData), UBound(aData, 2)).Value = aData
    End With
End Sub

В примере работа ведется на активном листе, столбец с данными для редактирования - столбец А.

Код разместить в общем модуле.

→ Ссылка