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

質問です。

コピー前のデータ
2011/5/4 15:05

コピー後のデータ
5/4/2011 15:05

上記のように日付がが逆になってしますのはなぜでしょうか

よろしくおねがいします。

●質問者: inosisi
●カテゴリ:コンピュータ インターネット
✍キーワード:コピー データ
○ 状態 :終了
└ 回答数 : 5/5件

▽最新の回答へ

1 ● SALINGER
●20ポイント

英語表記だからです。


こちらに変換方法を含め書いてますのでどうぞ。

http://blog2world.at.webry.info/200801/article_9.html

◎質問者からの返答

ありがとうございます

E列とF列が文字形式の日付が表示されている

5/4/2011 15:05

のを

マクロを使って

2011/5/4 15:05

の日付形式にできますか。

フォルダーの中にあるファイルをマクロを使って一括変更する方法

を教えてください。

よろしくお願いします。


2 ● papavolvol
●10ポイント

前者は入力ロケールが日本。後者は入力ロケールが USAなどになっています。

例えばエクセルならば、セルの書式から「日付」を選択して、入力ロケールを変更してください。

◎質問者からの返答

ありがとうございます。

日付のセルにあてて右クリックしてセルの書式から「日付」を選択して

種類を2001/3/14

ロケール 日本語(日本)

カレンダーの種類 西暦

に変更しても直りません。

列は文字列になっています。

手打ちで日付を入力すると正常に入力します

コピーして貼り付けたときに文字列に変わったみたいです。

なぜでしょうか

一部ファイルは正常にコピーされています


3 ● mezase50
●10ポイント

コンパネの「地域と言語」の最初のタブにあるフォーマットで日本を選べば年月日の表示に変わります。

個別に表示形式を変えることもできます。


http://support.microsoft.com/kb/307938/ja

◎質問者からの返答

ありがとうございます。

日本を選んでいます。


4 ● きゃづみぃ
●50ポイント ベストアンサー

次のマクロで変換できますでしょうか?

Sub main()
Dim p As String
'対象フォルダを指定してください。
'このフォルダに この実行用のブックは 入れないでください。

p = "C:\test\"

'処理対象となる拡張子を指定して 呼び出します。
Call jikkou(p, "csv")

End Sub


Sub jikkou(p As String, s As String)

Dim bk_name As Workbook
Application.DisplayAlerts = False
 
f = Dir(p & "*." & s, vbNormal)

Do While f <> ""
 Set w = Workbooks.Open(Filename:=p & f, UpdateLinks:=False, ReadOnly:=False)
  '処理対象は 1番目のシートのみ。
 
 With w.Sheets(1)
 
 kg = 2  '開始する行
 
 ck = "E"  'チェックする列
 
 For b = kg To .Cells(kg, ck).End(xlDown).Row
 g = .Cells(b, ck)
 If Len(g) > 7 Then
 If Mid(g, 2, 1) = "/" Then
  '2文字目が / で 4文字目が / の場合、5文字目からの4文字を先頭にする
 If Mid(g, 4, 1) = "/" Then
 g = Mid(g, 5, 4) & "/" & Left(g, 3) & Right(g, Len(g) - 8)
 Else
  '2文字目が / で 5文字目が / の場合、6文字目からの4文字を先頭にする
 If Mid(g, 5, 1) = "/" Then
 g = Mid(g, 6, 4) & "/" & Left(g, 4) & Right(g, Len(g) - 9)
 End If
 End If
 Else
 If Mid(g, 3, 1) = "/" Then
  '3文字目が / で 5文字目が / の場合、6文字目からの4文字を先頭にする
 If Mid(g, 5, 1) = "/" Then
 g = Mid(g, 6, 4) & "/" & Left(g, 4) & Right(g, Len(g) - 9)
 Else
  '3文字目が / で 6文字目が / の場合、7文字目からの4文字を先頭にする
 If Mid(g, 6, 1) = "/" Then
 g = Mid(g, 7, 4) & "/" & Left(g, 5) & Right(g, Len(g) - 10)
 End If
 End If
 
 
 End If
 End If
 
 .Cells(b, ck) = g
 
 End If
 
 Next b


 ck = "F"  'チェックする列
 
 For b = kg To .Cells(kg, ck).End(xlDown).Row
 g = .Cells(b, ck)
 If Len(g) > 7 Then
 If Mid(g, 2, 1) = "/" Then
  '2文字目が / で 4文字目が / の場合、5文字目からの4文字を先頭にする
 If Mid(g, 4, 1) = "/" Then
 g = Mid(g, 5, 4) & "/" & Left(g, 3) & Right(g, Len(g) - 8)
 Else
  '2文字目が / で 5文字目が / の場合、6文字目からの4文字を先頭にする
 If Mid(g, 5, 1) = "/" Then
 g = Mid(g, 6, 4) & "/" & Left(g, 4) & Right(g, Len(g) - 9)
 End If
 End If
 Else
 If Mid(g, 3, 1) = "/" Then
  '3文字目が / で 5文字目が / の場合、6文字目からの4文字を先頭にする
 If Mid(g, 5, 1) = "/" Then
 g = Mid(g, 6, 4) & "/" & Left(g, 4) & Right(g, Len(g) - 9)
 Else
  '3文字目が / で 6文字目が / の場合、7文字目からの4文字を先頭にする
 If Mid(g, 6, 1) = "/" Then
 g = Mid(g, 7, 4) & "/" & Left(g, 5) & Right(g, Len(g) - 10)
 End If
 End If
 
 
 End If
 End If
 
 .Cells(b, ck) = g
 
 End If
 
 Next b

 End With
 
 w.Save
 w.Close
 
 f = Dir
Loop

Application.DisplayAlerts = True

End Sub

◎質問者からの返答

ありがとうございます。

変換しないですね。

変換させたいデータCSVをc:¥testのなかにいれて実行しました

E列 F列

5/12/2011 14:585/12/2011 14:58

5/12/2011 15:405/12/2011 15:40

5/12/2011 15:405/12/2011 15:40


5 ● adlib
●10ポイント

岡目八目 ? 行や列によって設定が混在する可能性あり ?

コピー前の設定を、そのまま貼付け(P)か、コピー先の形式を選択

して貼付け(S)る場合では、結果が異なります。

セルの書式設定が混在していれば、つぎの方法でチェックできます。

カーソルの位置は「全体・行・列・セル」の四通りあります。

存在しない日付「2011/02/29」が打てれば、文字列です。

(いったん文字列にすると、演算不能となり、マクロ変換できません)

セルの書式設定;分類(C)→日付/文字列/ユーザ定義

http://www.eurus.dti.ne.jp/~yoneyama/Excel/hiduke.htm

── Excel(エクセル)基本講座:日付の表示形式

◎質問者からの返答

ありがとうございます。

参考にさせていただきます。

関連質問


●質問をもっと探す●



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