如何在Excel中将含NCT的字符串提取至对应行的新列?
从Excel列提取含NCT的字符串到新列的实现方法
方法一:Excel公式(适合普通用户)
假设你的数据在A列,要在B列生成提取结果,直接在B1单元格输入以下公式:=TEXTJOIN("; ",TRUE,IF(ISNUMBER(SEARCH("NCT",TRIM(MID(SUBSTITUTE(A1,";",REPT(" ",LEN(A1))),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,";",""))+1))*LEN(A1)-LEN(A1)+1,LEN(A1)))),TRIM(MID(SUBSTITUTE(A1,";",REPT(" ",LEN(A1))),ROW(INDIRECT("1:"&LEN(A1)-LEN(SUBSTITUTE(A1,";",""))+1))*LEN(A1)-LEN(A1)+1,LEN(A1))),""))
- 旧版Excel输入完成后,需按 Ctrl+Shift+Enter 触发数组公式;新版Excel直接回车即可生效
- 逻辑说明:先把分号替换为空格拆分每段内容,逐个检查片段是否包含NCT,最后把符合条件的内容用分号拼接输出
方法二:Power Query(处理大量数据更高效)
- 选中「Trial identifier」数据列,点击顶部菜单栏「数据」→「从表格/区域」,将数据加载到Power Query编辑器
- 切换到「添加列」选项卡,点击「自定义列」,在编辑框中输入:
=Text.Combine(List.Select(Text.Split([Trial identifier], ";"), each Text.Contains(_, "NCT")), "; ") - 点击「确定」后,再点击「关闭并上载」,提取好的NCT编号会自动生成在新的表格列中
方法三:VBA宏(适合批量自动化操作)
- 按 Alt+F11 打开VBA编辑器,右键点击左侧工作表名称,选择「插入」→「模块」
- 在模块中粘贴以下代码:
Sub ExtractNCT() Dim ws As Worksheet Dim lastRow As Long Dim i As Long Dim arr As Variant Dim result As String Set ws = ActiveSheet lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row For i = 1 To lastRow arr = Split(ws.Cells(i, "A").Value, ";") result = "" For Each item In arr If InStr(Trim(item), "NCT") > 0 Then If result <> "" Then result = result & "; " result = result & Trim(item) End If Next item ws.Cells(i, "B").Value = result Next i End Sub
- 返回Excel界面,按 Alt+F8,选中「ExtractNCT」宏并点击「执行」,B列会自动填充提取出的所有NCT编号
内容的提问来源于stack exchange,提问作者Biswajit Podder
相关产品推荐
相关产品推荐

