2013-05-10 42 views
1

我有值,如兩列:定價日(搜索字符串)

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 

但我找不到辦法。有人能幫助我嗎?

現在我有這樣的:(那些一團糟日期是在我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 

我想檢查一下「NÚMERO」是一個數字,如果是這樣,我不噸知道如何從主串中刪除它...如果你們可以幫我...

+0

excel公式適合你嗎? – Jerry 2013-05-10 14:32:33

回答

2

IF你不介意使用excel公式,你可以使用這個,假設日期範圍是在單元格A1和單元格B1中的年份:

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

這基本上找到-並使用它獲取日期和月份,如果它找到一個,則停止在_,並將其連接到年份。 *1是將字符串轉換爲數字,並且只需格式化公式爲yyyy/mm/dd的列。

+0

+1 to @jerry。優雅的答案! – 2013-05-10 15:37:48