Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Консолидация текстовых данных
 
Добрый день. Подскажите, имеется файл в excel c 80 листами, содержащими сведения в формате ФИО, г.р. и пр. информацию, преимущественно текст. Формат данных на всех страницах одинаков, строчек много, иногда более 700. Задача - все данные со всех страниц вывести на сводную. Названия столбцов на сводной, такие же, как на остальных листах. Никаких математических операции над данными производить не нужно. Я плохо знаю excel, поиск тоже не приносит результатов.
 
Цитата
soms написал:
все данные со всех страниц вывести на сводную
Под этим подразумевается, что данные одного листа должны следовать за данными другого и т.д?
Варианты
1.MSQuery
2.PowerQuery
3. VBA код.
Только без примера структуры более ничего не предложить, но скорее всего вы плохо искали, ибо не только у Вас такая задача.
 
 
Спасибо. Да, данные одного листа должны следовать за данными другого. O PowerQuery я только что посмотрел.
 
soms, если сейчас Вам напишут код, Вы сможете адаптировать его под СВОЮ структуру данных?
 
Я хотел бы сам разобраться. Файл с коротким примером.Пример таблицы.xlsx (9.1 КБ)
Изменено: soms - 31 Мар 2018 19:56:24
 
Цитата
soms написал:
имеется файл в excel c 80 листами
soms, Вы лентяй? )) Из чего собирать? Хотя бы 2-3 листа с филиалами могли сделать?  
 
Например, используя макрос:
Код
Option Explicit

Sub Makros_konsolidatsiya()
Dim i As Integer: i = 0
Dim tabl() As Variant
Dim wrksht As Worksheet
Const ListKnsldt As String = "Svod"

    Application.ScreenUpdating = False
    Application.Calculation = xlManual
    With ThisWorkbook
        With .Sheets(ListKnsldt)
            If .Index <> 1 Then .Move Before:=ThisWorkbook.Sheets(1)
            .UsedRange.Clear
        End With
        For Each wrksht In .Worksheets
            If wrksht.Name <> .Sheets(1).Name Then 'ili: If wrksht.Name <> ListKnsldt Then
                With wrksht
                    With .Range("a1").CurrentRegion
                        tabl = .Offset(i, 0).Resize(.Rows.Count - i, .Columns.Count).Value
                    End With
                End With
                With .Sheets(ListKnsldt)
                    .Range("a" & Application.CountA(Range("a:a")) + 1).Resize(UBound(tabl, 1), UBound(tabl, 2)).Value = tabl
                End With
                Erase tabl
                If i = 0 Then i = 1
            End If
        Next
    End With
    Application.Calculation = xlAutomatic
    Application.ScreenUpdating = True
End Sub
Изменено: ocet p - 31 Мар 2018 22:03:53
 
Цитата
Юрий М написал:
soms , Вы лентяй? )) Из чего собирать? Хотя бы 2-3 листа с филиалами могли сделать?  
Я совсем не лентяй. Сделать мог конечно. Я думал, что достаточно одного листа.
ocet_p, спасибо.
 
ocet p, tabl=Range.value  : Range.value=tabl
ровно до случая, как тут https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=103060&...  
 
Нет, потому что в первом ротации макрос копирует таблицу с заголовками, а в следующих - без них. Кроме того, на каждом листе может быть разное количество строк. Количество столбцов также может быть изменено автором.
Изменено: ocet p - 31 Мар 2018 23:03:55
 
Цитата
ocet p написал:
в первом ротации макрос копирует таблицу с заголовками, а в следующих - без них
А какой смысл копировать шапку? Заготовьте её на листе-сборщике сразу, а потом копируйте только данные.
 
Это ваш вариант.
Страницы: 1
Читают тему (гостей: 1)
Наверх