2016-03-18 4 views
1

Мне было интересно, может ли кто-нибудь помочь мне со следующей проблемой. У меня есть матрица в листе так:Выбор ячеек на основе критериев, затем переместить специальные (транспонирование)

__ 1w | 2w | .. | 25w 

    a | 5,6 | 4,5 | .. | 12 

    b | 2,4 | 11,2 | .. | 34,45 

    : | ::: | ::: | :: | :: 

    z | 3,3 | 1,5 | .. | 24,91 

Я хотел бы перенести строки и столбцы особым образом, чтобы они оставались как следует на новом листе:

 1w | a | 5,6 
     2w | a | 4,5 
     .. | . | ... 
     25w | a | 12 
     1w | b | 2,4 
     2w | b | 11,2 
     .. | . | ... 
     25w | b | 34,45 
     .. | . | ... 
     .. | . | ... 
     1w | z | 3,3 
     2w | z | 1,5 
     .. | . | ... 
     25w | z | 24,91 

я могу сделать это вручную, но это займет очень много времени, потому что у меня много данных. Есть ли способ автоматизировать его?

ответ

0

Сглаживание матрицы может выполняться с помощью вложенных циклов или даже перекрестных соединений SQL.

Sub flipShow() 
    Dim a As Long, b As Long, vTMPs As Variant, vVALs As Variant 

    With Worksheets("Sheet1") 
     With .Cells(1, 1).CurrentRegion 
      vTMPs = .Value2 
      ReDim vVALs(1 To (UBound(vTMPs, 1) - 1) * (UBound(vTMPs, 2) - 1), 1 To 3) 
     End With 
    End With 

    For a = LBound(vTMPs, 1) + 1 To UBound(vTMPs, 1) 
     For b = LBound(vTMPs, 2) + 1 To UBound(vTMPs, 2) 
      Debug.Print (b - 1) + ((a - 2) * UBound(vTMPs, 2)) 
      vVALs((b - 1) + ((a - 2) * (UBound(vTMPs, 2) - 1)), 1) = vTMPs(1, b) 
      vVALs((b - 1) + ((a - 2) * (UBound(vTMPs, 2) - 1)), 2) = vTMPs(a, 1) 
      vVALs((b - 1) + ((a - 2) * (UBound(vTMPs, 2) - 1)), 3) = vTMPs(a, b) 
     Next b 
    Next a 

    With Worksheets("Sheet2") 
     .Cells.Clear 
     .Cells(1, 1).Resize(UBound(vVALs, 1), UBound(vVALs, 2)) = vVALs 
    End With 

End Sub 

Sample results:

sample_results

+0

спасибо !! Это то, что мне нужно. Мне нужно узнать VBA. Спасибо m8 –

+0

Этот раствор был получен из методов, обсуждавшихся в [Расширение ячеек столбцов для каждой ячейки столбца] (http://stackoverflow.com/questions/31472816/expanding-column-cells-for-each-column-cell/31594569# 31594569). Дополнительные методы и обсуждение теории позади них доступны по этой ссылке. – Jeeped