如果Excel中有单元格引用,如何在Excel中对表进行排序?

Teo*_*tus 27 excel

我在表1中的Excel中有一个数据表,它引用了许多其他表中的各种不同单元格.当我尝试对工作表进行排序或过滤时,引用会在单元格移动时发生变化.但是,我不想手动进入每个单元格并在任何地方插入$符号,因为一些引用是连续的,我可能想稍后自动填充.

例如,我的一个数据列使用表2,B列23:28,表2,C列1:15和其他一些.使用表2的列B的列的部分在排序之前都在同一位置,每个其他部分也是如此.如果我插入$符号,我将无法再插入空行并使用自动填充来获取新数据.

总之,我想要一种方法来保持我的单元格引用静态而不使用$符号,但仅用于排序/过滤目的.我目前的解决方法涉及复制表的值,粘贴在空白表中,然后排序.我希望有更好的方法来做到这一点.

小智 19

我很确定这可以通过该indirect()功能解决.这是一个简化的电子表格:

            A         B                       C                         D    ...
       +------------------------------------------------------+- - - - - - - - -
     1 |CITY     |Q1-Q3 SALES|ANNUALIZED SALES:(Q1+Q2+Q3)*1.33|
       +======================================================+- - - - - - - - -
     2 |Tampa    | $23,453.00|                      $31,192.49|
       +------------------------------------------------------+
     3 |Chicago  | $33,251.00|                      $44,223.83|
       +------------------------------------------------------+
     4 |Portland | $14,423.00|                      $19,182.59|
       +------------------------------------------------------+
    ...|   ...   |    ...    |              ...               |
Run Code Online (Sandbox Code Playgroud)

通常,单元格C2中的公式将是=B2*1.33正常的,直到您进行复杂的排序.为了使其对排序很稳健,使用该单元格的行号构建您自己的单元格引用,如下所示: =indirect("B"&row())*1.33.

希望在你的情况下有效.它解决了我遇到的类似问题.

  • 如果您的公式引用了同一行,则此方法将起作用。如果您的公式引用其他行,则将不起作用。 (2认同)

小智 11

对我来说,这个工作如下 -

我在同一张表的公式中有工作表名称引用.当我从公式中删除当前工作表名称并对其进行排序时,工作正常.

  • 这对我来说非常有效。想知道为什么工作表名称会影响排序处理单元格引用的方式? (2认同)

Chr*_*ris 7

你有几个选择:

(1)当不使用静态引用时,在排序时无法使单元格引用混乱.处理此问题的最基本方法是在排序之前简单地复制和粘贴为值,这可以通过简单的VBA宏自动执行.

(2)如果你在公式中使用了许多公共范围,你也可以尝试使用命名范围.您可以将'Sheet2!B23:28'定义为'Range1'并在公式中引用'Range1'.在这种情况下,排序显然不会影响指定的范围,因为它在别处定义.

HTH


小智 7

即使使用绝对引用,sort也不能正确处理引用.相对引用指向与新行位置相同的相对偏移(这显然是错误的,因为其他行不在相同的相对位置)并且绝对引用不会更改(因为SORT省略了转换绝对引用的步骤在每次重新安排之后).执行此操作的唯一方法是逐个手动移动行(将引用转换为绝对).Excel然后进行必要的引用翻译.Excel SORT有缺陷,因为它没有这样做.