首页 > 解决方案 > 重新组织单个单元格的内容

问题描述

我对某些以 excel 无法识别的格式导入的日期有疑问,因此我正在寻找通过 vba 进行的简单修复。2018 年 12 月 31 日的格式。这似乎不是一种不寻常的格式,所以我尝试将文本转换为数字格式,但没有成功。我发现可行的唯一方法是将值切换为像 2018/12/31 这样的格式。

基本上我想重新组织单元格的内容,但我不确定如何去做(我想也许 Trim 函数可能是使用的那个):

Dim rngCell As Range
Dim Lastrow As Integer


With Workbooks("Untitled Analysis.xlsx").Sheets("Untitled Analysis")
Lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
Set rngTemp = .Range("J2:J" & Lastrow)

For Each rngCell In rngTemp

TRIM(MID(J176,SEARCH("/",J176)+1,250))&"/"&LEFT(J176,SEARCH("/",J176)-1)

但是,这将返回 12/2018/31

标签: excel

解决方案


如果您的数据总是用“/”分隔,那么实际使用 split 函数可能更方便。这只会替换单元格中的所有值。完全公开,我还没有测试过,这也将值更改为字符串而不是实际的日期格式

Dim rngCell As Range
Dim Lastrow As Integer


With Workbooks("Untitled Analysis.xlsx").Sheets("Untitled Analysis")
    Lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
    Set rngTemp = .Range("J2:J" & Lastrow)

    For Each rngCell In rngTemp
        rngCell.Value = Split(rngCell.Value,"/")(2) & "/" & Split(rngCell.Value,"/")(1) & "/" &Split(rngCell.Value,"/")(0)
    next rngCell
end With

编辑这应该将其转换为格式正确的日期值

Dim rngCell As Range
Dim Lastrow As Integer


With Workbooks("Untitled Analysis.xlsx").Sheets("Untitled Analysis")
    Lastrow = .Cells(Rows.Count, 1).End(xlUp).Row
    Set rngTemp = .Range("J2:J" & Lastrow)

    For Each rngCell In rngTemp
        rngCell.Value = DateSerial(Split(rngCell.Value,"/")(2),Split(rngCell.Value,"/")(1),Split(rngCell.Value,"/")(0))
        rngCell.NumberFormat = "yyyy-mm-dd;@"
    next rngCell
end With

推荐阅读