gpt4 book ai didi

vba - Excel-VBA : Find and Replace and Date Formatting from String

转载 作者:行者123 更新时间:2023-12-04 20:17:16 26 4
gpt4 key购买 nike

    ' Try to format the dates
Range("N:N").Select
Selection.NumberFormat = "dd/MM/yyyy"
Selection.Replace What:=" ", Replacement:="", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

使用此代码尝试解决一些我无法控制的下载数据的问题。表格在存储为文本的日期前有一个空格。例如“2013 年 4 月 11 日”

在 Excel 中进行手动查找和替换可解决此问题,但我希望在之后透视数据和分组,当我尝试使用 VBA 执行此操作时,它会做两件事......
  • 它不会将所有记录都识别为日期。即使单元格格式已更改,有些仍保持为常规。这意味着用户必须使用 F2+Enter 浏览每一行,然后大量使用数据透视表。
  • 它反转日/月。即原始数据是 2013 年 1 月 10 日(10 月 1 日),并将其转换为 1 月 10 日。

  • 是否有修复查找/替换或循环修复单元格格式的方法。

    最佳答案

    对于非 VBA 解决方案,您可以尝试 DATEVALUE在这种情况下发挥作用。

    DateValue

    用法类似于

     =DATEVALUE(Trim(A1))

    或者
     =DATEVALUE(RIGHT(A1, LEN(A1)-1)

    假设您的日期在单元格 A1 中

    对于 VBA 解决方案,类似
    Public Sub ConvertToDate()

    Dim endRow As Long
    Dim ws As Worksheet
    Dim dateColumn As Long
    Dim dateval As String
    Set ws = Sheet1

    'set date column (in this case we set column A)
    dateColumn = 1

    endRow = ws.Cells(ws.Rows.Count, dateColumn).End(xlUp).Row

    For i = 2 To endRow

    Dim length As Long

    length = Len(ws.Cells(i, dateColumn)) - 1

    'just a quick and dirty check to see if there is value data
    'it isn't set to check for numeric data, so if there is some dodgy
    'string data in the cell then it will fail on the CDate line.
    If length > 3 Then

    'store date string (may use Trim() or Mid() etc...)
    dateval = Right(ws.Cells(i, dateColumn).Value, length)

    'convert to date and change cell value
    ws.Cells(i, dateColumn).Value = CDate(dateval)

    End If


    Next i




    End Sub

    关于vba - Excel-VBA : Find and Replace and Date Formatting from String,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19772933/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com