处理日期文本

时间:2017-01-11 05:40:04

标签: excel vba excel-vba

我的excel表格中有以下文字详细信息,我需要在VBA Code的帮助下从下面的文本中提取日期。我也无法使用类似MID的公式,因为日期&# 39; s是单个数字或双数字。请帮助我。

Debit_Coverage_Report_1_2_2016_11_8_34

Debit_Coverage_Report_10_11_2015_14_19_33

2 个答案:

答案 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列中的结果

enter image description here