2016-07-07 3 views
0
ROW1| 1 2 3 
ROW2| A D G 
ROW3| B E H 
ROW4| C F I 

Я хочу вывода, как это:Excel VBA несколько столбцов в одной ячейке

ROW1| 1 
ROW2| A 
ROW3| B 
ROW4| C 
ROW1| 2 
ROW2| D 
ROW3| E 
ROW4| F 
ROW1| 3 
ROW2| G 
ROW3| H 
ROW4| I 

Пожалуйста, помогите мне

+0

Вы можете разместить код, который вы уже пробовали и описать то, что вы пытаетесь для того чтобы достигнуть лучше или, возможно, загрузить фотографию своего начала ситуации и результат в качестве примера? –

+0

Дубликат: https://stackoverflow.com/questions/38232626/using-vlookup-macros-to-transpose/38232974#38232974 –

ответ

1

Попробуйте эту формулу:

=IFERROR(INDEX($A$1:$C$4,MOD(ROW()-1,4)+1,INT((ROW()-1)/4)+1),"") 

и перетащить/скопировать вниз, обязательный.

enter image description here

VBA Решение:

Sub RowsToColumn() 
    Dim dict As Object 
    Dim lastRow As Long, lastColumn As Long, cnt As Long 
    Dim myRng As Range 

    Set dict = CreateObject("Scripting.Dictionary") 

    'get last row and column with data 
    lastRow = Cells(Rows.Count, "A").End(xlUp).Row 
    lastColumn = Cells(1, Columns.Count).End(xlToLeft).Column 
    'set your range here 
    'Set myRng = Range("A1:C4") 
    Set myRng = Range(Cells(1, 1), Cells(lastRow, lastColumn)) 

    cnt = 1 
    'put cell value in dictionary 
    For Each col In myRng.Columns 
     For Each cel In col.Cells 
      dict.Add cel.Value, cnt 
      cnt = cnt + 1 
     Next cel 
    Next col 
    'display values in dictionary 
    Range("E1").Resize(dict.Count) = Application.Transpose(dict.keys) 
End Sub