Excel VBA Split拆分字符串后拼接返回#VALUE!错误问题求助
错误原因
- VBA的
Split()函数生成的数组默认从0开始编号,传入字符串"Aku Kamu Dia"时,拆分结果对应关系为:SplitText(0)="Aku"、SplitText(1)="Kamu"、SplitText(2)="Dia",数组最大下标为2。 - 原代码中
CountText = UBound(SplitText()) + 1计算结果为3,循环For j = 1 To CountText会执行到j=3,此时访问不存在的SplitText(3)会触发下标越界,直接导致函数返回#VALUE!错误。 - 原逻辑还存在拼接后末尾多出冗余空格的问题。
修正后代码
Function FindData(lookup_value As String, tbl_array As Range) As String Dim Text As String, SplitText() As String Dim j As Integer, CountText As Integer SplitText = Split(lookup_value) CountText = UBound(SplitText()) ' 从下标1开始遍历,跳过首个单词 For j = 1 To CountText Text = Text & SplitText(j) & " " Next j ' 去除首尾多余空格后返回结果 FindData = Trim(Text) End Function
效果验证
在工作表中调用=FindData(A2,C2),当A2单元格值为"Aku Kamu Dia"时,函数会正确返回预期结果Kamu Dia;如果传入的字符串仅包含1个单词,函数会返回空值,不会触发报错。
内容的提问来源于stack exchange,提问作者M. Rizqi Hasan Al Banna
相关产品推荐
相关产品推荐

