2016-09-06 3 views
0

У меня есть лист Excel, который будет иметь строки с определенными географическими параметрами. Я хотел бы транспонировать все строки между Файл и следующий Файл к соседним столбцам. Оригинальный лист похож на тот, что изображен на изображении - 1. Я хотел бы, чтобы он был перенесен так же, как и в изображении - 2.Как перенести строки в столбцы между двумя ячейками, которые начинаются с определенного значения?

Для одной строки - один столбец, я использовал этот код http://www.mrexcel.com/forum/excel-questions/79645-copying-alternate-rows-data-into-column.html, и он работает в совершенстве. Но не знаю, как сделать это для нескольких строк - столбцы транспонировать

enter image description here

ответ

1

Вот решение VBA

Sub TransposeData() 

    Const FirstRow As Long = 1 
    Const WorkSheetName As String = "Sheet4" 
    Dim arData, v 
    Dim List As Object 
    Set List = CreateObject("System.Collections.ArrayList") 
    Dim NextRow As Long, x As Long 

    With Worksheets(WorkSheetName) 
     arData = .Range("A1", .Range("A" & .Rows.Count).End(xlUp)).Value 
     NextRow = WorksheetFunction.CountA(.Range("B:B")) + 1 

     For Each v In arData 
      If InStr(v, "File:") And List.Count > 0 Then 

       .Cells(NextRow, "B").Resize(1, List.Count) = List.ToArray 
       List.Clear 
       NextRow = NextRow + 1 

      End If 
      List.Add v 
     Next 
     If List.Count > 0 Then .Cells(NextRow, "B").Resize(1, List.Count) = List.ToArray 
    End With 

End Sub 
+0

Только первый столбец получает транспонирование. Это тоже положение строк заменяется вместо порядка – saravanaganesh18

+0

Все данные находятся в первом столбце? –

+0

Спасибо, помощник. Теперь порядок в порядке. Но вместо строки за строкой весь столбец был перенесен в однострочную строку – saravanaganesh18

0

Это работает в Google Таблицах. В качестве образца у меня было 3 записи, каждая запись имеет 4 элемента, поэтому у меня были данные от A1 до A12, представляющие мои 3 записи. Вы хотите создать столбец, например B, который имеет числа от 0 до любого.

Тогда в ячейке C1 вы можете иметь что-то вроде = ИНДЕКС ($ A $ 1: $ A $ 12, $ B1 * 4 + 1,1)

и в ячейке D1, вы можете иметь что-то вроде = INDEX ($ A $ 1: $ A $ 12, $ B1 * 4 + 2,1)

и в ячейке E1 вы можете иметь что-то вроде = ИНДЕКС ($ A $ 1: $ A $ 12, $ B1 * 4 + 3, 1)

и в ячейке F1 вы можете иметь что-то вроде = ИНДЕКС ($ A $ 1: $ A $ 12, $ B1 * 4 + 4,1)

Итак, я закончил с первой строкой, затем просто щелкнул и перетащил, чтобы заполнить остальные строки, а поскольку $ B1 у 1 нет знака доллара, он автоматически считывает следующую строку из $ B2 и $ B3 и захватили правильные данные.

+0

Если вы замените '+ n' с' + ROW() 'одна формула будет служить вместо четырех. – pnuts

+0

Получение ошибки # REF #. Пробовал даже простые три записи из 12 строк. Но все же то же самое – saravanaganesh18

 Смежные вопросы

  • Нет связанных вопросов^_^