在具有CONCAT 函数的更高版本的 Excel 中,您可以使用:
=CONCAT(LEFT(FILTERXML("<t><s>"&SUBSTITUTE(A1," ","</s><s>")&"</s></t>","//s")))
如果您不想只使用一个空格来缩写短语,您可以使用 IF 进行测试。
算法
- 从字符串中创建一个 XML,其中节点是每个空格分隔的子字符串
- 连接每个节点的第一个字母
上述公式适用于任意数量的单词。
如果您有早期版本的 Excel,没有上述公式所需的函数,您可以使用 VBA,也可以使用以下公式的变体:
seq_99 是一个命名公式,指的是:
=IF(ROW($A$1:INDEX($A:$A,255,1))=1,1,1*(ROW($A$1:INDEX($A:$A,255,1))-1)*99)
然后,主要公式:
=INDEX(LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),seq_99,99))),1,1) &
INDEX(LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),seq_99,99))),2,1) &
INDEX(LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),seq_99,99))),3,1) &
INDEX(LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),seq_99,99))),4,1) &
INDEX(LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),seq_99,99))),5,1) &
INDEX(LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),seq_99,99))),6,1) &
INDEX(LEFT(TRIM(MID(SUBSTITUTE(A1," ",REPT(" ",99)),seq_99,99))),7,1)
请注意,每行代表一个字母,您需要的行数与字符串中可能存在的单词一样多。 (你可以有更多的行,因为那些不匹配的只会在字符串中添加一个空字符串,这没什么)。