gpt4 book ai didi

excel - 排序列表但保留单个单元格的格式

转载 作者:行者123 更新时间:2023-12-04 22:16:11 25 4
gpt4 key购买 nike

我正在尝试按字母顺序对单元格列表进行排序。每个单元格都有不同的预设格式,我不想失去这个帖子排序。我希望宏注册每个单元格预排序的格式,然后在排序后重新应用它。
在这个特定的示例中,我有一些带有删除线字体的单元格,但发现很难找到一种方法让 Excel“记住”这种预排序。
关于这个主题有很多问题,没有一个真正通过 VBA 解决了这个问题。一些建议单独设置每个单元格的条件格式,而另一些则覆盖预设格式。我已经尝试过这种“旧格式叠加”方法(见下文),但需要找到一种方法来内存每个单元格特定的格式......
你有什么想法?
最新尝试(旧格式叠加):

Dim StrikeThrough As Variant
Dim i, j As Long

ReDim StrikeThrough(1 To Y.Worksheets("Test").Range("FormattedCells").Rows.Count, 1 To
Y.Worksheets("Test").Range("FormattedCells").Columns.Count)
For j = 1 To UBound(StrikeThrough, 2)
For i = 1 To UBound(StrikeThrough, 1)
StrikeThrough(i, j) = Y.Worksheets("Test").Range("FormattedCells").Cells(i, j).Font.StrikeThrough
Next
Next


最佳答案

谢谢 用于解释您的最终目标(“对值进行排序,但将格式保留在原处”),这样我们就可以避免 XY Problem 的陷阱.
而不是使用 Range.Sort 对单元格进行排序, 对值进行排序,方法是将它们转换为 Array,对 Array 进行排序,然后将 Array 放回 Range。这样,单元格格式将保持原样。

如果你有 Office365,那就更简单了;随着 SORT 的推出将函数导入 Excel(可通过 WorksheetFunction.Sort 在 VBA 中访问),您可以在 1 行中完成所有 3 个步骤:

Dim Target As Range
Set Target = Sheet1.Range("A2:C12")

Target.Value = WorksheetFunction.Sort(Target.Value, 1, 1) '1st Column, Ascending
'For 1st Column, Descending, use (Target.Value, 1, -1)
'For 2nd Column, Ascending, use (Target.Value, 2, 1)
如果您使用的是旧版本的 Excel,那么您将需要编写自己的函数来对数组进行排序(例如冒泡排序?),并使用它来代替 WorksheetFunction.Sort

关于excel - 排序列表但保留单个单元格的格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68879658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com