当前代码:
Public Sub A()
j = 1
For i = 1 To 10
If Cells(i, 1) > 0 Then
Cells(j, 2) = Cells(i, 1)
j = j + 1
[B1:B10].Sort key1:=[B1]
End If
Next
End Sub
它的工作方式是将确实从A列复制到B并排序正数。我现在的问题是如何使它在正数下包含负数,并按降序记录它们?全部在B列中。
原文:我目前正在使用excel学习VBA,但仍处于困境 任务。我有一列A1:A20,每个单元格都存储一个数字。我需要 复制相同范围内的B1:B20并排列其中的数字 升序。我的问题是我该怎么做?
答案 0 :(得分:1)
[A1:A20].Copy [B1]
[B1:B20].Sort Key1:=[B1]
答案 1 :(得分:0)
单击“开发人员并记录宏”(如果看不到“开发人员”菜单follow this tutorial。选择单元格A1:A20。复制到B1:B20( Ctrl + C , Ctrl + V 效果最佳)。依次单击“数据”,“排序”,不展开选择,不要单击“我的数据有标题”,然后单击“单击“确定”,然后返回到“开发人员”菜单,然后单击“停止记录”,按 Alt + F11 检查刚刚创建的代码。
答案 2 :(得分:0)
Option Explicit
Sub PasteSortedRange()
Const cStrSource As String = "A1:A20" ' Source Range
Const cStrTarget As String = "B1:B20" ' Target Range
Dim vntSource As Variant ' Array
Dim lngR1 As Long ' Outer Array Counter
Dim lngR2 As Long ' Inner Array Counter
Dim dblTemp As Double ' Temporary Number Storage
With ThisWorkbook.ActiveSheet
' Paste Source Range into Array.
vntSource = .Range(cStrSource).Value2
' Sort Array.
For lngR1 = 1 To UBound(vntSource) - 1
For lngR2 = lngR1 + 1 To UBound(vntSource)
If vntSource(lngR1, 1) > vntSource(lngR2, 1) Then
dblTemp = vntSource(lngR1, 1)
vntSource(lngR1, 1) = vntSource(lngR2, 1)
vntSource(lngR2, 1) = dblTemp
End If
Next
Next
' Paste Array into Target Range.
.Range(cStrTarget) = vntSource
End With
End Sub
答案 3 :(得分:0)
假设您有一列数字范围在“(A1:A20”)
Sub paste_and_filter()
'Variable declaration
Dim rng As Range, rng2 As Range
'Set up of objects
Set rng = Range("A1:A20")
Set rng2 = Range("B1:B20")
'Copy and paste the column
rng.Select
Selection.Copy Destination:=rng2
'Filter
With ActiveSheet.Sort
.SortFields.Clear
.SortFields.Add rng2, xlSortOnValues, xlDescending, xlSortNormal
.SetRange rng2
.Header = False
.MatchCase = False
.Orientation = xlSortColumns
.Apply
End With
End Sub