excel - VBA 帮助:设置具有动态范围的自动运行 VBA
问题描述
所以我拥有的数据是这种格式: 股票数据
'31-Mar-18' 是手动输入,当在那里输入日期时,我试图运行一个函数,该函数将按降序对与输入数据单元格具有相同标题的相应列进行排序。因此,例如,如果输入单元格是“31-Mar-18”,则应根据“31-Mar-18”作为标题的列中值的降序对数据进行排序。
我在玩这段代码,但鉴于我的知识有限,不知道如何继续。任何输入将不胜感激。
Sub SortDataWithHeader()
Range("DataRange").Sort Key1:=Range("B15"), Order1:=xlDescending
End Sub
解决方案
看来您误解了 key1 属性的用法。有关更多详细信息,请参阅此链接。key1 应该包含所有要排序的值(例如在范围对象中),而不是列名。
以下内容可能对您有用,但您需要相应地调整单元格引用并在有意义的地方添加错误捕获。
代码是什么,它在单元格 B15 中查找日期,并尝试在第 17 行中找到包含它的单元格。然后它获取该单元格并将其扩展到末尾,以便定义要排序的单元格。它使用 autofilter.sort 而不是 range.sort,因为从我在您发布的图像中看到的内容,您已经应用了自动过滤器。
Option Explicit
Public Sub sSort()
Dim headerColumn As Range, headers As Range, foundRange As Range, sortItems As Range
Dim headerColumnNumber As Long
Dim lookupValue As Variant
lookupValue = Sheet1.Range("B15").Value
Set headers = Sheet1.Range("17:17")
Set foundRange = headers.Find(lookupValue, LookIn:=xlValues)
Set sortItems = Range(foundRange.Offset(1, 0), foundRange.End(xlDown))
Sheet1.AutoFilter.Sort.SortFields.Clear
Sheet1.AutoFilter.Sort.SortFields.Add Key:=sortItems, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With Sheet1.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub
推荐阅读
- java - 无法使用 .sh 文件运行我的 .jar 文件
- javascript - 显示来自 Codeigniter 函数的 JSON html 数据
- javascript - 为什么 Chrome 网上应用店在发布 chrome 扩展时会抛出错误
- image - 加载 PNG 图像文件以作为 Image 对象在 Vaadin Flow 布局上显示
- ruby-on-rails - Searchkick `all` 用于带有 OR 的多个数组
- java - JLabel 最初不显示
- php - 使用 AJAX 和 PHP 收集复选框值的问题
- postgresql - PostgreSQL 错误:错误:插入的目标列多于表达式
- ios - Circle Fill At 80 %
- powershell - Changing date for file Auditing script