纯单单元格公式在Excel 365中工作;使用该版本,不需要特殊的数组计算条目、VBscripts 或帮助列:
程序
在 Excel 中制作下表:
-
添加列标题
-
选择标题,然后按插入功能区选项卡上的表格图标
-
将下面的公式 1 和 2 复制到相应的列中
Original | # | Reversed
---------+-----+-----------
| {1} | {2}
-
将要反转的字符串放在第一列。
细节和定制
“原创”栏目
(保存您要处理的分隔字符串值)
将您的源数据放在此列中(如示例图像所示)
'#'列
(计算分隔单元格中的项目数)
注意:(此列完全可选;它只是显示原始列中的项目数)
{1}
=LET(
existingDelimiter, ","
, originalValue, [@[Original]]
, SUM(
LEN(originalValue)
- LEN(
SUBSTITUTE(
originalValue
, existingDelimiter
, ""
)
)
)
+1
)
(注意:如果您的列表使用分隔符不是逗号,或者如果您的表格的第一列将有不同的名称,请使用为 公式#2如下。)
“反转”列
(颠倒列表中分隔项的顺序;可选择更改分隔符)
{2}
=LET(
existingDelimiter, ","
, newDelimiter, ","
, originalValue, [@[Original]]
, SUBSTITUTE(
ARRAYTOTEXT(
LET(
list,
IFERROR(
FILTERXML(
"<t><s>"
& SUBSTITUTE(
originalValue
,existingDelimiter
,"</s><s>"
)
& "</s></t>"
, "//s"
)
,""
)
,SORTBY(
list,
SEQUENCE(
ROWS(list)
,1
,ROWS(list)
,-1
)
)
)
,0
)
, ", "
, newDelimiter
)
)
-
根据需要通过更改 existingDelimiter、newDelimiter 和 originalValue 的值来调整您想要完成的公式。
A.要反转逗号分隔的字符串,请使用以下公式:
existingDelimiter, ","
, newDelimiter, ","
- 示例:
B.要反转 DNS 名称,请将 existingDelimiter 和 newDelimiter 定义中的逗号替换为句点:
existingDelimiter, "."
, newDelimiter, "."
- 这对于reverse DNS names(又名Java 类名/Universal Type Indicators (UTIs)/等)非常有用
- 示例:
-
将[@[Original]] 中的“Original”替换为您的第一列的名称(如果不同)。
A.如果仅使用单个单元格而不是表格列进行输入,请将 [@[Original]] 替换为对该单元格的引用(例如 B2):
, originalValue, B2
-
例子:
“反转”列公式说明:
- 通过手动转换成XML,我们可以使用FilterXML函数,将数据转换成数组。
- 将数据保存在 array 中允许使用 SortBy 函数。
-
SortBy 通过使用 Sequence 函数创建的帮助器 array 来反转 array。
- 最后,ArrayToText 函数将这个(现在是反向排序的)array 转换回适合单个电子表格单元格的文本字符串。
这使我们不需要循环、辅助列或 VBScript。
奖励栏
要从列表中提取特定术语,请在另一个表列中使用以下公式:
-
(将termNumber中的数字改成想要的值):
=LET(
existingDelimiter, ","
, originalValue, [@[Original]]
, termNumber, "[2]"
, IFERROR(
FILTERXML(
"<t><s>"
& SUBSTITUTE(
originalValue
, existingDelimiter
, "</s><s>"
)
& "</s></t>"
, "//s"
& termNumber
)
, ""
)
)
-
例子:
其他说明
需要:
-
Excel 365(至少适用于 FilterXML 和 Let 函数,以及 动态数组)(*)
- 它可能适用于其他版本,但我没有测试过。如果您发现其他或未来版本(例如 Excel 2022)可以使用此功能,请在 cmets 中注明。
不需要:
(*) 这可以在 没有 Let 函数的情况下完成,但是使用 Let 可以减少编辑/重新调整计算用途的机会用户错误。
注意:当 Lambda 函数发布时(希望在 2021 年晚些时候) 然后这一切都可以包含在一个命名的工作表函数中
奖励:要使用代码突出显示编辑更复杂的 Excel 公式(以及自动意图和折叠等其他功能),请尝试使用带有 Swift 编程的文本编辑器语言支持。例子:
-
VSCode editor (免费;跨平台)
-
Notepad++ (免费;仅限 Windows)
灵感来自(如果我忘记了某人,请道歉):