我正在尝试使用vba获取大字符串的第二部分(用空格分隔)。我的脚本运行正常,直到它碰到一个空白单元格。当任何单元格不包含任何内容时,它会抛出错误Subscript out of range
。如何以这种方式修改我的脚本,以便它首先检查是否有任何单元格为空。如果它找到任何空白单元格,那么它会跳过它并查找下一个单元格直到最后一行?
这是我到目前为止所尝试过的。它可以顺利运行,直到遇到空白单元格。
Sub splitting_items()
Dim lrow As Long, cel As Range
Dim i As Long, item_list As Variant
lrow = Range("A" & Rows.Count).End(xlUp).Row
For Each cel In Range("A1:A" & lrow)
item_list = Split(cel, " ")
i = UBound(item_list)
Debug.Print item_list(i - 1)
Next cel
End Sub
应用于以下字符串。前导数字是行号,3和4为空白。
1 BEBEE TABERNACLE CHURCH CME
2 OCHOA VICTORIANO RLT
3
4
5 MIDCON TEXAS PIPELINE CORP
6 STD DALLAS ST STE
答案 0 :(得分:2)
尝试测试值:
Sub splitting_items()
Dim lrow As Long, cel As Range
Dim i As Long, item_list As Variant
lrow = Range("A" & Rows.Count).End(xlUp).Row
For Each cel In Range("A1:A" & lrow)
If InStr(1, cel.Value, " ") <> 0 Then
item_list = Split(cel, " ")
i = UBound(item_list)
Debug.Print item_list(i - 1)
End If
Next cel
End Sub
答案 1 :(得分:0)
最后,我找到了一个解决方法。如果我尝试如下,它可以处理空白行并始终将解析后的值放在适当的位置,我的意思是在相应的字符串旁边。
Sub splitting_items()
Dim cel As Range, i As Long, item_list As Variant
For Each cel In Sheet1.UsedRange.Columns(1).SpecialCells(xlCellTypeConstants)
item_list = Split(cel, " ")
i = UBound(item_list)
cel(1, 2) = item_list(i - 1)
Next cel
End Sub