Excel 中的排序保持风格?

2024-04-10

我得到了一个带有交替背景的 Excel 文件,以提高可读性。

Row 1: White Background
Row 2: Gray Background
Row 3: White Backgrund
[...]

我使用 VBA 函数对 Excel 文件的内容进行排序,通过单击按钮引发该事件:

Sub SortByName()
    ActiveSheet.Sort.SortFields.Clear
    ActiveSheet.Sort.SortFields.Add Key:=Range("BO6:BO1024"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveSheet.Sort.SortFields.Add Key:=Range("D6:D1024"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveSheet.Sort
        .SetRange Range("A6:DD1024")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

排序效果很好,就像我想要的那样,但是背景样式也会随着内容移动,这会破坏交替样式,例如:

Row 1: White (was row 3)
Row 2: White (was row 1)
Row 3: Gray  (was row 2)
[...]

有没有一种方法可以在不复制样式的情况下对内容进行排序?


我承认这是一个黑客行为,但下面的方法可以工作。它一次对一个单元格进行“修复格式” - 大概您可以更改此设置以对整行执行此操作

Sub sortNoFormat()
Dim r As Range
Dim f()    ' a place to keep the formatting
Dim ii As Integer
Dim c

' set up the sort:
Set r = Range("tosort")
ActiveSheet.Sort.SortFields.Clear
ActiveSheet.Sort.SortFields.Add Key:=r, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

' before sorting, copy the format (color) of each cell to array f:
ReDim f(1 To r.Cells.Count)
ii = 1
For Each c In r.Cells
    f(ii) = c.Interior.ColorIndex
    ii = ii + 1
Next

' Perform the sort:
With ActiveSheet.Sort
    .SetRange r
    .Header = xlNo
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

' apply the old formatting:
ii = 1
For Each c In r.Cells
  c.Interior.ColorIndex = f(ii)
  ii = ii + 1
Next

End Sub

我相信很容易看出如何创建几个辅助函数 -formats = copyFormats(range) and pasteformats(range, formats)这将使代码更加模块化和可读。这会将我上面添加的一些行封装在一个简单的包装器中,因此您的原始代码只需要两行(以及辅助模块中的两个函数)。

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

Excel 中的排序保持风格? 的相关文章

  • 在 VBA 中按键对字典进行排序

    我使用 VBA 创建了一个字典CreateObject Scripting Dictionary 将源单词映射到要在某些文本中替换的目标单词 这实际上是为了混淆 不幸的是 当我按照下面的代码进行实际替换时 它将按照源单词添加到字典中的顺序替
  • 使用 VBA 通过简单命令从非连续范围的并集获取值到数组中(无循环)

    我有以下任务 表面上很简单 使用 VBA 将电子表格上多个列的值复制到二维数组中 为了让生活更有趣 这些柱子并不相邻 但它们的长度都相同 显然 可以通过依次循环每个元素来做到这一点 但这看起来非常不优雅 我希望有一个更紧凑的解决方案 但我很
  • 如何按某些属性对对象列表进行排序

    我有简单的课 public class ActiveAlarm public long timeStarted public long timeEnded private String name private String descrip
  • 如何禁用 openpyxl 表中的自动过滤器?

    当我使用 openpyxl 创建表时 它默认在所有列上添加自动过滤器 使用中提供的示例可以重现该行为文档 https openpyxl readthedocs io en stable worksheet tables html 我想显示没
  • 如何使用Matlab将数据保存到Excel表格中?

    我想将数据以表格形式保存在 Excel 工作表中 它应该看起来像 Name Age R no Gpa Adnan 24 18 3 55 Ahmad 22 12 3 44 Usman 23 22 3 00 每次当我执行我的文件时类数据 m 下
  • 查找并替换目录中所有 Excel 文件工作簿中的字符串

    我正在编写 VBA 代码来替换位于特定目录中的多个 Excel 文件 工作簿 中的特定字符串 我尝试在 Stack Overflow 上搜索 找到答案 但这与通过 Excel 中的宏替换文本文件中的字符串有关 相同的链接是查找并替换文件中的
  • OpenArgs 为空问题

    我正在使用OpenArgs使用时发送值的参数DoCmd OpenForm DoCmd OpenForm frmSetOther acNormal acFormAdd acDialog value 然后我用Me OpenArgs在打开的表格内
  • MS Access 执行 POST Web 请求

    在我的 MS Access 应用程序中 我需要定期向我的网络服务器发送一批信息 我不需要任何花哨的东西 比如 SOAP XML RPC 或任何东西 只需一个简单的 POST 页面请求就足够了 我用谷歌搜索了一下 但找不到任何真正有用的东西
  • 在 VBA 中循环合并单元格

    是否可以循环遍历合并的单元格vba questions tagged vba 我的范围内有 6 个合并单元格B4 B40 我只需要这 6 个单元格中的值 6 次迭代 上面的答案看起来已经让你排序了 如果您不知道合并的单元格在哪里 那么您可以
  • laravel中过滤后如何导出excel?

    我想仅导出视图刀片中过滤的数据 我正在使用 Laravel 7 和 maatwebsite excel 3 1 和 PHP 7 4 2 我浏览了文档并应用了这个 View a href class btn btn success i cla
  • Woocommerce,基于短代码的产品列表上的排序下拉列表

    在我们的商店里 我们有许多标准的 WP 页面 在这些页面上 我们使用标准 Woocommerce 短代码展示了约 40 种产品 例如 product category category boots per page 20 columns 4
  • MS Access - 粘贴确认事件后

    当用户将记录直接粘贴到数据表子报表中时 是否可以在显示粘贴确认消息后捕获事件 我需要它能够在审计表中创建新记录时进行记录 通过捕获更新前 更新后和插入事件 我可以轻松创建已添加的记录集合 准备将详细信息插入审核日志 但是在所有这些事件触发后
  • 我可以用文本框设置变量名称吗? excel

    我可以使用 TextBox Vba Excel 设置变量的名称吗 我必须以在文本框中写入组名称并单击命令按钮的方式输入新的产品组 代码必须从文本框中获取字符串 并将该字符串设置为新创建的数组的名称 我只想在运行时创建一个新变量 或数组 据信
  • Outlook 无法识别一个或多个姓名

    我有以下 vba 代码 它读取邮箱并向任何发送无效代码作为邮箱回复的用户发送回复 但有时会收到运行时错误 Outlook 无法识别一个或多个名称 我的问题是 创建新的 MAPI 配置文件是否可以解决该问题 或者我是否需要添加一个代码来解析地
  • 角度垫排序不适用于带点表示法的 matColumnDef

    我正在尝试按列对表进行排序 当我必须过滤另一个结果中的结果时 就会出现问题 我尝试通过括号表示法和点表示法访问该属性 但没有给出结果 还将最终节点放置在 matColumnDef 中 但失败 因为有 2 列同名 table table
  • VBScript:从 Scripting.Dictionary 中对项目进行排序

    我有下面的代码 它获取这样的数据 姓名 1 姓名 4 姓名 2 姓名 3 并像这样列出 是一个复选框 姓名 1 姓名 4 姓名 2 姓名 3
  • Pandas 0.22.0:IndexError:读取 xls 时列表索引超出范围

    我正在尝试将 282Mb 65536 行 x 138 列 xls 文件加载到 pandas 数据框中 import pandas as pd import os filename r invoicing xls dir os path di
  • 在 MS Word 中运行外部 vba 代码

    我可以将外部代码链接到 Word 文档吗 我有很多带有宏的 Word 文档 VBA 代码 全部使用相同的代码 我希望代码从外部源运行 而不是从所有这些文档中运行 这样 如果我必须更新代码 我只有一个地方需要更新 您可以创建一个模板并将其放入
  • 定义 js-xlsx 单元格范围

    我正在尝试使用 js xlsx 读取 Excel 值 我可以使用以下代码从工作簿工作表中获取单元格值 if typeof require undefined XLSX require xlsx var workbook XLSX readF
  • 将匹配的行复制到另一张纸中

    我有两张表 sheet1 和sheet 2 我正在查看工作表 1 的 T 列 如果工作表 2 中 T 包含 1 则粘贴完整行 该代码运行良好 但它将sheet2 中的结果粘贴到sheet1 的同一行中 这会导致行之间出现空白 任何人都可以建

随机推荐

  • 使用 TEmbeddedWB 或 TWebBrowser 检测外部内容

    我试图阻止由 TEmbeddedWB 或 TWebBrowser 或 TCppWebBrowser 加载的任何外部内容 我想阻止从互联网加载的任何内容 包括图像 javascript 外部 CSS 外部 embed 或 object 或 a
  • eclipse下同一个多模块maven项目的多个版本

    我想从事两个不同的版本 of the 相同的多模块 Maven 项目日食之下 不幸的是 当你在eclipse下导入多模块maven项目时 你可以改变父模块项目名称自己命名 以防止冲突 但是不是子模块项目名称 子模块作为根项目导入 以模块名称
  • 使用 GPS 获取 Android 手机的位置

    我还有一个关于基本 Android 编程的问题 如何访问 GPS 来获取运行应用程序的手机的当前位置 检索信息需要多长时间 在这种情况下 GPS 可能被禁用 如何再次启用 禁用它 必须在 andorid 清单中授予哪些权限 问候并感谢您的回
  • 移动结账时不存在 PayPal POST 付款变量

    我使用 JS 立即购买按钮进行付款 如下所示
  • Rails 中的订单确认页面

    我一直在尝试为我的 Rails 应用程序创建一个订单确认页面 但不太确定如何以一种轻松的方式完成它 上面有几个答案this https stackoverflow com questions 445293 ruby on rails con
  • 将静态库添加到 podspec

    我的 podspec 需要静态库 OpenSSL 为了方便起见 我将库与 Pod 一起运送 静态库包含 二进制文件 MyPod openssl bin libcrypto a and MyPod openssl bin libsll a 标
  • awk + ​​如何查找列中的重复项?

    如何查找列中的重复项 head countries lat long int code3 csv cat n 1 country latitude longitude name code 2 AD 42 546245 1 601554 An
  • Django transaction.commit_on_success 不回滚事务

    我正在尝试在 MySQL 上使用 Django 事务the commit on success装饰者 http docs djangoproject com en dev topics db transactions django db t
  • 创建反应应用程序不在开发或构建中加载CSS背景图像

    我无法加载某些背景图像 我对最初的创建反应应用程序进行了一些重大修改 我的文件夹结构现在如下 注意 我省略了一些文件和文件夹 如果您需要更多 请告诉我 App node modules src client build node modul
  • CSS/JavaScript:使元素成为最顶层的 z-index/最顶层的模态元素

    我想制作一个元素 例如 div 是页面的最顶层 我的假设是 我能做到这一点的唯一方法是指定该元素具有style z index 浏览器允许的最大值 int32 它是否正确 相反 是否有可能以某种方式获取元素的z index谁的最高 并使这个
  • Spring MVC Web 应用程序 - 从属性启用/禁用控制器

    我有一个在 Tomcat 中运行的 Web 应用程序 并使用 Spring MVC 来定义控制器和映射 我有以下课程 Controller api test public class TestController RequestMappin
  • 你如何处理NUL?

    当我们谈论 NULL 时 我有时会遇到与其他程序员的沟通问题 现在 NULL 可以是 空指针NUL 字符某种数据库中的空数据元素 NUL 似乎是最令人困惑的 它是 ASCII 字符 0x00 我倾向于在代码中使用 0 来表示它 我小组中的一
  • 如何获取 JavaScript 对象的类?

    我创建了一个 JavaScript 对象 但是如何确定该对象的类 我想要类似于Java的东西 getClass 方法 没有与 Java 完全对应的东西getClass http docs oracle com javase 7 docs a
  • 瞬态部分NameKeyPath & NSSortDescriptor NSFetchedResultsController

    我在核心数据中有一个任务列表 我使用 NSFetchedResultsController 将它们提取到 UITableView 中 我需要自定义订单中的自定义部分 OVERDUE ACTIVE ONGOING 推迟 完全的 为了确定任务应
  • Delphi:30 天试用

    如何为我的应用程序提供 30 天试用期 我需要允许用户仅使用应用程序 30 天 这几天怎么算 我将第一个和最后一个日期保存在注册表中 但如果更改系统时间 则不会有任何保护 我需要数一下这30天 您可能会想出一个需要互联网连接的系统 但如果没
  • 告诉 Iron Router 不要拦截链接

    我正在将相当大的应用程序迁移到 Iron Router 在客户端 所有未知路由都被重定向到 404 此外 有些路由是从服务器端管理的 例如 static 仅通过中间件显示静态页面 问题是 Iron Router 现在拦截所有链接点击 所以当
  • 通过 Azure AD Graph API 作为电子邮件别名发送电子邮件

    在 Graph API 浏览器中 您可以使用端点发送电子邮件 https graph microsoft com v1 0 me sendMail https graph microsoft com v1 0 me sendMail和一个基
  • 如何生成一定范围内的加密安全随机整数?

    我必须为生成密码的程序生成给定范围内的统一 安全的随机整数 现在我用这个 RNGCryptoServiceProvider rng new RNGCryptoServiceProvider byte rand new byte 4 rng
  • ASP.NET MVC GetFullHtmlFieldId 未返回有效 ID

    我已经看过了 但它对我没有帮助 GetFullHtmlFieldId 返回错误的 id 属性值 https stackoverflow com questions 15457883 getfullhtmlfieldid returning
  • Excel 中的排序保持风格?

    我得到了一个带有交替背景的 Excel 文件 以提高可读性 Row 1 White Background Row 2 Gray Background Row 3 White Backgrund 我使用 VBA 函数对 Excel 文件的内容