【问题标题】:Excel - Remove Middle Name and replace with first letterExcel - 删除中间名并替换为第一个字母
【发布时间】:2016-09-18 14:01:53
【问题描述】:

我有许多包含多张学生数据的 Excel 工作簿。

学生姓名格式为:Mr. Abcd Efgh Ijkl

其中: Abcd :名字; Efgh:中间名; Ijkl : 姓

我希望能够运行宏。我是 Excel 的季节性用户。但是在一些论坛上阅读让我想到了宏。

宏应该可以把名字转换成:Mr. Abcd E. Ijkl

在哪里: Abcd : 名字 E. :中间名,除第一个字母之外的所有字母;中间名的长度不同。 Ijkl : 姓

请阐明这一点。或者任何参考问题/答案也可以。

【问题讨论】:

  • 是否可以假设没有后缀,例如 Sr/Jr/III 等,并且每个部分都是一个单词?例如,没有 Van der Wiel 或 de Mornay 这样的姓氏,或者像 George Herbert Walker Bush 这样有多个中间名的人?
  • 是的@HerbWolfe 会很好

标签: excel macros


【解决方案1】:

这里我们假设中间名是全名的倒数第二个部分。

Public Function FixName(sIN As String) As String
    Dim st As String

    ary = Split(sIN, " ")
    st = ary(UBound(ary) - 1)
    ary(UBound(ary) - 1) = Left(st, 1) & "."
    FixName = Join(ary, " ")
End Function

编辑#1:

用户定义函数 (UDF) 非常易于安装和使用:

  1. ALT-F11 调出 VBE 窗口
  2. ALT-I ALT-M 打开一个新模块
  3. 粘贴内容并关闭 VBE 窗口

如果您保存工作簿,UDF 将与它一起保存。 如果您使用的是 2003 年以后的 Excel 版本,则必须保存 文件为 .xlsm 而不是 .xlsx

要删除 UDF:

  1. 如上所示打开 VBE 窗口
  2. 清除代码
  3. 关闭 VBE 窗口

要使用 Excel 中的 UDF:

=myfunction(A1)

要了解有关宏的更多信息,请参阅:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

有关 UDF 的详细信息,请参阅:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

必须启用宏才能正常工作!

【讨论】:

  • @user3152887 查看我的编辑#1...尤其是关于如何以及在何处安装 UDF()
  • 每个人都有中间名吗?
  • @WillBeDeleted 这就是海报所指出的。
猜你喜欢
  • 1970-01-01
  • 2017-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 2016-04-23
  • 2015-12-29
  • 2020-01-16
  • 1970-01-01
相关资源
最近更新 更多