Как преобразовать список в таблицу (с плавающим количеством строк)? - VBA

Узнай цену своей работы

Формулировка задачи:

Приветсвтую, Есть список страниц сайта с результатом проверки на уникальность. Хотелось бы получить горизонтальную таблицу типа: Основная трудность в том, что в списке

плавающее количество строк

Примечания: 1. в качестве разделителя используются символы ",,," (автозаменой можно заменить на любой - не приципиально) 2. Хотя значения плавающее, но они идут строго

в диапазоне от 0-3

0 - (когда просто нет ячеек) от 1(ячейка b7 в примере) до 3 (диапазон b12:b14 в примере) P.S. Создавал тему с схожей задачей, и там получил ответ через =ИНДЕКС, но там было фиксированное число строк в списке. Но тут впервые столкнулся с плавающим числом строк. Пример самого файлаУникальность страниц.xlsx

Решение задачи: «Как преобразовать список в таблицу (с плавающим количеством строк)?»

textual
Листинг программы
Sub ПРЕОБРАЗОВАТЬ()
Dim m(), lr, r, c, rz, k, j
 
m = Лист1.Range("A1").Resize(Лист1.Cells(Лист1.Rows.Count, 1).End(xlUp).Row, 2).Value
k = WorksheetFunction.CountIf(Лист1.Range("A1").Resize(Cells(Rows.Count, 1).End(xlUp).Row), Лист1.Range("A1"))
ReDim rz(1 To k, 1 To 8)
For r = 1 To UBound(m)
    If InStr(1, m(r, 1), "Адрес") > 0 Then
        j = j + 1
        rz(j, 1) = m(r, 2)
        rz(j, 2) = m(r + 1, 2)
        If m(r + 2, 1) = "Найденные совпадения:" Then
        r = r + 2:
        c = 3
            Do
                r = r + 1
                rz(j, c) = m(r, 1)
                rz(j, c + 1) = m(r, 2)
                c = c + 2
                If r + 1 > UBound(m) Then Exit Do
            Loop While m(r + 1, 1) <> ",,,"
        End If
    End If
Next r
 Лист2.Range("A2").Resize(Лист1.Cells(Лист1.Rows.Count, 1).End(xlUp).Row, 8).ClearContents
 Лист2.Range("A2").Resize(UBound(rz), 8) = rz
End Sub

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 3.867 из 5
Похожие ответы