3

Я работаю над личным проектом, довольно простым веб-шабером. Мои результаты хранятся в формате CSV с заголовком, URL и идентификатором. ID содержит строки результатов, найденных при сопоставлении с регулярным выражением (например, ячейка ID может быть "1234567", "1111111 2222222" и т.д.) Разделение ячеек на столбцы тривиально, но как я могу легко разделить эти идентификаторы, сохраняя ссылки на соответствующие заголовок и URL? Я работаю с парой тысяч страниц, так что работать вручную - не самый лучший вариант.

Пример:

Начальное:
"Домашняя страница", foo.bar/home, 1111111 2222222

После:
"Домашняя страница", foo.bar/home, 1111111
"Домашняя страница", foo.bar/home, 2222222

2 ответа2

1

Нечто подобное в VBA должно сработать. Это не имеет проверки ошибок и не оптимизировано для скорости, но должно быть в порядке для этого. Он создаст новый лист и разделит данные так, как вы хотите.

Option Explicit
Sub test()
Dim lRow As Long, curRow As Long, pasteRow As Long
Dim dataWS As Worksheet, pasteWS As Worksheet
Dim ArrID() As String
Dim i As Long

'Since csv will only have one sheet
Set dataWS = Sheets(1)
Set pasteWS = Worksheets.Add
pasteRow = 1

lRow = dataWS.Range("A" & dataWS.Rows.Count).End(xlUp).Row

For curRow = 1 To lRow
    ArrID() = Split(dataWS.Range("C" & curRow).Value, " ")
    For i = 0 To UBound(ArrID)
        If Len(ArrID(i)) > 0 Then
            pasteWS.Range("A" & pasteRow & ":B" & pasteRow).Value = dataWS.Range("A" & curRow & ":B" & curRow).Value
            pasteWS.Range("C" & pasteRow).Value = ArrID(i)
            pasteRow = pasteRow + 1
        End If
    Next
Next

End Sub
0

Не самый элегантный

  1. разделить на столбцы. Я использовал текст в столбец, пробел и разделитель запятых, рассматривал последовательные разделители как один.
  2. Бросить в сводный стол
  3. Добавьте заголовок, URL и ID1 в строки.
  4. Перейти к настройкам поля для каждого поля, отключить промежуточные итоги. На вкладке "Макет и печать" отобразите элементы в табличной форме и повторите метки элементов.
  5. Скопируйте данные на новый лист.
  6. Поменяйте местами ID1 с ID2 в строках сводной таблицы. Скопируйте в новый лист.

связанное изображение - помогает показать метод

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .