在工作表中确定date(searchstring)

我有两列值如:

5 - 11 octubre 2011 5 - 11 octubre 2011 5 - 11 octubre 2011 12 - 18 diciembre 2011 30 noviembre - 6 diciembre 2012 30 noviembre - 6 diciembre 2012 18 - 24 septiembre_2012 2012 18 - 24 septiembre_2012 2012 22 - 28 abril_2013 2013 22 - 28 abril_2013 2013 

我想拿走最后一天,把它放在一个列,如:

 2011/10/11 2011/10/11 2011/10/11 2011/12/18 2011/12/06 2011/12/06 2012/09/24 2012/09/24 2013/04/28 2013/04/28 

但我找不到办法。 有人能帮我吗?

现在我有这个:(乱七八糟的date是在D年和我在一年)

 Sub Data() With ActiveSheet LASTROW = .Cells(.Rows.Count, "A").End(xlUp).Row End With For b = LASTROW To 1 Step -1 Cells(b, 4) = Application.Clean(Application.Trim(Cells(b, 4))) Next For i = 1 To LASTROW Valor = Right(Range("D2").Offset(i, 0).Value, 12) Numero = Right(Range("D2").Offset(i, 0).Value, 4) If InStr(1, Valor, "enero") > 0 Then Range("E2").Offset(i, 0).Value = "Enero" End If If InStr(1, Valor, "febrero") > 0 Then Range("E2").Offset(i, 0).Value = "Febrero" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "marzo") > 0 Then Range("E2").Offset(i, 0).Value = "Marzo" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "abril") > 0 Then Range("E2").Offset(i, 0).Value = "Abril" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "mayo") > 0 Then Range("E2").Offset(i, 0).Value = "Mayo" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "junio") > 0 Then Range("E2").Offset(i, 0).Value = "Junio" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "julio") > 0 Then Range("E2").Offset(i, 0).Value = "Julio" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "agosto") > 0 Then Range("E2").Offset(i, 0).Value = "Agosto" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "septiembre") > 0 Then Range("E2").Offset(i, 0).Value = "Septiembre" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "octubre") > 0 Then Range("E2").Offset(i, 0).Value = "Octubre" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "noviembre") > 0 Then Range("E2").Offset(i, 0).Value = "Noviembre" End If If InStr(1, ActiveSheet.Range("D2").Offset(i, 0).Value, "diciembre") > 0 Then Range("E2").Offset(i, 0).Value = "Diciembre" End If Next i End Sub 

我正在考虑检查“Numero”是否是一个数字,如果是,我不知道如何从主string中删除它…如果你们可以帮我…

如果您不介意使用Excel公式,则可以使用此方法,假定date范围位于单元格A1中,单元格B1中的年份为:

 =(MID(A1,FIND("-",A1)+2,IFERROR(FIND("_",A1)-FIND("-",A1)-2,30))&" "&B1)*1 

这基本上find-并使用它来获取date和月份,如果find一个,停在_ ,并将其连接到年份。 *1是将string转换为数字,并且只需将公式为yyyy/mm/dd的列格式化即可。