如何通过Excel VBA提取单列参考文献中的不同数量作者信息
Excel VBA 提取参考文献中的作者信息(单/双/多作者)
需求说明
通过Excel VBA从单列的参考文献列表中,提取单作者、双作者及更多作者的完整信息。
示例
参考文献示例
Walkenbach, J. (2010). Excel 2010 power programming with VBA (Vol. 6). John Wiley & Sons. Jackson, M., & Staunton, M. (2006). Advanced modelling in finance using Excel and VBA. John Wiley & Sons. Smith, A., Johnson, B., & Williams, C. (2018). Data analysis with Excel. McGraw-Hill.
提取结果示例
单作者输出:Walkenbach, J. 双作者输出:Jackson, M., & Staunton, M. 三作者输出:Smith, A., Johnson, B., & Williams, C.
实现思路
基于你提供的代码片段,核心逻辑如下:
- 用
Split(c, "(")拆分单元格内容,myarray(0)即为括号前的作者部分(需去除首尾空格)。 - 通过作者部分的逗号数量判断作者数量:
- 单作者:仅含1个逗号(匹配格式「姓, 名首字母.」)
- 双作者:含3个逗号(匹配格式「姓1, 名首字母1., & 姓2, 名首字母2.」)
- 三作者及以上:逗号数量≥5(每增加一位作者,多2个逗号)
- 直接提取整理后的作者部分,按需求输出或写入指定单元格。
完整VBA代码
Sub ExtractAuthors() Dim c As Range Dim myarray As Variant Dim authorPart As String Dim commaCount As Integer Dim outputCol As Integer ' 输出列号,B列=2、C列=3,可自行调整 outputCol = 2 ' 默认将结果写入B列 For Each c In Worksheets("Sheet1").Range("A1:A20").Cells If c.Value <> "" Then ' 跳过空单元格 myarray = Split(c.Value, "(") authorPart = Trim(myarray(0)) ' 提取作者部分并清除首尾空格 ' 统计作者部分的逗号数量 commaCount = Len(authorPart) - Len(Replace(authorPart, ",", "")) ' 判断作者数量并输出 Select Case commaCount Case 1 c.Offset(0, outputCol - 1).Value = "单作者输出:" & authorPart Case 3 c.Offset(0, outputCol - 1).Value = "双作者输出:" & authorPart Case Is >= 5 c.Offset(0, outputCol - 1).Value = "三作者及以上输出:" & authorPart End Select End If Next c End Sub
代码说明
outputCol:可修改为目标列号,调整结果输出位置。- 空单元格判断:避免处理无内容的单元格导致报错。
Trim(myarray(0)):清除作者部分首尾的多余空格,保证格式整洁。- 逗号数量判断:适配标准参考文献的作者格式,确保识别逻辑准确。
内容的提问来源于stack exchange,提问作者Ali Sarab
相关产品推荐
相关产品推荐

