在工作表中修复日期(搜索字符串)

时间:2013-05-10 13:49:37

标签: string excel vba date

我有两列值,例如:

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中,而在I中的年份)

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”是否为数字,如果是,我不知道如何从主字符串中删除它...如果你们可以帮助我......

1 个答案:

答案 0 :(得分:2)

IF 你不介意使用excel公式,你可以使用它,假设日期范围在单元格A1中,年份在单元格B1中:

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

这基本上找到-并使用它来获取日期和月份,如果找到,则停在_,并将其连接到年份。 *1是将字符串转换为数字,您只需将公式中的列格式化为yyyy/mm/dd