[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『010409を2001/4/9に列全部(日付各セル異)置換法』(ふらいと)
開始日から終了日までの2列の日付の日数計算をしたいのですが、元データが010409のようになっています。このままだと関数DATEDIFでは日数計算してくれないみたいで、2001/4/9のように変換したいのですが、方法を御存知ありませんでしょうか。
やっぱりたくさんあるんですよね、手では修整したくないくらい?
マクロを作って置換するのがいいかもしれません。
じゃあマクロを作ってくださいと言われると...(汗)。
(ramrun)
Sub macro()
Dim n As Integer
Dim x, y, z As Variant
n = 0
Do While (1)
x = ActiveCell.Value
If x = Empty Then Exit Do
For n = 1 To 5 Step 2
y = sample(x, n)
If y = False Then Exit For
If n = 1 Then
If y > 50 Then
z = "19" & y & "/"
Else
z = "20" & y & "/"
End If
ElseIf n = 3 Then
z = z & y & "/"
Else
z = z & y
End If
Next n
ActiveCell.Value = z
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Function sample(ByVal x As String, ByVal n As String) As Variant
If Len(x) > 6 Then
sample = False
Exit Function
End If
sample = Mid(x, n, 2)
End Function
マクロ作ってみました。
使い方は〜 の前に、置換したいファイルをコピーして複製を1個作ってください。
失敗すると大変なので(汗)。
その複製のファイルを使ってマクロをやってみましょう。
やり方は、まず↑のマクロ(プログラム)をコピーしてください。
複製のファイルを開いて、ツール>マクロ>Visual Basic Editor
その画面のメニューの挿入>標準モジュール とすると、
ウインドウが開きましたね?
そこにさっきコピーしたマクロを貼り付けてください。
そうしたらエクセルのシートに戻ってもらって、日付列の一番上の日付が入ったセルを
選択してください。
そのあとメニューからツール>マクロ>マクロ>macro を選んで実行ボタンです。
(ramrun)
ramrunさん久しぶりです、また手伝ってください。
少し厄介ですが、関数でもできます。
例えばセルA1に『010409』が入っているとき
=datevalue("20" & MID(A1,1,2) & "/" & MID(A1,3,2) & "/" & MID(A1,5,2))
で、日付に変換できます。
ただし年月日がそれぞれきちんと2桁であることが必要です。
(kazu)
ramrunさん、感謝感激です。本当にありがとうございました!kazuさんありがとうございました!超急ぎで、6万件あったのでテンパリまくりで、あがいた末、お二人から御回答をいただく前に私もやり方を発見しました。ramrunさんには大変お手数をおかけしたので自分のやり方をここに書くことを迷ったのですが、今後同じような内容でお困りの方のお役に立てればと考えて以下に書きます。
[データ]の[区切り位置]という項目を使って、[スペースによって----固定長]を選び[次へ]いき、列のデータ形式を[日付]にして[完了]で、できました。(ふらいと)
お〜 本当ですね。
こんな方法があるなんて驚きです。
区切らなくていいんですね。
勉強になります。
(ramrun)
↑のマクロもちょっと修整しときます。
kazuさんへ お元気そう?でなによりです。
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.