Я хотел бы, чтобы данные, находящиеся в (A1: A: 5), отображались в (B1: B5) в обратном порядке. Нижняя часть в A5 появится в B1 и так далее. Пожалуйста и спасибоExcel, простое обратное уравнение
0
A
ответ
1
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 и перетащить вниз.
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
0
с VBA
Range("B1:B5").Value = Application.Transpose(Split(StrReverse(Join(Application.Transpose(Range("A1:A5").Value), "|")), "|"))
Посмотрите здесь и посмотрите, поможет ли это. Сначала он показывает, как это сделать с помощью GUI, но потом, как это сделать через VBA (прокрутите вниз немного): http://www.makeuseof.com/tag/excel-quick-tips-flip-cells-switch-rows -columns / – Aaron