excel - 如何对选择进行排序
问题描述
我正在尝试对选择进行排序。我在谷歌上搜索过,所有的点击都想对选择中的数据进行排序,他们的标题不准确。我想对选择进行排序。所以发生的事情是我的工作表在列中有代码列表。用户将根据需要在任意多的列中选择任意数量的代码(通过使用控制键并选择任何他想要的单元格)。当我在 VBA 中循环选择时,我得到了用户选择它们的顺序中的单元格。我需要按列顺序处理它们,然后按行顺序处理它们。我的代码循环选择...
Dim cl As Range
For Each cl In Selection
MsgBox "Found cell " & cl.Address & "..." & cl.Value
Next cl
我的问题是......我如何让我的循环按(cl.column,cl.row)的顺序给我单元格?
更多信息...我在下面粘贴了我的电子表格的图像。它们是来自 ABS Webservice API 的 CPI 代码列表,尽管这并不重要。我使用了截图工具,当我拍摄图像时,所选单元格的突出显示没有显示,所以我在拍摄图像后再次以黄色突出显示它们。用户可能以任何顺序选择了单元格,但我需要按(列,行)处理选定的单元格。选定的单元格不一定是连续的。
解决方案
我不知道一些“直接”/本机方法可以按排序的行/列顺序循环遍历范围
所以这是一个带有SortedList
对象的“间接”:
Option Explicit
Sub ListCellsSortedByColumns()
Dim cell As Range
Dim j As Long
With CreateObject("System.Collections.SortedList")
For Each cell In Selection
.add GetKey(cell), cell
Next
For j = 0 To .Count - 1
MsgBox "Found cell " & .GetByIndex(j).Address & "..." & .GetByIndex(j).Value
Next
End With
End Sub
Function GetKey(cell As Range) As String
Dim var As Variant
var = Split(cell.Address(, , xlR1C1), "C")
GetKey = Format(var(1), "000") & "|" & Format(Mid(var(0), 2), "000")
End Function
您应该在哪里调整函数的"000"
一部分以适应Format()
您的情况:“000”处理最大行/列索引为 999 的单元格的排序
推荐阅读
- rabbitmq - 如何处理卡住的 RabbitMQ Dynamic Shovel 消息
- node.js - Sequelize 关联表组
- amazon-eks - 在已安装 cert-manager 的现有 EKS 集群上安装 Kubeflow
- excel - 通过 INDEX MATCH 随机的另一个表的表头名称
- html - 如何使用引导程序将标签内联在 html 中居中
- openshift - 在 rhel 上部署 openshift 4 集群
- cics - 阅读 CICS 中的更新
- sql - 在 Prisma/Graphql 一对一和一对多上遇到困难
- machine-learning - 如何在模型输出中附加张量?
- asp.net-core - 如何将 Blazor(客户端)添加到现有的 ASP.NET Core(服务器端)或 ASP.NET Core Web API?