2013-11-18 5 views
-1

Я новичок в макросах excel. Мои требования:Как сменить строку на столбец

Для данной матрицы, которая имеет один столбец с несколькими строками, мне нужно изменить эти строки на столбец на следующем листе (говорит sheet2).

Col1 
xyz 
pqr 
abc 

Это нужно изменить строки в sheet2 следующим образом:

xyz pqr abc 

Это то, что я пробовал:

Sub rowToCol() 
    Dim i As Integer 
    Dim n As Integer 
    n = Application.WrokSheetFunction.CountIf(Range("A2:A4"), "Col1") 

    For i = 1 To n 
     Sheet2.Cells(i, 1) = Sheeti.Cells(1, i) 
    Next 
End rowToCol 
+1

Зачем вам нужен код? Просто скопируйте диапазон и сделайте пастовую специальную транспозицию :) –

+3

Если вам все еще нужен код VBA, тогда запишите макрос выше, а затем внесите его в соответствии с вашими потребностями ... :) –

+0

Фактически, что я спросил, я всего лишь часть моего другие требования ... Мне нужно, чтобы написать код VBA .. Просьба помочь мне, как я могу написать это – Samraan

ответ

0

Простой Записанный макрос для транспонирования.

Sub Macro2() 

    ActiveWorkbook.Sheets(1).Select 
    Range("A" & 2).Select 
    Range(Selection, Selection.End(xlDown)).Select 
    Selection.Copy 


    ActiveWorkbook.Sheets(2).Select 
    Range("A1").Select 
    Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:= _ 
     False, Transpose:=True 
End Sub 
0

Это всегда удобно, чтобы избежать Select ИНГ объектов/диапазонов, если строго не требуется. Таким образом, вы использовали бы ссылки на те объекты/диапазоны, в вашем случае как

Sub trnsp() 
    Dim rng1 As Range, rng2 As Range 
    Set rng1 = Worksheets("Sheet1").Range("A2:A4") 
    rng1.Copy 
    Set rng2 = Worksheets("Sheet2").Range("A1") 
    rng2.PasteSpecial Paste:=xlPasteAll, Transpose:=True 
End Sub 

При необходимости вы должны изменить названия листов и диапазоны.

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