Перебудова таблиць

Не секрет, що більшість користувачів Excel, створюючи таблиці на аркушах, думають в першу чергу про власний комфорт, тобто при розробці дизайну таблиць виходять з критеріїв зручності перегляду для людини, але не зручності для Excel. Ось і народжуються на світло красиві, зі складними "шапками", строкаті й громіздкі таблиці, які при цьому абсолютно не можна ні відфільтрувати, ні відсортувати, а про автоматичний звіт Зведеною таблицею краще і не думати взагалі.

Рано чи пізно користувач такої таблиці приходить до думки, що "нехай буде не так красиво, зате можна працювати" і починає спрощувати дизайн своєї таблиці, приводячи його у відповідність з класичними рекомендаціями. І якщо зробити однорядковий шапку або розбити один стовпець на кілька досить просто, то реконструювання таблиці може зайняти багато часу (особливо при великих розмірах таблиці). Мається на увазі наступна ситуація:

З     зробити    

Таке завдання краще вирішувати за допомогою макросу. Відкрийте редактор Visual Basic ( Сервіс - Макрос - Редактор Visual Basic ), вставте новий модуль ( Insert - Module ) і скопіюйте туди текст цього макросу:

Sub Redesigner()
    Dim InVal As Variant
    Dim OutVal() As Variant
    Dim j, k, i As Long
    Dim NewSheet
    i = 1
    InVal = Selection.Formula
    ReDim OutVal(1 To Selection.Count, 1 To 3)
    For j = 2 To UBound(InVal, 1)
        For k = 2 To UBound(InVal, 2)
            If InVal(j, k) <> "" Then
                OutVal(i, 1) = InVal(j, 1)
                OutVal(i, 2) = InVal(1, k)
                OutVal(i, 3) = InVal(j, k)
                i = i + 1
            End If
        Next k
    Next j
    Set NewSheet = Worksheets.Add
    NewSheet.Range("A1").Resize(UBound(OutVal, 1), 3).Value = OutVal
End Sub 

Після цього можна закрити редактор VBA, повернутися в Excel, виділити вихідну таблицю (повністю, з шапкою і першим стовпцем з місяцями) і запустити наш макрос через меню Сервіс - Макрос - Макроси (Tools - Macro - Macros) .

Макрос вставить в книгу новий аркуш і створить на ньому новий, реконструйований варіант виділеної таблиці. З такою таблицею можна працювати "по повній програмі", застосовуючи весь арсенал засобів Excel для обробки та аналізу великих списків.