[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『文字列を日付化』(こっこ)
はじめましてエクセル初心者です。ここ4日いろんなサイトやページを探していましたが見つからなかったので質問させてください。
J列に日付がどばっと入っています。所々空欄もあります。(文字列で20180101のように8桁で)これを連続作業でdate化したいのですがループがいまいち理解できず構文を組めずにいます。
日付の開始行は4行目からでデータは1000以上あるかもしれません。ご助力お願いいたします。
< 使用 Excel:unknown、使用 OS:Windows7 >
(マナ) 2018/08/02(木) 18:40
Dim i As Long
Dim s As String
For i = 4 To ActiveSheet.UsedRange.Rows.Count + ActiveSheet.UsedRange.Row - 1
s = Cells(i, "J").Value
If s Like "########" Then
Cells(i, "K").Value = DateSerial(Left(s, 4), Mid(s, 5, 2), Right(s, 2))
End If
Next
End Sub
またはK4に
=DATEVALUE(LEFT(J4,4)&"/"&MID(J4,5,2)&"/"&RIGHT(J4,2))
と入れてコピー
(名無し) 2018/08/02(木) 18:48
Sub Macro例()
Dim i As Long, oug As String
With ThisWorkbook.Sheets("Sheet1")
For i = 4 To .Range("J4").End(xlDown).Row
oug = .Cells(i, "J").Value
If Len(oug) = 8 Then
.Cells(i, "J") = Format(DateSerial(Left(oug, 4), Mid(oug, 5, 2), Right(oug, 2)), "YYYY/M/D")
End If
Next i
End With
End Sub
(TAKA) 2018/08/02(木) 18:49
基本的には旨く書けていますよ。
これがネックなんですか? ↓ >所々空欄もあります
なら、下から最終行を探ってください。
>For i = 1 To Range("J4").End(xlDown).Row
↓ ↓
For i = 4 To Range("J50000").End(xlUp).Row
(半平太) 2018/08/02(木) 18:55
Range("A1").AutoFilter Field:=1, _Criteria1:=">=" & m,_
Criteria2:="<=”n,_
Operator:=xlAnd
(こっこ) 2018/08/02(木) 18:57
Dim i As Long, oug As String
With ThisWorkbook.Sheets("Sheet1")
For i = 4 To .Range("J4").End(xlDown).Row
oug = .Cells(i, "J").Value
If Len(oug) = 8 Then
.Cells(i, "J") = Format(DateSerial(Left(oug, 4), Mid(oug, 5, 2), Right(oug, 2)), "YYYY/MM/DD")
End If
Next i
End With
Dim m, n As Date
m = Application.InputBox(prompt:="開始年月日は?(yyyy/mm/dd) ", Type:=1)
n = Application.InputBox(prompt:="最終年月日は?(yyyy/mm/dd) ", Type:=1)
Range("A1").AutoFilter Field:=1, _Criteria1:=">=" & m,_
Criteria2:="<=”n,_
Operator:=xlAnd
End Sub
(こっこ) 2018/08/02(木) 19:02
駄目です。半平太さんの回答を参考にするとよいです。
'------
>Range("A1").AutoFilter Field:=1, _Criteria1:=">=" & m,_
これも駄目です。
オートフィルタのデータ範囲を明確に指定してください。
面倒ならJ3:J5000でもよいです。
'------
>それは区切り位置でdate判定になるということでしょうか?
J列を選んで、「区切り位置」実行してみてください。
https://www.becoolusers.com/excel/8-digit-number.html
マクロでも1行コードですが、手作業でも30秒も掛かりません。
ところで、日付に変換する作業は
1回実行するだけでよいのでは?
オートフィルタ実行のたびに必要なのですか。
オートフィルタも開始日と終了日の入力させるなら
手作業でも手間変わらないのでは?
(マナ) 2018/08/02(木) 20:57
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.