我的excel表格中有以下文字详细信息,我需要在VBA Code的帮助下从下面的文本中提取日期。我也无法使用类似MID的公式,因为日期&# 39; s是单个数字或双数字。请帮助我。
Debit_Coverage_Report_1_2_2016_11_8_34
Debit_Coverage_Report_10_11_2015_14_19_33
答案 0 :(得分:0)
最简单的方法是将文本转换为列 在电子表格中,选择列,转到DATA TAB,选择Text To Columns。
从那里,使用分隔符“_”而不是默认选项卡(选择其他)并完成
您将最终成为单独的列
Debit Coverage Report 1 2 2016 11 8 34
Debit Coverage Report 10 11 2015 14 19 33
从那里派对数据到你心中的内容。
答案 1 :(得分:0)
假设您的所有字符串都使用“Debit_Coverage_Report”前缀,“_ 1_2_2016”的日期顺序为Option Explicit
Sub ExtractDate()
Dim LastRow As Long, i As Long, ind As Long
Dim MyArr As Variant
Dim DateArr() As Date
' init Date array to a lrage size on init >> will optimize it's size later in the code
ReDim DateArr(0 To 1000)
ind = 0 ' <-- init DateArr array index
' modify "Sheet1" to your sheet's name
With Sheets("Sheet1")
' in my test all data is in column B, so looking for last row with value in column B
LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row
' loop through all cells in columns B
For i = 2 To LastRow
If .Range("B" & i).Value <> "" Then ' <-- check if the cell is not empty
MyArr = Split(.Range("B" & i).Value, "_") ' <-- split the string to array elements
DateArr(ind) = DateSerial(MyArr(5), MyArr(4), MyArr(3)) ' <-- inserting the array to DateArr array
' the line below is just to show you the results on column C (next to your original string)
.Range("C" & i).Value = DateArr(ind)
ind = ind + 1
End If
Next i
ReDim Preserve DateArr(0 To ind - 1) ' <-- resize array to number of array elements found in worksheet
End With
End Sub
(2016年2月1日),请尝试使用代码下面(VBA解决方案):
{{1}}
下面的屏幕截图显示了运行此代码后C列中的结果