Дублирование 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 шт):
Загружаем данные в массив 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
В примере работа ведется на активном листе, столбец с данными для редактирования - столбец А.
Код разместить в общем модуле.