Вы, кажется, чертовски склонны к подходу VBA, и если это так, скопируйте и вставьте приведенный ниже код в новый модуль в вашей книге ...
Option Explicit
Public Sub TransformData()
Dim rngCells As Range, lngCol As Long, lngRow As Long, strHeader As String
Dim lngWriteRow As Long, objDict As Scripting.Dictionary, arrNames() As String
Dim objDestSheet As Worksheet, i As Long, x As Long
Set objDestSheet = Worksheets("Transformed")
Set objDict = New Scripting.Dictionary
Set rngCells = Selection
objDestSheet.Cells.Clear
With rngCells
For lngCol = 2 To .Columns.Count
strHeader = .Cells(1, lngCol)
' Reset the array in case no names are found to have a yes next to them.
ReDim Preserve arrNames(0)
arrNames(0) = ""
For lngRow = 2 To .Rows.Count
If Left(UCase(.Cells(lngRow, lngCol)), 1) = "Y" Then
ReDim Preserve arrNames(UBound(arrNames) + 1)
arrNames(UBound(arrNames)) = .Cells(lngRow, 1)
End If
Next
objDict.Add strHeader, arrNames
Next
End With
With objDestSheet
For i = 0 To objDict.Count - 1
strHeader = objDict.Keys(i)
arrNames = objDict.Items(i)
strHeader = strHeader & " " & UBound(arrNames) & " people"
lngWriteRow = lngWriteRow + 1
.Cells(lngWriteRow, 1) = strHeader
For x = 1 To UBound(arrNames)
lngWriteRow = lngWriteRow + 1
.Cells(lngWriteRow, 1) = arrNames(x)
Next
lngWriteRow = lngWriteRow + 1
Next
End With
objDestSheet.Activate
End Sub
... затем создайте листв вашей книге под названием Преобразовано .
Добавьте ссылку на библиотеку ниже ...
![enter image description here](https://i.stack.imgur.com/P9pOo.png)
Сейчасвыберите вашу матрицу данных и запустите макрос.
![enter image description here](https://i.stack.imgur.com/dvulx.gif)
Надеюсь, это сработает для вас.