人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルで「3.5.1.」と日付を入力されたデータがあります(最初の数字は平成).最後のピリオドは有るデータと無いデータが混ざっています.これを「1991/5/1」とエクセルの日付の書式にあった形に変換し直す方法を教えてください.データが大量にあるので一括で変換できる方法を希望します.

●質問者: doingo
●カテゴリ:コンピュータ
✍キーワード:エクセル データ ピリオド 入力 希望
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kenji-lli
●50ポイント

Aが日付の入ってるセルの列だとします。

まず、下記の式で文字列の最後に引っ付いているドットを取ります。

「=IF(RIGHT(A1,1)=".",MID(A1,1,LEN(A1)-1),A1)」

式1は、

もし、文字列の最後が、ドット「.」ならば、文字数(LEN関数)ー1をした文字数を、MIDで頭から抜き出す、それ以外は、そのまま出力してよって式です。

一番右側の列などに式を入力、フィルハンドルで一斉にコピー

出てきたデータを、列ごとコピー

「別のシート」に貼り付ける。

そのシートで、編集ー置き換えを実行

ドット「.」 → スラッシュ「/」にすべて置き換え

置き換え後のデータは、エクセルが自動的に日付データとしてシリアル値に置き換えているはずです。

これを元のデータに貼り付けで、完了。

別のシートで置き換えを実行しないと、同一シート内の別の列のデータまで勝手に置き換えてしまうので注意が必要です。

また、

エクセルのデフォルトの設定や、OS側の設定などで、

日付のデフォルト表示が異なる場合があります。

「2007/01/01」のような西暦表示にする場合、

列を選択、右クリック、「セルの書式設定」-「日付」を選ぶといろいろ書式設定がでてきますので、それで書式を一括で変換できます。

ほんの2?3分で作業終了するかと思います。

あと何かの拍子で貼り付け先のデータと貼り付けるデータの順番が狂うと面倒なことになるので、バックアップとってから実行してみてください。

ちなみにエクセルは2003でテストしました。

◎質問者からの返答

なるほど.ありがとうございます.やってみます.


2 ● nandedarou
●50ポイント

例とえば、セルA1に「3.5.1」、セルA2に「4.3.2.」…というように、

A列の上から順に、ご質問の形式で日付が入力されている場合。

(1)セルB1に以下のように入力しして下さい。

=DATEVALUE("H"&SUBSTITUTE(A1,".","",3))

(2)セルB1を右クリック→セル書式設定→表示形式タブ→分類:日付 種別:1997/3/4 と設定して下さい。

(3)セルB1を必要なだけ下のセルにコピーして下さい。

いかがでしょうか?

◎質問者からの返答

なるほど・・.ありがとうございます.やってみます.


3 ● SALINGER
●100ポイント ベストアンサー

マクロ作ってみました

データが入力されたセルを選択して以下を実行

Sub Macro1()
 Dim myRange As Range
 Dim st As String
 
 Selection.NumberFormatLocal = "yyyy/m/d"
 For Each myRange In Selection
 If myRange <> "" Then
 st = "H" & myRange.Value
 Mid(st, InStr(1, st, "."), 1) = "/"
 Mid(st, InStr(1, st, "."), 1) = "/"
 If Right(st, 1) = "." Then st = Left(st, Len(st) - 1)
 myRange = DateValue(st)
 End If
 Next myRange
End Sub

条件に合わないセルを選択しているとエラーになりますので注意。

空白ははずしてますが、エラートラップで対処しないのは変換しないセルを間違って選択した場合セルの内容を変えてしまうかもしれないので。

◎質問者からの返答

一発で解決しました.ありがとうございました.これがベストの回答でした.

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ