转换' mm / dd到dd / mm / yyyy

时间:2015-06-08 11:17:39

标签: excel vba date

我在excel中有一整列1000多个条目,其日期键入为&01; 01/02,' 01/03,' 01/04 ..代表1月2日,1月3日,1月04日等等,因为此人试图保持mm / dd格式,同时保存列宽。

这有点麻烦,因为条目都是字符串而不是日期,我现在需要输入年数才能获得dd / mm / yyyy。

有没有人知道如何做到这一点(当然除了手动更改1000多个条目中的每一个?)

另外,如果你能分享我怎样才能显示dd / mm,同时在excel的条目中保留dd / mm / yyyy,我将不胜感激?

非常感谢你看这个。

4 个答案:

答案 0 :(得分:0)

在第1栏中,我们说你有dd / mm。在下一列中,标记DD和每个单元格中的

=DAY(A2)

其中a2是目标细胞。在标有MM的下一列中执行相同操作。创建另一个标记为YYYY的列并放置所需的年份。然后最后一列标记为mm / dd / yyyy并将此公式

=CONCATENATE(D2&"/"&C2&"/"&B2)

长期努力,但会得到你想要的东西。

答案 1 :(得分:0)

由于日期由格式为mm / dd的字符串表示,因此您需要先操作字符串以获取日期格式:

您可以使用以下内容:

 <% List<Termin> lista = new ListaTerminow().getTerminy(); %> 

(将单元格替换为您要更改的单元格的地址(

完成此操作后显示dd / mm: 选择要格式化的单元格: 右键单击/格式化单元格/自定义 并输入输入框dd / mm

希望这有帮助。

答案 2 :(得分:0)

所以我终于修复了它,这个代码的魅力就成了伎俩!想与你们分享!

Sub Date_Conversion()
For i = 1 To 393

m = Mid(Cells(i, 1), 1, 2)
D = Right(Cells(i, 1), 2)

Cells(i, 5).NumberFormat = "mm/dd;@"
Cells(i, 5) = DateSerial(2015, m, D)

Next

End Sub

答案 3 :(得分:0)

虽然393行不是过多的数据,但您应该发现批量处理比循环遍历行和处理每个单元要快得多。

Sub Date_Conversion()
    With ActiveSheet
        With .Columns(1)
            .TextToColumns Destination:=.Offset(0, 4), DataType:=xlFixedWidth, FieldInfo:=Array(0, 3)
            .Offset(0, 4).NumberFormat = "mm/dd;;;[red]@"
        End With
    End With
End Sub

由于没有为任何单元格提供年份,因此默认为当前年份。任何未处理的文本值都将以红色字体格式化并左对齐。

如果您只想替换A列中的现有数据,请将.Offset(0, 4)替换为.Cells(1)