Excel,简单的逆向等式
我希望(A1:A:5)中的数据以相反的顺序显示在(B1:B5)中。 A5中的底部出现在B1等等。 请和谢谢
在B1中input:
=INDEX(A:A,6-ROW())
并抄下来:
把这个公式放在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)))
它是dynamic的,不关心A中有多less个值,它会根据需要resize。
Sub ReverseRange() For i = 1 To 5 Range("b" & i).Value = Range("a5").Offset(0 - (i - 1), 0).Value Next i End Sub
使用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
当你执行这个macros时,它会询问你想要以相反顺序重写哪一个列的范围。
使用公式:
你可以使用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)
只要在单元格b2处放置=OFFSET($A$1;COUNTA(A:A)-ROW(A1);0)
并向下拖动即可。
与VBA
Range("B1:B5").Value = Application.Transpose(Split(StrReverse(Join(Application.Transpose(Range("A1:A5").Value), "|")), "|"))