使用自定义顺序和包含逗号的值编写 Excel VBA 排序代码

2023-12-05

在 VBA 中,Excel 允许使用 CustomOrder 参数对值进行排序,以选择排序的序列项。不幸的是,项目序列是用逗号分隔的,并且我的排序项目之一包含逗号。例如,我想按第二列中的类别对第一列中的数据进行排序。 “空中、陆地或海上”类别包含逗号。


Data1     Aerospace
Data2     Cyberspace
Data3     Cyberspace
Data4     Air, Land, or Sea
Data5     Aerospace
Data6     Air, Land, or Sea
Data7     Cyberspace
  

如果您录制 VBA 宏,则创建的代码如下所示:

MyWorksheet.Sort.SortFields.Add Key:=Range( _
    "B:B"), SortOn:=xlSortOnValues, Order:=xlAscending, _
    CustomOrder:= "Cyberspace,Air,Land,or Sea,Aerospace", _
    DataOption:=xlSortNormal  
MyWorksheet.Sort.Apply

因此,自定义排序顺序应该是“网络空间”,然后是“空中、陆地或海上”,然后是“航空航天”。然而,由于逗号的原因,第二个类别被视为三个类别。包含“Air、Land 或 Sea”的行会排序到底部,因为 Excel 找不到它们的自定义排序匹配项。 有没有办法让 CustomOrder 处理包含嵌入逗号的类别?

我尝试在类别周围加上双引号,并尝试用分号替换分隔符逗号(希望 Excel 能够接受分号而不是逗号)。两者都不起作用。


似乎缺少了Apply。你可以添加吗

MyWorksheet.Sort.Apply

您的自定义订单与我的示例中一样有效。

EDIT根据OP更新的问题进行更新

将宏编辑为以下内容 - 使用 OrderCustom 参数的数组。

Dim oWorksheet As Worksheet
Set oWorksheet = ActiveWorkbook.Worksheets("Sheet1")
Dim oRangeSort As Range
Dim oRangeKey As Range

' one range that includes all colums do sort
Set oRangeSort = oWorksheet.Range("A1:B9")
' start of column with keys to sort
Set oRangeKey = oWorksheet.Range("B1")

' custom sort order
Dim sCustomList(1 To 3) As String
sCustomList(1) = "Cyberspace"
sCustomList(2) = "Aerospace"
sCustomList(3) = "Air, Land, or Sea"

Application.AddCustomList ListArray:=sCustomList
' use this if you want a list on the spreadsheet to sort by
' Application.AddCustomList ListArray:=Range("D1:D3")

oWorksheet.Sort.SortFields.Clear
oRangeSort.Sort Key1:=oRangeKey, Order1:=xlAscending, Header:=xlGuess, _
    OrderCustom:=Application.CustomListCount + 1, MatchCase:=False, _
    Orientation:=xlTopToBottom, DataOption1:=xlSortNormal

' clean up
Application.DeleteCustomList Application.CustomListCount
Set oWorksheet = Nothing
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用自定义顺序和包含逗号的值编写 Excel VBA 排序代码 的相关文章

  • 按文件名对 $_FILES 进行排序 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 他俩 如您所知 在新的 HTML5 中 您可以非常轻松地上传多个文件 但我这里的问题是如何按列 名称 对 FILES 数组进行排序 这是
  • C# 无法将欧元符号打印到文件中(使用 Excel 打开时)

    我在使用 Web api 控制器的 get 方法时遇到问题 此方法返回一个 HttpResponseMessage 对象 该对象具有带有 csv 文件的 HttpContent 其中包含欧元符号 当该方法返回文件时 不会打印欧元符号 该方法
  • “Desort”向量(撤消排序)

    在Matlab中 sort返回排序后的向量和索引向量 显示哪个向量元素已移动到以下位置 v ix sort u Here v是一个包含所有元素的向量u 但已排序 ix是一个向量 显示每个元素的原始位置v in u 使用 Matlab 的语法
  • 有没有更快的方法来使用Powershell解析Excel文档?

    我正在与一个接口MS Excel文件通过Powershell 每个 Excel 文档可能有大约 1000 行数据 目前这个脚本似乎读取了Excel文件并以每 0 6 秒 1 条记录的速率将值写入屏幕 乍一看 这似乎非常慢 这是我第一次阅读E
  • 使用 ADODB 连接从关闭的工作簿中检索数据。某些数据被跳过?

    我目前正在编写一些代码 可以通过 ADODB 连接访问单独的工作簿 由于速度的原因 我选择了这种方法而不是其他方法 下面是我的代码 Sub GetWorksheetData strSourceFile As String strSQL As
  • 无法使用 VBA 代码从 Excel 连接到 Teradata - 无法通过网络访问 Teradata 服务器

    我一直在尝试使用 vba 代码从 Excel 连接到 Teradata 但收到以下错误 无法通过网络访问 Teradata Server 我已经能够从 Teradata SQL 助手成功连接 并且还成功 ping 通 Teradata 服务
  • 使用 VBScript 在日期字段值上选择错误的数据

    我有一张包含以下数据的表 现在 Excel 共有 36 个任务 每个任务有 4 列 第一个任务 即 Task1 名称将始终从 L 列开始 144 列描述了 36 个任务 现在我们需要按行进行检查 并需要检查 TNStart 开始日期 你们能
  • 使用PHP从doc、xls文件中读取数据

    我想知道是否可以从 doc 和 xls 文件中读取数据并将 将内容读取到图像文件中 创建文档的页面样本 例如 我有一些文件希望我的客户购买 所以我需要自动创建小图像 例如我的文档样本 我们将不胜感激您的帮助 对于读取 xls 文件 我真的推
  • 如何使用vba复制Excel工作表中的动态范围

    我试图使宏中的范围是动态的 而不指定最后一行x Sheets SheetName Range A2 K1000 Copy在 1000 行中 我想将其更改为动态 因为有时我的数量会更少或更多 尝试这个 Sub Test Dim lRow as
  • 如何将 .xlsx 文件上传到 jenkins 作业

    如何将 xlsx 文件作为构建参数上传到 jenkins 作业 我尝试使用文件参数 但我发现该文件正在丢失其扩展名或原始格式 有什么方法可以从 jenkins UI 将 excel 文件上传到 jenkins 作业吗 In the file
  • 使用 XMLHTTP 进行抓取会在特定类名处引发错误

    我正在尝试使用此代码抓取网站以提取姓名和联系人 Sub Test Dim htmlDoc As Object Dim htmlDoc2 As Object Dim elem As Variant Dim tag As Variant Dim
  • 在 VBA 中捕获 shell 命令的输出值?

    发现这个功能http www cpearson com excel ShellAndWait aspx http www cpearson com excel ShellAndWait aspx 但我还需要捕获 shell 的输出 有什么代
  • 将 Excel 读取到从第 5 行开始并包括标题的 Python 数据框

    我有一个 Excel 工作簿 它在打开时运行一些 vba 刷新数据透视表并执行其他一些操作 然后我希望将数据透视表刷新的结果导入到 python 中的数据框中以进行进一步分析 import xlrd wb xlrd open workboo
  • 将 HTML 转换为 Excel 的最佳方法是什么

    我有一个 HTML 页面 其中包含 Flash 图表 FusionCharts 和 HTML 表格 我需要将这整个事情转换成Excel HTML 表格应显示在 Excel 工作表的单元格中 Flash 图表可以显示为图像 我们可以使用任何开
  • 在工作表中合并行和求和值

    我有一个 Excel 工作表 其中包含以下数据 管道 来分隔列 A B C X 50 60 D E F X 40 30 A B C X 10 20 A B C Y 20 20 A B C X 20 70 D E F X 10 50 A B
  • Java 8 流排序字符串列表[重复]

    这个问题在这里已经有答案了 我正在流上调用排序方法 java 文档说 Sorted 方法返回一个由该流的元素组成的流 并根据自然顺序排序 但是当我运行下面的代码时 List
  • 索引行和列意外结果

    我试图理解以下行为 如果我有以下数据 A B a 1 b 2 c 3 如果我使用 INDEX A 1 B 3 它将正确显示整个范围 如果我使用 INDEX A 1 B 3 1 它将正确显示两列第一行的数据 如果我使用 INDEX A 1 B
  • 如何在缩进层次结构中找到父级?

    我目前有一张 Excel 工作表 其中包含缩进的项目层次结构 如下所示 每个项目都缩进 每个缩进四个空格 以显示它如何适应整体层次结构 我已经能够创建一个 级别 列 将缩进级别转换为数字 Item Level Parent P1 1 N A
  • 从给定的项目列表创建子列表

    我首先要说的是以下问题不是为了家庭作业目的即使因为我几个月前就完成了软件工程师的工作 无论如何 今天我正在工作 一位朋友向我询问了这个奇怪的排序问题 我有一个包含 1000 行的列表 每行代表一个数字 我想创建 10 个子列表 每个子列表都
  • 从Excel单元格中提取固定长度的数字

    一些类似名称的线程 但仍然无法解决我的问题 我需要从 Excel 字符串中提取固定长度的 NUMBER 值 在我的场景中为 8 位数字 为此目的提供了以下 Excel 公式 MID A1 FIND SUBSTITUTE SUBSTITUTE

随机推荐

  • 同步块是否会阻止其他线程向同步列表中插入数据?

    所以我正在开发一个多线程java应用程序 我有这个问题 List
  • 负数和正数的正则表达式

    我需要一个输入字段的正则表达式 以允许负数和正数 并且不允许字母 特殊字符 我见过其他人实现了这一点 但他们允许在字符串中的任何位置使用减号 而我只想允许在字符串的开头使用减号 注意 我想允许用户使用箭头 del home 键等 这是获取正
  • 如何在 SSRS 2008 R2 中将图表的宽度与 Tablix 的宽度对齐?或者如何使用 DynamicWidth 属性?

    我正在创建 SSRS 报告 该报告由 tablix 和图表组成 两者都描述相同的数据 即相同的数据库查询 Tablix 的实际列数由查询返回的行数动态决定 我们以按列的方式显示记录 Example 如果查询返回 5 条记录 则 Tablix
  • 如何将缓存清单添加到 Meteor 应用程序?

    嗯 添加就没有问题了 但是如何生成缓存清单呢 我需要以某种方式获取 Meteor 生成的 CSS 和 JS 组合的路径 http www whatwg org specs web apps current work manifests Up
  • 查找左上角和右下角点 (C++)

    我正在为我正在进行的项目寻求帮助 我正在做的是多边形近似算法 我已经获得了边界的所有点 但为了启动算法 我需要从点集中找到左上角和右下角的点 所有点都存储在一个结构体数组中 其中包含每个点的 x 和 y 坐标 关于循环点数组的简单方法有什么
  • 如何在Android中的.csv文件中逐行写入contactname和contactno?

    我想从手机中获取联系人姓名和相应的联系人号码 并将其写入 csv文件 每行将包含整个联系人列表中每个人的联系人姓名和联系电话号码 联系方式怎么写 csv file 我编写了用于显示联系人姓名列的代码 但它仅显示一个联系人 这意味着它会覆盖现
  • 如何将 Map 对象写入文件

    我想从 a 写入文件Map目的 这是我的尝试 try stuMap put student getId student Path file Paths get student txt to create the file Files wri
  • MASM x64 中的跳转表实现?

    我正在尝试使用跳转表在汇编 MASM64 Windows x64 中实现算法 基本思想是 我需要对数据执行 3 种不同类型的操作 这些操作取决于一些变量 但我发现实现大量切换和许多冗长的实现很乏味 PUBLIC superFunc 40 v
  • JTidy java API 将 HTML 转换为 XHTML

    我正在使用 JTidy 从 HTML 转换为 XHTML 但我在我的 XHTML 文件中发现了这个标签 nbsp 我可以阻止它吗 这是我的代码 from html to xhtml try fis new FileInputStream h
  • 如何将 DatagridView 保存在 Xml 中并将 Xml 加载到 datagridView?

    您好 我想将数据从 datagridview 保存并加载到 xml 我的想法是 我可以将我的 datagridview 保存到 xml 中 gt date name xml 然后我可以加载此数据 对于这两个操作我想使用两种方法 gt Sav
  • 如何以编程方式在 C++ 或 Python 中列出 DLL 的依赖项?

    我目前正在使用 Boost Python 为 C 项目编写 Python 接口 问题是 如果缺少 DLL Python 会给我们一条非常无用的错误消息 ImportError DLL 加载失败 找不到指定的模块 根据这个网站不可能显示比这更
  • Prestashop 1.6 获取模块类的实例

    我有一个被重写的类OrderConfirmationControllerCore 我有一个带有类的模块Abra 我需要获取一个实例Abra类在OrderConfirmationControllerCore 我的代码是 class Order
  • PostSharp 参数验证 - 使用 RegularExpressionAttribute 查找前导/尾随空格

    我正在使用 PostSharp 3 1 通过验证属性来验证属性的参数 我想用正则表达式属性执行验证 它接受表示正则表达式的字符串 如果字符串有任何前导或尾随空格 但字符串可能在单词之间包含空格 我想抛出异常 在使用 PostSharp 属性
  • 反序列化 JSON 子文档

    我正在调用 JIRA Rest API 来接收工作日志对象列表 我收到的 JSON 看起来像 startAt 0 maxResults 1 total 1 worklogs self http www example com jira re
  • 有没有办法使用 LINQ 表达式填充集合?

    LINQ 的优点之一是允许您获取与集合相关的信息 而无需手动编写代码来迭代集合 有没有办法使用 LINQ 填充集合 从而避免编写循环 例如 假设我有以下代码 它适用于从 1 到 10 的数字范围 public static void Lin
  • 在 WPF 应用程序中使用 .NET Standard 程序集中的内容文件

    我想将文件嵌入到 NET Standard 程序集中 并在 WPF 应用程序的 XAML 中使用它 如果您将构建操作设置为Resource在其他程序集中使用嵌入文件非常容易 但是您必须使用
  • 在 Angular (v5) 中,如何监听我的应用程序 Redux 状态对象的变化?

    我需要知道如何创建一个监听器 例如我想订阅 AppState 更改 以下是我目前非常基本的服务 我在视图上有一个调度操作 它会增加计数器 一旦计数器改变值 我想在我网站的其他部分检测到这一点 例如例如全局标头 我正在使用 ng2 Redux
  • 将光标设置到 CKEditor 中的特定位置

    有没有办法将光标位置设置为 CKEditor 内的已知索引 我想这样做是因为当我更改编辑器内的 html 时 它会将光标重置到插入元素的开头 这是一个问题 因为我在用户键入时动态更改内容 如果我知道我想将光标设置回编辑器内的已知字符位置 例
  • 尝试获取本周星期一的日期

    我已经实现了一种方法来获取本周星期一的日期 并且我已将星期一指定为本周的第一天 但是 无论我做什么 它都会返回 Sun Mar 24 15 03 07 GMT 2013 我看不出这里有什么问题 有人可以帮忙吗 public static D
  • 使用自定义顺序和包含逗号的值编写 Excel VBA 排序代码

    在 VBA 中 Excel 允许使用 CustomOrder 参数对值进行排序 以选择排序的序列项 不幸的是 项目序列是用逗号分隔的 并且我的排序项目之一包含逗号 例如 我想按第二列中的类别对第一列中的数据进行排序 空中 陆地或海上 类别包