![MS Excel - 根据关键字分离文本](https://linux22.com/image/1608890/MS%20Excel%20-%20%E6%A0%B9%E6%8D%AE%E5%85%B3%E9%94%AE%E5%AD%97%E5%88%86%E7%A6%BB%E6%96%87%E6%9C%AC.png)
我需要根据关键字将文本分成不同的列。原始文本在一列中,但我想将预期的子文本分成不同的列。在这种情况下,问题是我在预期的关键字后得到了不同的字符。此外,正如您在下图中看到的,在文本列中,关键字没有排序。
这是上面的图片电子表格。
答案1
VBA 函数和辅助值的组合解决了您的问题:
怎么运行的:
复制并粘贴此 VBA 代码为米模块:
Function FindWord(Source As String, Position As Integer) Dim arr() As String arr = VBA.Split(Source, " ") xCount = UBound(arr) If xCount < 1 Or (Position - 1) > xCount Or Position < 0 Then FindWord = "" Else FindWord = arr(Position - 1) End If End Function
单元格中输入公式
R65
,然后填充。=IFERROR(LOOKUP(SEARCH(R$64,$Q65),{1,12,25,37},{1,2,3,4}),"")
編輯:
单元格中的替代公式
R65
:=IFERROR(LOOKUP(SEARCH(R$64,$Q65),SEARCH($R$64:$U$64,$Q$65)-2,{1,2,3,4}),"")
填写公式。
单元格中输入公式
R70
,并将其填充。=IFERROR(SUBSTITUTE(FindWord($Q65,R65),",",""),""
)
注意: 此公式适用于 Excel 用户。
編輯:
由于 OP 使用的是 Google Sheet 并且 VBA 宏不支持它,所以我想在单元格中建议一种替代公式R70
。
=IFERROR(SUBSTITUTE(TRIM(MID(SUBSTITUTE($Q65," ",REPT(" ",LEN($Q65))), (R65-1)*LEN($Q65)+1, LEN($Q65))),",",""),"")
根据需要调整公式中的单元格引用。