Как преобразовать список в таблицу (с плавающим количеством строк)? - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д