1
512357301 2023-06-03 13:49:41 +08:00 via Android
用 Ctrl shift enter 组合键试试呢,输入完公式按组合键,看下会不会生效。没开电脑,盲猜的
|
2
crashdada 2023-06-03 14:58:19 +08:00 1
=CONCAT(FILTER(CHAR(34) & A1:A3 & "," & CHAR(34),A1:A3<>"",""))
试试这样行不行 |
3
snw 2023-06-03 15:50:03 +08:00 1
简单的做法,直接用&连接就行:
=TEXTJOIN(",",1,CHAR(34)&FILTER 结果&CHAR(34)) 如果你对数组有执念,你可以用 MAP+LAMBDA 来显式实现“对数组中每个元素应用同一个操作并返回仍然是一个数组”的操作,虽然在这个例子中没必要: =TEXTJOIN(",",1,MAP(FILTER 结果,LAMBDA(x,CHAR(34)&x&CHAR(34)))) 然后解释一下 CONCATENATE 和 CONCAT 的区别: * CONCATENATE 起初的设计是每个参数只接受单个值,虽然后来可以接受区域引用,但这只是配合 CSE (ctrl+shift+enter)数组的操作,行为是对引用区域中每个(组)值遍历执行 CONCATENATE 操作; Excel 引入动态数组之后 CONCATENATE 继续沿用 CSE 数组的行为。 * CONCAT 起初的设计就接受动态数组,如果参数接受了动态数组,则先把动态数组展开为一系列单个值,最后再把所有参数展开的所有值串起来。 |
4
whitefable OP @crashdada 这个写法我明白了,其实就是将 CHAR(34)连接的运算放在 FILTER 的输出参数中先进行运算再输出。这样的确可以,其实这里也暗含了 & 这个操作符就是我想寻找的替代 CONCATENATE 运算结果的方法。不过后面 3 楼给出的答案算是完全解释比较明白,而且方案是一致的。这里还是非常感谢
|
5
whitefable OP @snw 的确,而且 & 操作符也就是我想寻求的东西。因为 CONCANTENATE 已被官方标记过时,所以我觉得应该还是有方法可以达到同样目的但我不清楚;至于使用 CONCANTENATE 可以我也猜测到我只是刚好利用了一个可能设计原意并不是这样使用的特性,毕竟替代版的 CONCAT 的行为并非如此。
数组方面其实倒是没执念,只是好奇对于一个过时函数实现的功能,按兼容性为王的微软应该是有一般方法可以做到的,但找不到就还是很好奇如何做才能是符合设计理念来使用。在这里例子中固然是没必要使用 MAP+LAMBDA 来显示实现数组的操作,但还是很开心了解到了这种方法,后续使用说不定会使用上。 关于这两个函数的解释真的非常感谢可以一下子命中我所好奇了解的地方,看完我也的确更明白了。本身也是写程序的我对这个非常好奇,但又的确工作中使用较少导致对 Excel 了解甚少,只是抱着好奇之心来寻求一下答案,能够得到一个从原理上解释的答案真的非常满足。 再次感谢~ |