我在表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.
希望在你的情况下有效.它解决了我遇到的类似问题.
小智 11
对我来说,这个工作如下 -
我在同一张表的公式中有工作表名称引用.当我从公式中删除当前工作表名称并对其进行排序时,工作正常.
你有几个选择:
(1)当不使用静态引用时,在排序时无法使单元格引用混乱.处理此问题的最基本方法是在排序之前简单地复制和粘贴为值,这可以通过简单的VBA宏自动执行.
(2)如果你在公式中使用了许多公共范围,你也可以尝试使用命名范围.您可以将'Sheet2!B23:28'定义为'Range1'并在公式中引用'Range1'.在这种情况下,排序显然不会影响指定的范围,因为它在别处定义.
HTH
小智 7
即使使用绝对引用,sort也不能正确处理引用.相对引用指向与新行位置相同的相对偏移(这显然是错误的,因为其他行不在相同的相对位置)并且绝对引用不会更改(因为SORT省略了转换绝对引用的步骤在每次重新安排之后).执行此操作的唯一方法是逐个手动移动行(将引用转换为绝对).Excel然后进行必要的引用翻译.Excel SORT有缺陷,因为它没有这样做.