excel - Excel 2010 VBA:如何将一行粘贴到一系列行并保持逐行条件格式
问题描述
Excel 2010:
这个问题特别涉及使用PasteSpecial with Conditional Formatting。
概述: 我有一个模板行存储在不同的工作表中。这一行包含大约 350 列和多种格式、公式和条件格式。
数据从 SQL Server 加载并包含 N 行 - 通常在 400 到 15000 之间。
做法:
我复制模板行并插入需要数字行:
AryVariant = rst_ADODB.GetRows
lRecordCount = UBound(AryVariant, 2) + 1
Templates.Range("TEMPLATE_ROW").Copy
sheet1.Range(sheet1.Range("Range_Start").Offset(1, 0), sheet1.Range("Range_Start").Offset(lRecordCount, 0)).EntireRow.Insert Shift:=xlDown
从这样的另一张表复制到一个范围内会使公式和条件格式变得一团糟,但可以很好地复制单元格格式,所以我然后返回该范围以更新公式和条件格式:
Templates.Range("TEMPLATE_ROW").Copy
sheet1.Range(sheet1.Range("Range_Start").Offset(1, 0), sheet1.Range("Range_Start").Offset(lRecordCount, 0)).EntireRow.PasteSpecial xlPasteFormats
问题:
虽然这适用于公式,但它会在“应用于”部分中合并条件格式的行,同时将公式留在引用范围内顶行的规则中。示例(不确定如何显示这部分,因为我无法上传图片):
公式: “=$FB18”
格式: 这里有一些格式
适用于: “=$D$18:$M$11436,$O$18:$AC$11436”
期望的结果:
我想要的是每一行都是独立的,所以:
公式: “=$FB18”
格式: 这里有一些格式
适用于: “=$D$18:$M$18,$O$18:$AC$18”
公式: “=$FB19”
格式: 这里有一些格式
适用于: “=$D$19:$M$19,$O$19:$AC$19”
解决方法:
目前我正在逐行应用 PasteSpecial 作为解决方法:
For r = 0 To UBound(AryVariant, 2)
Templates.Range("TEMPLATE_ROW").Copy
sheet1.Range("sheet1_Dataset").Offset(r + 1, 0).EntireRow.PasteSpecial xlPasteFormats
Next r
虽然这可行,但对于大型数据集,它的速度非常慢。
最后,问题:
有没有办法在将格式应用于整个范围时获得所需的结果?
解决方案
推荐阅读
- javascript - this.props 没有传递函数
- python - 在 Mac 上的 shell 中导入模块
- python - 使用 python requests 模块登录沃尔玛帐户返回错误
- bluetooth-lowenergy - 适用于 Windows 10 企业版 LTSB(或 LTSC)的 Windows 10 创意者更新
- hibernate - 为什么 Hibernate 提供 @Embeddable 和 @Embedded
- excel - Excel Shell() Args 到/来自 Calc.exe
- oracle - expdp where 子句错误
- css - Chrome DevTools 中禁用了样式化组件样式
- excel - 使用 VBA 创建具有给定开始日期和周数的日期值的动态表
- python - Python:查找二维图像直方图的外峰