2017-02-22 17 views
0

Я хотел бы, чтобы данные, находящиеся в (A1: A: 5), отображались в (B1: B5) в обратном порядке. Нижняя часть в A5 появится в B1 и так далее. Пожалуйста и спасибоExcel, простое обратное уравнение

+1

Посмотрите здесь и посмотрите, поможет ли это. Сначала он показывает, как это сделать с помощью GUI, но потом, как это сделать через VBA (прокрутите вниз немного): http://www.makeuseof.com/tag/excel-quick-tips-flip-cells-switch-rows -columns / – Aaron

ответ

1

В В1 входят:

=INDEX(A:A,6-ROW()) 

и скопируйте:

enter image description here

0

Использование VBA:

Sub FlipColumns() 
    Dim Rng As Range 
    Dim WorkRng As Range 
    Dim Arr As Variant 
    Dim i As Integer, j As Integer, k As Integer 

    On Error Resume Next 

    xTitleId = "Tools4Excel" 

    Set WorkRng = Application.Selection 
    Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8) 

    Arr = WorkRng.Formula 

    For j = 1 To UBound(Arr, 2) 
     k = UBound(Arr, 1) 
     For i = 1 To UBound(Arr, 1)/2 
      xTemp = Arr(i, j) 
      Arr(i, j) = Arr(k, j) 
      Arr(k, j) = xTemp 
      k = k - 1 
     Next 
    Next 
    WorkRng.Formula = Arr 
End Sub 

При выполнении этого макроса, он спросит, какой столбец диапазон вы хотите переписать в обратном порядке.


Использование формул:

Вы можете использовать OFFSET(), COUNTA() и ROW() для достижения этой цели.

Пример формул:

cell B1 =OFFSET($A$1;COUNTA(A:A)-ROW(A1);0) 
cell B2 =OFFSET($A$1;COUNTA(A:A)-ROW(A2);0) 
cell B3 =OFFSET($A$1;COUNTA(A:A)-ROW(A3);0) 
cell B4 =OFFSET($A$1;COUNTA(A:A)-ROW(A4);0) 
cell B5 =OFFSET($A$1;COUNTA(A:A)-ROW(A5);0) 

Просто поместите =OFFSET($A$1;COUNTA(A:A)-ROW(A1);0) в ячейку В2 и перетащить вниз.

enter image description here

0
Sub ReverseRange() 

For i = 1 To 5 
    Range("b" & i).Value = Range("a5").Offset(0 - (i - 1), 0).Value 
Next i 

End Sub 
1

Поместите эту одну формулу в B1 и копировать/перетащить вниз:

=INDEX(A:A,AGGREGATE(14,6,ROW($A$1:INDEX(A:A,MAX(IFERROR(MATCH(1E+99,A:A),0),IFERROR(MATCH("ZZZ",A:A),0)))),ROW(1:1))) 

Это динамичный и не важно, сколько значения в A, он будет изменять по мере необходимости ,

enter image description here

0

с VBA

Range("B1:B5").Value = Application.Transpose(Split(StrReverse(Join(Application.Transpose(Range("A1:A5").Value), "|")), "|"))