Страницы: 1
RSS
Собрать несколько столбцов в один
 
Здравствуйте, помогите с макросом. Нашел макрос, который берет столбцы на листе "Лист1" и вставляет на "Лист3". Так-то подходит макрос, но только нужно чтобы он Не удалял шапку на "Лист3", и вставлял собранные столбцы с ячейки "A2".
Код
Sub Collect()
    Dim i As Long, j As Long, a(), b()
    Application.ScreenUpdating = False
    a = Sheets("Лист1").UsedRange.Value: Cells.Clear
    For i = 1 To UBound(a, 2) ' с какого столбика копировать "i = 4"
        j = Cells(Rows.Count, 1).End(xlUp).Row + 1
        b = Application.Index(a, 0, i)
        Cells(j, 1).Resize(UBound(b)).Value = b
    Next
    Columns(1).SpecialCells(4).Delete xlUp
End Sub
Изменено: Deniska3 - 09.06.2025 17:29:51
 
Вообще не понятно, для чего это Вам нужно, но попробуйте так, может угадал
Код
Sub Collect()
    Dim i As Long, j As Long, a(), b()
    Application.ScreenUpdating = False
    a = Sheets("Лист1").UsedRange.Value ': Cells.Clear
    For i = 1 To UBound(a, 2) ' с какого столбика копировать "i = 4"
        j = Cells(Rows.Count, 1).End(xlUp).Row + 1
        b = Application.Index(a, 0, i)
        Cells(j, 1).Resize(UBound(b)).Value = b
    Next
    Columns(1).SpecialCells(4).Delete xlUp
End Sub
 
Msi2102, да спасибо Вам!
 
альтернатива макросу (2021+)
=ФИЛЬТР.XML("<I><i>"&ОБЪЕДИНИТЬ("</i><i>";1;ТРАНСП(Лист1!A1:G10))&"</i></I>";"//i[.*0!=0]")
 
Цитата
написал:
=ФИЛЬТР.XML("  "&ОБЪЕДИНИТЬ("  ";1;ТРАНСП(Лист1!A1:G10))&"  ";"//i[.*0!=0]")
Как в этой формуле вывести числовые значения, выводит только буквенные и числовые-буквенные
 
Цитата
Valery37:   Как в этой формуле вывести числовые значения,
Конкретно в этой - никак. Вот это  [.*0!=0]  как раз и отвечает за вывод нечисловых узлов (по условию задачи числовую шапку как раз выводить и не надо)
Если нужны все узлы, то достаточно   "//i"
 
ПавелW, да то что нужно, спасибо Вам!
Изменено: Valery37 - 03.07.2025 10:11:02
 
Подскажите, а если в столбце будут объединённые ячейки, например столбец "D" будите объединён "D1:E1", "D2:E2", "D3:E3" и тд, как можно вывести такой список? Возможно вообще такое?
Цитата
написал:
=ФИЛЬТР.XML("  "&ОБЪЕДИНИТЬ("  ";1;ТРАНСП(Лист1!A1:G10))&"  ";"//i[.*0!=0]")
 
Цитата
Valery37 написал: а если в столбце будут объединённые ячейки
А самому попробовать? Заодно и нам потом расскажите
Согласие есть продукт при полном непротивлении сторон
 
Sanja, здравствуйте пробывал, выдаёт такой результат "#ПЕРЕНОС!".
 
Ну да, видимо, динамические массивы не дружат с объединенными ячейками.
Объединенные ячейки в принципе очень затрудняют процесс работы с данными
В статье про это есть
Цитата
Разлив в объединенные ячейки. Динамический массив не может разливаться в объединенную ячейку.
Формулы динамических массивов в excel
Изменено: Sanja - 03.07.2025 12:10:18
Согласие есть продукт при полном непротивлении сторон
 
Спасибо за ответ))
Страницы: 1
Читают тему
Наверх