首页 > 解决方案 > 基于Excel公式的VBA提取中间名

问题描述

我正在使用 Excel 公式来提取学生的中间名。

下面的公式提供了正确的输出。当我尝试使用 VBA 获得相同的输出时,它显示错误

无法获取搜索属性

=IF(LEN(I3)-LEN(SUBSTITUTE(I3,"-",""))=2,MID(I3, SEARCH("-",I3) + 1, SEARCH("-",I3,SEARCH("-",I3)+1) - SEARCH("-",I3) - 1),MID(I3,FIND("-",I3)+1,99))

'I' 列中的名称 - Gupta-Sarika-Ashok,我使用上面的公式得到输出为 'Sarika'。使用 VBA 时并非如此

ws.Range("J2").Formula = WorksheetFunction.If(Len(I3) - len(WorksheetFunction.Substitute(I3, "-", "")) = 2, Mid(I3, WorksheetFunction.Search("-", I3) + 1, WorksheetFunction.Search("-", I3, WorksheetFunction.Search("-", I3) + 1) - WorksheetFunction.Search("-", I3) - 1), VBA.Mid(I3, WorksheetFunction.Find("-", I3) + 1, 99))

标签: excelvba

解决方案


尝试这个:

ws.Range("J2").Formula = "=IF(LEN(I3)-LEN(SUBSTITUTE(I3,""-"",""""))=2,MID(I3, SEARCH(""-"",I3) + 1, SEARCH(""-"",I3,SEARCH(""-"",I3)+1) - SEARCH(""-"",I3) - 1),MID(I3,FIND(""-"",I3)+1,99))"

推荐阅读