-PR-
ytr13or

はじめて質問させて頂きます。
VBA初心者ですが、宜しくお願いします。

CSVデータをエクセルにコピペしてから処理することを考えています。
CSVのデータはエクセルで開くと以下の様に入力されています。

    |      A列      |  B列 |  C列 |
1行目|   日付 時刻    |データ1|データ2|
2行目|2014/5/14 13:00:01|  ○  |  △  |
3行目|2014/5/14 13:00:14|  ○  |  △  |

時刻は24h制で入力されています。
A列の日付と時刻の間にはスペースがあり、これをVBAでスペース区切りをしたいのです。
B列に列を追加し、スペース区切りの処理をしようと思い、自動記録すると以下のようになりました。

Sub Macro1()
    Columns("B:B").Select
    Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove
    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
     TextQualifier:=xlNone, ConsecutiveDelimiter:=True, Tab:=True, Semicolon _
     :=False, Comma:=False, Space:=True, Other:=False, FieldInfo:=Array( _
     Array(1, 5), Array(2, 1)), TrailingMinusNumbers:=True
End Sub

ところが、このマクロを実行すると「コピーまたは移動先のセルの内容を置き換えますか?」のメッセージが表示されます。(記録する際には表示されませんでした。)
原因を探ったところ、自動記録のマクロを実行すると時刻が12時間制に変更されB列に、
C列にAM/PMが書き込まれます。(A列の日付は問題なく処理されます。)

B列に24時間制の時刻が書き込まれるようにしたいのですが、
何か不足してるとことがあるのでしょうか?

方法を教えて下さい。
お手数ですが、宜しくお願いします。
  • 回答数1
  • 気になる数0

Aみんなの回答(全1件)

質問者が選んだベストアンサー

  • 2014-05-14 21:46:22
  • 回答No.1
こんばんは!
データ → 「区切り位置」の方法でなく、
A列のシリアル値そのものを利用する方法です。
B列に日付・C列に時刻データを表示させるとします。

Sub Sample1()
Dim lastRow As Long
lastRow = Cells(Rows.Count, "A").End(xlUp).Row
With Range(Cells(2, "B"), Cells(lastRow, "B"))
.Formula = "=INT(A2)"
.Value = .Value
.NumberFormatLocal = "yyyy/m/d"
End With
With Range(Cells(2, "C"), Cells(lastRow, "C"))
.Formula = "=MOD(A2,1)"
.Value = .Value
.NumberFormatLocal = "h:mm:ss"
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
お礼コメント
なるほど!
やりたいことができました。

ありがとうございましたm(_ _)m
投稿日時 - 2014-05-15 12:02:28
  • 同意数0(0-0)
  • ありがとう数0
-PR-
-PR-
  • 回答数1
  • 気になる数0
  • ありがとう数0
  • ありがとう
  • なるほど、役に立ったなど
    感じた思いを「ありがとう」で
    伝えてください

関連するQ&A

-PR-
-PR-

その他の関連するQ&Aをキーワードで探す

別のキーワードで再検索する

あなたの悩みをみんなに解決してもらいましょう

  • 質問する
  • 知りたいこと、悩んでいることを
    投稿してみましょう
-PR-
-PR-
-PR-

特集


士業をはじめとする専門家が回答するQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ