Страницы: 1
RSS
Если значение подходит копируем весь столбец, МАКРОС
 
Добрый день подскажите как написать макрос который при нахождении в шапке, значений;
TypeDomaTypULLSVOL_INDN_SERVSQUARESTATUS
Копировал бы эти столбцы целиком в новую книгу (и вставлял значениями)
Файл пример прилагается
Изменено: Kentavrik7 - 18.03.2019 10:03:24
 
В модуль листа:
Скрытый текст

Поторопился и не до конца понял условие задачи. Но все же можете пользоваться, если пригодится. Макрос двойным щелчком по заголовку таблицы, переносит содержимое на новый лист.
Изменено: magistor8 - 27.02.2019 17:49:03
 
magistor8,Спасибо большое попробую) Но я правда не вижу где бы он выбирал столбцы под названием "TypeDoma" ,"TypUL", "LS" , "VOL_IND", "N_SERVSQUARE", "STATUS" и копировал конкретно их
 
Или может есть способ вытянуть данные столбцы другим способом? Просто файлов в которых требуется это сделать довольно таки много
 
Получается условие такое, если столбец соответствует значению из массива копируем столбец вставляем в новую книгу. Помогите будьте добры.
Изменено: Kentavrik7 - 14.03.2019 12:09:29
 
Kentavrik7, не могу открыть архив, файлов не видел. Но, могу предложить такую альтернативу.

Можете таким образом выделить по имени в шапке хоть 100 разных столбцов и скопировать их по очереди. Ну, а как через ВБА создать новый файл и вставить скопированное уже не сложно найти.
Код
A = WorksheetFunction.Match("TypeDoma", [SHEET1!a1:z1], 0)
B = WorksheetFunction.Match("TypUL", [SHEET1!a1:z1], 0)
C = WorksheetFunction.Match("LS", [SHEET1!a1:z1], 0)

Sheets("SHEET1").Columns(A).Copy
Sheets("SHEET1").Columns(B).Copy
Sheets("SHEET1").Columns(C).Copy
Изменено: Paul Zealand - 14.03.2019 12:20:22
 
Paul Zealand,вот примеры
Изменено: Kentavrik7 - 18.03.2019 10:03:36
 
Названия столбцов перечисляем через запятую, в кавычках.
Макрос запускаем из Исходного файла с нужного листа. Поиск заголовка ведется в первой строке. Если надо - измените Range("1:1") на нужную строку
Код
Sub CopyColumns()

Dim ColHeadres(), head, Rng As Range

ColHeaders = Array("TypeDoma", "TypUL", "LS", "VOL_IND", "N_SERV", "SQUARE", "STATUS")
For Each head In ColHeaders
    If Not Range("1:1").Find(head) Is Nothing Then
        If Rng Is Nothing Then
            Set Rng = Range("1:1").Find(head).EntireColumn
        Else
            Set Rng = Union(Rng, Range("1:1").Find(head).EntireColumn)
        End If
    End If
Next head
Rng.Copy
Application.Workbooks.Add.Worksheets(1).Cells(1, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
 
End Sub
 
Kentavrik7, готово. Файл во вложении. В коде адрес сохранения новой книги поменяйте. Ну, и, соответственно, там диапозоны нужные Вам, имена страниц и так далее. Также, количество и имя копируемых столбцов по этой же логике можете менять как угодно. Все работает.
Изменено: Paul Zealand - 14.03.2019 13:20:05
 
Sceptic, Paul Zealand,,Большое спасибо все очень круто )))) Работает настроил под себя, и как всегда по закону ленивого жанра появились еще хотелки)) Сейчас вариант работы такой, открыл книгу запустил макрос, он сохранил сокращенную версию (те столбцы которые в коде) в нужную папку. А можно ли это загнать в цикл? Например чтобы написать путь к папке и он каждый файл открыл скопировал столбцы, сохранил легкую версию в другую папку, потом следующую( в каждой папке по
Или это уже слишком сложно?)
Изменено: Kentavrik7 - 18.03.2019 10:03:43
Страницы: 1
Наверх