简而言之
谁能解释为什么我在许多 Excel 电子表格的许多公式中看到“@”符号出现在以前没有的地方?
它们不是@提及,也不是结构化引用或表格公式使用的一部分,也不是任何其他常见的嫌疑人。
TL;博士详情
(注:系统信息在本文末尾)
正如我所说,它们不是@提及,我没有使用结构化引用。另外,我不是也从来不是 Lotus 用户,所以我不会像那些人有时似乎很难做到的那样将 @ 符号放入公式中。事实上,除了作为 TEST() 的偶尔格式代码的一部分之外,我想不出任何时候我曾在公式中使用过 @,这也不是这里发生的事情。
例子
这是一个例子(随机抓取)。这个:
=IFS(DX$33="","",ISNUMBER(匹配(DX$33,$AJ$33:$DR$33,0)),HLOOKUP(DX$33,$AJ$33:$DR$1033,ROWS(DX$33:DX36 )+1,0),真,0)
现在看起来像这样:
=@IFS(DX$33="","",ISNUMBER(匹配(DX$33,$AJ$33:$DR$33,0)),HLOOKUP(DX$33,$AJ$33:$DR$1033,@ROWS(DX$33 :DX36)+1,0),真,0)
正如我所说,这只是一个随机的例子。还有更多,其中很多没有像 IFS() 那样“异国情调”的东西,所以我认为这不是原因。
仅仅是展示效果?
现在在上面我说“看起来像”,因为我猜神秘的@可能实际上并不在文件本身中,而只是由 Excel 显示。我这么说是因为我至少有一个文件,我可以从它的 DropBox 版本历史中看到只有一个版本——我的(@-free)原始版本。所以它开始时没有 @ 符号,并且它没有改变(根据 DropBox 版本),但我现在可以看到 @ 符号。一种解释是更改的是 Excel,而不是我的文件,因此更改只是显示工件。哦,删除@ 似乎对公式没有影响。
@是一个真实的东西
另一方面,为了咧嘴笑,我尝试创建一个全新的公式:
=@A1
当我尝试输入时,Excel 警告我“某些旧版本的 Excel 不支持此公式”并建议我将其替换为以下变体:
=A1
因此,@ 的这种使用似乎是一件实际的事情,而且并不总是存在。(这显然适用于在行引用中与 [] 结合使用,但这不是它的本质(是吗!?))
无论如何,在回答 Excel 询问我是否要让它删除 @ 时,我将谨慎抛诸脑后,我点击了“管好你自己的事!” (又名“不”)。Excel 必须插入我原来的 @-ified 版本,据我所知,它很好,并且表现得与 Excel 试图说服我改用的 @-free 版本完全一样。
所以?
谁能解释这一切?最近的 Excel 更新是否引入了新的 @ 语法?最近,我的意思是在过去的 2-3 个月内最多。我有我在 12 月中下旬创建的文件,我知道当时是 @-free 的,现在已经变成了 @-ified。但如果是这样,那么为什么 Excel 只是在不问我的情况下随意更改文件,特别是考虑到它自己承认可能会产生向后兼容性问题的事实?为什么我有一个 Excel 文件,由于它只有一个版本,我知道它是未更改的,但由于这些 @ 符号的到来似乎已更改?
我一直在寻找线索一个多小时,但我找不到任何确定的线索。一个困难是“@”是一个如此广泛使用的字符,以至于谷歌抛出的很多东西都是无关紧要的谷壳。
系统信息
- Excel for Mac,版本 16.34 (20020900),Office 365 的一部分
- macOS Catalina 10.5.3
谢谢。
恭喜您获得了新的动态公式。
@
告诉动态数组公式只返回一个值,基本上就像公式的旧数组版本一样。新的动态数组公式希望
SPILL
自动获取这些值。例如将随机值放入
A1:A15
然后在B1放:
正常进入。Excel 将“溢出”这些值。
现在添加
@
到公式的前面B1
。公式将不再溢出。但就像旧样式一样,可以
B1:B15
使用公式选择并按 Ctrl-Shift-Enter 而不是 Enter,@
它将像以前一样填充范围。至于自动更改,如果没有新功能,它将无法正常工作。
但是看看新的动态数组函数,它们会让很多事情变得更容易。但是在共享时必须考虑任何新的向后兼容性。
当公式(特别是我的公式)引用它自己的行而不引用其他行时,为什么它会溢出值?此外,只有当我尝试将公式转换为 INDIRECT() 时,它才会这样做:
之前:=IFERROR("[WORKBOOK.xlsm]"&LEFT(MID(@CELL("filename",A1),FIND("]",@CELL("filename",A1))+1,255),FIND(", ",MID(@CELL("filename",A1),FIND("]",@CELL("filename",A1))+1,255),1)-1),"名称中没有逗号。")
...效果很好
之后:=@INDIRECT(IFERROR("[WORKBOOK.xlsm]"&LEFT(MID(@CELL("filename",A1),FIND("]",@CELL("filename",A1))+1,255),FIND (",",MID(@CELL("filename",A1),FIND("]",@CELL("filename",A1))+1,255),1)-1),"名称中没有逗号。" ))
...这不起作用但返回一个#REF!错误