Excel 拆分一个字符串,但在所有分割中考虑1个分隔符

Excel 拆分一个字符串,但在所有分割中考虑1个分隔符,excel,vba,Excel,Vba,我有一个output_文件,看起来像0001_1234_du du_defg__2018.08.24-14.50.23.TIF 我正在尝试拆分此文件值,并从立即可用行开始,将拆分后的值粘贴到C:H列中的表中 我使用下面的代码来实现这一点 tbl.Range(LastRow, "C").Offset(1).Value = Split(output_file, "_")(0) tbl.Range(LastRow, "D").Offset(1).Value = Split(output_file,

我有一个
output_文件
,看起来像
0001_1234_du du_defg__2018.08.24-14.50.23.TIF

我正在尝试拆分此文件值,并从立即可用行开始,将拆分后的值粘贴到C:H列中的表中

我使用下面的代码来实现这一点

 tbl.Range(LastRow, "C").Offset(1).Value = Split(output_file, "_")(0)
 tbl.Range(LastRow, "D").Offset(1).Value = Split(output_file, "_")(1)
 tbl.Range(LastRow, "E").Offset(1).Value = Split(output_file, "_")(2)
 tbl.Range(LastRow, "F").Offset(1).Value = Split(output_file, "_")(3)
 tbl.Range(LastRow, "G").Offset(1).Value = Split(output_file, "_")(4)
 tbl.Range(LastRow, "H").Offset(1).Value = Split(output_file, "_")(5)
但有时我的
output_文件
在一个字段中有两个下划线,例如
0001_1234_du du defg__2018.08.24-14.50.23.TIF
。在这种情况下,上述代码将失败。如何处理这种情况

提前感谢。:)

试试看

tbl.Range(LastRow, "C").resize(1, 6).Offset(1, 0) = _
  split(replace(output_file, "__", "_"), "_")
我希望这有帮助

Sub test()

Dim a() As String

a = Split(replace("123_456_789","__","_"), "_")

Range("h1").Resize(1, UBound(a) + 1).Value = a

End Sub

它应该在双下划线上拆分一次,还是零次?你想用单打代替双打吗?(即,)如果需要保留双下划线,请将其替换为临时字符,如
|
,然后进行拆分,然后再次替换以切换回所需。我的意思是,无论双下划线位于何处,代码都应该能够识别双下划线并将其视为1。:)我个人认为这是一个更好的解决方案。尽管它们实际上是相同的,但使用
UBound
将允许范围自动调整大小,而不是使用静态值和有可能被截断的值