You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Excel公式、正则、PowerShell、VBA提取单元格姓名

提取混杂HTML字符串中的姓名方案

Excel公式方案

适用于Excel 365/2021(支持动态数组)

用标签拆分+格式过滤的组合,精准提取符合格式的姓名:

=TEXTJOIN(", ",TRUE,FILTER(TEXTSPLIT(SUBSTITUTE(SUBSTITUTE(A1,"<","|"),">","|"),"|"),ISNUMBER(SEARCH("^[A-Z][a-z]+( [A-Z][a-z]+)*$",TEXTSPLIT(SUBSTITUTE(SUBSTITUTE(A1,"<","|"),">","|"),"|")))))

操作逻辑:先把HTML标签的<>替换为分隔符|,拆分字符串后,过滤出首字母大写、支持中间带空格的姓名格式内容,最后用逗号拼接结果。

适用于旧版Excel(无动态数组)

使用数组公式(输入后按Ctrl+Shift+Enter确认),最多提取2个姓名:

=SUBSTITUTE(TRIM(INDEX(MID(A1,SMALL(IF(ISNUMBER(SEARCH("^[A-Z]",MID(A1,ROW($1:$1000),1))),ROW($1:$1000),9999),ROW($1:$2)),LOOKUP(9999,SEARCH(" [a-z]",MID(A1,SMALL(IF(ISNUMBER(SEARCH("^[A-Z]",MID(A1,ROW($1:$1000),1))),ROW($1:$1000),9999),ROW($1:$2))+ROW($1:$100),1))-SMALL(IF(ISNUMBER(SEARCH("^[A-Z]",MID(A1,ROW($1:$1000),1))),ROW($1:$1000),9999),ROW($1:$2))+1)&", ")),", ",", ")

VBA方案

  1. 打开Excel按Alt+F11进入VBA编辑器,插入新模块
  2. 粘贴以下代码:
Function ExtractNames(rng As Range) As String
    Dim regEx As Object
    Dim matches As Object
    Dim match As Object
    Dim result As String
    
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Global = True
    ' 匹配规则:支持单姓单名、复姓/中间带空格的姓名(如Henri Le Bot)
    regEx.Pattern = "[A-Z][a-z]+(?: [A-Z][a-z]+)+"
    
    Set matches = regEx.Execute(rng.Value)
    For Each match In matches
        result = result & match.Value & ", "
    Next match
    
    ' 移除末尾多余的逗号和空格
    If Len(result) > 0 Then ExtractNames = Left(result, Len(result) - 2)
End Function
  1. 返回Excel,在目标单元格输入=ExtractNames(A1)即可提取A1单元格中的姓名

PowerShell处理CSV方案

修正正则匹配逻辑,批量处理CSV文件:

# 读取目标CSV文件,替换为你的文件路径
$csv = Import-Csv -Path "C:\input.csv"
# 定义匹配姓名的正则规则
$nameRegex = [regex]::new("[A-Z][a-z]+(?: [A-Z][a-z]+)+", [System.Text.RegularExpressions.RegexOptions]::Global)

foreach ($row in $csv) {
    # 提取当前行内容中的所有姓名
    $nameMatches = $nameRegex.Matches($row.Content)
    $extractedNames = $nameMatches.Value -join ", "
    # 添加新列存储提取结果
    $row | Add-Member -MemberType NoteProperty -Name "ExtractedNames" -Value $extractedNames -Force
}

# 导出处理后的CSV文件,替换为你的输出路径
$csv | Export-Csv -Path "C:\output.csv" -NoTypeInformation -Encoding UTF8

注意:将代码中的Content替换为CSV中存储HTML混杂字符串的列名

通用正则规则说明

所有方案使用的正则[A-Z][a-z]+(?: [A-Z][a-z]+)+:

  • [A-Z][a-z]+:匹配首字母大写、后续小写的单个单词
  • (?: [A-Z][a-z]+)+:匹配一个或多个「空格+首字母大写单词」的组合,支持复姓或中间带空格的姓名格式

内容的提问来源于stack exchange,提问作者SamAllium

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.06 07:34:56