У меня есть это в Excel:

 P|A |R |T
--|--|--|
--|--|--|
--|--|--|
 P|G |--|
--|--|--|
 P|--|--|

Я хочу так:

P|--|--|
A|--|--|
R|--|--|
T|--|--|
P|--|--|
G|--|--|
P|--|--|

3 ответа3

2

Этот простой UDF транспонирует показанные данные с пустыми ячейками между ними:

Option Base 1
Function TranBlank(X As Range, Y As Long) As Variant
Dim RZArray() As String
Dim c As Range


i = 0
For Each c In X
    If Len(c) > 0 Then
        i = i + 1
        ReDim Preserve RZArray(i)
        RZArray(i) = c.Value
    End If
Next c


TranBlank = RZArray(Y)
End Function

Как это устроено:

  • Скопируйте и вставьте этот код как модуль с соответствующим листом.
  • Напишите эту формулу и заполните.
  • При необходимости измените ссылки на ячейки в формуле.

    =IFERROR(TranBlank(A$2:D$7,ROW(A1)),"")

2

Попробуйте Power Query для перевода диапазона.

Выберите диапазон, перейдите к данным - из диапазона и таблицы - в редакторе Power Query выберите все столбцы - на вкладке «Преобразование» выберите «Удалить столбцы», отсортируйте значение и удалите столбец:

1

Ваш пример не может быть преобразован с помощью одной команды. Я надеюсь, что вы это видите. Часть таблицы может быть просто помечена с помощью мыши, Ctrl-C (для копирования) и щелкнуть правой кнопкой мыши в целевой позиции и выбрать "вставить специальные". Вы видите диалог, где вы можете найти "транспонировать". Как это описано здесь.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .