0

日付形式への変更に問題があります。異なる日付を含むセルがありますが、すべてが日付としてフォーマットされているわけではありません。そのうちの 1 つは「yy-mm-dd」、たとえば「13-04-08」ですが、General としてフォーマットされています。私はこのコードを使用しています:

xCell = Format(xCell, "yyyy-mm-dd")

問題は、「13」または「08」が「yyyy」であるかどうかをExcelが判断できないため、何も変更されないことです。これを解決するにはどうすればよいですか?日付を変更する前に、どの数字が年であるかをExcelに伝える必要がありますか?どうすればよいですか? Format メソッドに含めることはできますか?

編集: 問題は別の場所にあるように見えるので、全体を説明する必要があると思います。日付を含むセルは、最初から次のように表示され、一般としてフォーマットされています。

13-05-06 A
13-05-21 A
...

次のコードで不要な「A」を削除します。

Sub rensa()

Dim Found As Range

For Each xCell In Range("D2:D999")
    If IsEmpty(xCell.Value) Then Exit For
        Set Found = xCell.Find(What:="A", LookIn:=xlValues, LookAt:=xlPart)
            If Found Is Nothing Then
            Else
                xCell.Value = Left(xCell.Value, Len(xCell.Value) - 1)
            End If
    Next xCell

End Sub

これらのコードを試して、セル形式を日付に設定しました:

Range("D2:D999").NumberFormat = "yyyy-mm-dd"
Range("D2:D999").NumberFormat = "m/d/yyyy"

また、次のように For ループでそれらを実装しようとしました。

Sub rensa()

Dim Found As Range

For Each xCell In Range("D2:D999")
If IsEmpty(xCell.Value) Then Exit For
    Set Found = xCell.Find(What:="A", LookIn:=xlValues, LookAt:=xlPart)
        If Found Is Nothing Then
            xCell.NumberFormat = "yyyy-mm-dd"
        Else
            xCell.Value = Left(xCell.Value, Len(xCell.Value) - 1)
            xCell.NumberFormat = "yyyy-mm-dd"
        End If
Next xCell

End Sub

しかし、それも思い通りにはいきませんでした。結果はすべて次のようになりますが、一般としてフォーマットされています。

13-05-06
13-05-21
...

したがって、A はなくなりましたが、それ以外は何も変わりません。

4

2 に答える 2

1

私はあなたのコードに何かを追加しました。以下のコメント付きの行を参照してください

Sub rensa()

Dim Found As Range
Dim xcell As Range
Dim date_val As Date

For Each xcell In Range("D1:D999")
    If IsEmpty(xcell.Value) Then Exit For
        Set Found = xcell.Find(What:="A", LookIn:=xlValues, LookAt:=xlPart)
            If Found Is Nothing Then
            Else
                xcell.Value = Left(xcell.Value, Len(xcell.Value) - 1)
                date_val = xcell.Value 'asign the value to date variable carrier
                xcell.Value = date_val 'return it to the cell
            End If
Next xcell

Range("D1:D999").NumberFormat = "yyyy-mm-dd" 'do the formatting

End Sub

これがうまくいくことを願っています。

于 2013-10-01T06:55:30.133 に答える