Как бывший опытный пользователь Lotus 1-2-3 на предыдущей работе, Патти ОЧЕНЬ привязалась к функции, которой сильно не хватает Excel: способности переносить данные в трех измерениях. Двумерное транспонирование поддерживается в Excel, но Патти не придумала, как взять строку, столбец или таблицу и распределить ее по стопке листов. Это была функция, которой ежедневно пользовались все в ее финансовом офисе, и она очень скучала по ней.

Патти права; в Excel нет встроенной функции для этого. Ближайший вариант — использовать сводную таблицу и возможности «Показать страницы», которые она включает. Как правило, вы выполняете следующие действия:

  1. Создайте сводную таблицу из ваших данных, как обычно.

  2. Поместите столбец, из которого вы хотите создать рабочие листы, в раздел «Фильтр отчета» сводной таблицы.

  3. Откройте вкладку «Параметры» на ленте. (Эта вкладка видна только при работе со сводной таблицей.)

  4. Щелкните стрелку вниз рядом с инструментом Параметры в группе сводной таблицы в левом конце ленты.

  5. Выберите Показать страницы фильтра отчета. Excel попросит вас подтвердить, что вы хотите показать страницы.

  6. 6 Щелкните ОК.

В результате вы получите серию рабочих листов, по одному на каждую запись в столбце, который вы указали на шаге 2. Каждый из этих рабочих листов содержит «страницу» сводной таблицы.

Если это все еще не совсем то, что вам нужно, вам нужно прибегнуть к использованию макроса для транспонирования данных. Такой макрос может быть довольно сложным, но в основном все, что ему нужно сделать, — это пройти по таблице данных и переместить каждую строку (или столбец) данных на отдельный рабочий лист.

В качестве примера следующий макрос (Transpose3D) будет брать каждую строку из выбранного диапазона ячеек и размещать эту строку на собственном вновь созданном листе.

Sub Transpose3D()

Dim rngTbl As Range     Dim wsName As String     Dim R As Integer     Dim C As Integer     Dim i As Integer     Dim j As Integer     Dim Killit As Integer     Dim RCount As Integer     Dim CCount As Integer     Dim Table1() As Variant     Dim Row1() As Variant

RCount = Selection.Rows.Count     CCount = Selection.Columns.Count     If RCount < 2 Then         MsgBox ("Error; Select a range with more than one row.")

GoTo EndItAll     End If

wsName = ActiveSheet.Name     R = ActiveCell.Row     C = ActiveCell.Column

Set rngTbl = Selection     ReDim Table1(1 To RCount, 1 To CCount)

ReDim Row1(1 To 1, 1 To CCount)

Table1() = rngTbl.Value

On Error GoTo Abend

For i = 1 To RCount          If SheetExists(wsName & "_Row_" & i) Then             Killit = MsgBox("Sheet " & wsName & "_Row_" & i & _               " Already Exists!" & vbCrLf & _               "     Cancel: Stop Transposition" & vbCrLf & _               "     OK: Delete Sheet and Continue", vbOKCancel)

If Killit = vbCancel Then GoTo EndItAll             Application.DisplayAlerts = False             Sheets(wsName & "_Row_" & i).Delete             Application.DisplayAlerts = True         End If

Sheets.Add         ActiveSheet.Name = wsName & "_Row_" & i         Cells(R, C).Select         For j = 1 To CCount             Row1(1, j) = Table1(i, j)

Next j         Range(ActiveCell, ActiveCell.Offset(0, CCount - 1)) = Row1()

Sheets(wsName).Select     Next i     GoTo EndItAll

Abend:

MsgBox ("Error in Routine Transpose3D.")



EndItAll:

Application.DisplayAlerts = True End Sub
Function SheetExists(SheetName As String) As Boolean     Dim ws As Worksheet     SheetExists = False     For Each ws In ThisWorkbook.Worksheets         If ws.Name = SheetName Then             SheetExists = True             Exit For         End If     Next ws End Function

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (11246) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Трехмерные_перемещения [Трехмерные транспозиции].