【问题标题】:When I use a macro to sort, all references become #REF当我使用宏进行排序时,所有引用都变为#REF
【发布时间】:2018-12-28 02:46:51
【问题描述】:

我构建了一个宏,它会在我每次触发它时自动为我排序大部分单元格。不幸的是,当我运行这个宏时,我的许多引用都从原来的(即 $B$7)更改为 #REF!。我想知道我的宏脚本是否有问题,或者是否还有其他我应该研究的问题。代码如下:

Sub Sort()
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range(_
        "Q8:Q1000000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=_
        xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("Q8:W1000000")
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

【问题讨论】:

  • 第 7 行不受此脚本的影响,无论是在概念上还是在执行中
  • 我看不出代码有什么明显的错误……我猜它与内容有关。您能否分享一些涉及的值/公式,甚至附上演示该问题的电子表格的缩略版本?
  • 这个SO Sort Question 可以帮助你。
  • 我了解到,如果公式中使用了工作表的名称,如果要对结果进行排序,则应将其删除。
  • 在对大多数公式进行排序之前,遵循 =IF(ISBLANK(M11),NA(),M11) 的格式,在它们说 IF(ISBLANK(#REF!),NA(),# 之后参考!)。

标签: excel vba sorting excel-formula excel-2010


【解决方案1】:

我找到了解决方案。这并不理想,尽管它有效。我将所有引用都更改为绝对引用,现在当我对它们进行排序时,它们不再成为奇怪的空引用 #REF!。鉴于有 700 万个公式需要编辑,我使用了一个我找到的宏 here 来加快这个过程。 mikerickson 提供的宏。

如果有人知道比必须更改所有引用更好的另一种解决方案,请随时为可能有相同问题的其他人留下答案,尽管我不再需要有关此问题的任何指导。

谢谢

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-21
    • 1970-01-01
    • 2022-08-02
    • 1970-01-01
    相关资源
    最近更新 更多