|
まず、
数式をセットするのに、セル一つ一つセットする必要はありません。
範囲に対して一気に数式セットできます。
Columns("G:G").Insert Shift:=xlToRight
With Range("H1", Cells(Rows.Count, "H").End(xlUp)).Offset(, -1)
.FormulaR1C1 = "=DATE(LEFT(RC[1],2)+1988,MID(RC[1],3,2),RIGHT(RC[1],2))"
.Value = .Value
'値のコピペの方が良ければ、
'.Copy
'.PasteSpecial xlPasteValues
End With
Columns("H:H").Delete Shift:=xlToLeft
ただ、作業列の挿入・削除がうっとうしいので、別案として、
最終的に数式を残さないのであれば、次のような関数を用意してしまっては如何でしょう。
(コード簡素化の為、再帰を利用してます。)
Function 西暦へ変換(ByVal arg As Variant) As Variant
Dim v As Variant
Dim i As Long, j As Long
If TypeOf arg Is Range Then arg = arg.Value
If IsArray(arg) Then
ReDim v(1 To UBound(arg, 1), 1 To UBound(arg, 2))
For i = 1 To UBound(arg, 1)
For j = 1 To UBound(arg, 2)
v(i, j) = 西暦へ変換(arg(i, j))
Next
Next
Else
v = DateSerial(Left$(arg, 2) + 1988, Mid$(arg, 3, 2), Right$(arg, 2))
End If
西暦へ変換 = v
End Function
Sub 使用例()
With Range("G1", Range("G" & Rows.Count).End(xlUp))
.Value = 西暦へ変換(.Value)
End With
End Sub
|
|